【STM32】STM32duinoでADS122U04 UART接続<Serial1しか使えない>

STM32duinoでのシリアル接続ですが、これが意外と手間取りました。
結論;STM32duinoだと、Serial1しかつかませんでした。Arduinoの基本ピン配置と同様になっているようです、
STM32L432KCは、2個のUARTを使える仕様なので、STm32duinoだと1個しか使えないという制限があります。

●STM32duinoは、方言がたくさんあって、仕様がバラバラのようで、ドキュメントもしっかりしてません。
ですので、STM32のフル性能を本格的に使いたい方は,CUBE-IDEなどSTマイクロで提供されている正規IDEを
使うことをお勧めします。私の場合、時間が無いのとサブCPUで大した仕事をさせないCPUなので、ArduinoIDEで気軽に作りたいという目的で採用しました。来年以降で、CUBE-IDEを使えるようになりたいです。

●シリアルの宣言
使えるピンは、RX=D0(PA_10),TX=D1(PA_9)としましたが、
UART2のピンRX=A2(PA_3),TX=A7(PA_2)も使えます。
ピンアサイン表は、データシートが2300ページもあって、とても探す気にはなりません。
STマイクロという会社は、エンドユーザー相手でなく、ビジネス顧客専門の体制の会社らしく
個人の電子工作用途は眼中にない感じですので、Arduinoユーザーは、増えないと思います。

#include “HardwareSerial.h”
HardwareSerial Serial1(D0,D1);
void setup(){
  Serial1.begin(115200);//UART1をSerial1として宣言
  Serial.begin(115200);//L432KCのUSBシリアル宣言

初めてのCPUだと、シリアル自体が動作するのか不明なので、シリアルの基礎実験からやりました。
■シリアル基礎実験
シリアルが完全に動作するCPU今回は、Teensy4.1とNucleo432KCをシリアル接続して
キーボード入力を互いに受信して送受信テストしました。
シリアル結線は、RX-TX TX-RXとクロスにします。よく間違えますので注意です。

 //Nucleo L432KC シリアル基礎実験

#include “HardwareSerial.h”
HardwareSerial Serial1(D0,D1);
uint8_t c;
void setup()
{
  // put your setup code here, to run once:
  Serial.begin(115200);
  Serial1.begin(115200);
}
void loop() {
  // put your main code here, to run repeatedly:
if(Serial1.available())
{
  c=Serial1.read();
  Serial.printf(“Nucleo Received=%x,%c\n\r”,c,c);
}
if(Serial.available())
{
  char c=Serial.read();
  Serial.printf(“Nucleo keyin=%x,%c\n\r”,c,c);
  Serial1.write(c);
}
}

 

//Teensy4.1  シリアル基礎実験

int keyin;
void setup() {
  // put your setup code here, to run once:
 Serial.begin(115200);
 Serial5.begin(115200); //Teensy4.1 RX5-ADS122 RX5(21)-TX,TX5(20)-RX
 Serial.println(“SeT UP Serial5 RX 21 TX 20”);
}
void loop() {
  // put your main code here, to run repeatedly:
  if(Serial.available()>0)
  {
    keyin=Serial.read();
    Serial.printf(“Teensy keyin=%x,%c\n\r”,keyin,keyin);
    Serial5.write(keyin);//Sewnd  keyin
  }
  else if(Serial5.available())
  {
    char c=Serial5.read();//recieve
    Serial.printf(“Teensy Recieved=%x,%c\n\r”,c,c);
  }
}

上記プログラムを動作させると下記のようにキー入力が送受信できているので、NucleoのUARTは大丈夫と確認てとれました。

●ADS122U04ではまった点
①コネクタでCPUと接続したら接触不良で、シリアル通信ができなかった。
オシロで眺めてもダメなので、配線を疑って、あちこちテスタであたってみたら、導通が不安定だったので
もしかするとと思って、配線しなおしたら見事に動作できました。
ADS122U04の動作不良は、ほとんど配線ミスとか電源電圧不安定が多いです。

●ADS122U04のプログラム
  https://gist.github.com/dj1711572002/416c9cf6f21a4b79d137c6bd7d5a8055

ひずみゲージセンサを2個とちつけて動作試験

 

●以後
MPU6500とADS122U04を合体させます。センター用のIMUをBNO055のI2Cでやろうかとおもうのですが
I2C3個同じ結線では遅くなるので、最悪メインCPUのBNO085で代用するかもしれません。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です