ESP32からi2c経由でSC16IS740のTXピンにデータを送信したいと思っています。
次のようなプログラムを作成してみましたが、SC16IS740のTXピンにFTDI USBシリアル変換ケーブル(3.3V)
http://akizukidenshi.com/catalog/g/gM-05840/
このケーブルのRXを接続して、teratermで受信表示しようとしているのですが、何も表示されません。
下記プログラムのi2cuart.writeにデータを1バイトずつ入れれば、送信されないのでしょうか?
cpp
1i2cuart.write(buffer02[j]);
下記プログラムで修正すべき箇所を教えて頂きますよう、よろしくお願い致します。
cpp
1#include <Wire.h> 2#include <SC16IS750.h> 3#include <string.h> 4#include <SPI.h> 5 6SC16IS750 i2cuart = SC16IS750(SC16IS750_PROTOCOL_I2C,SC16IS750_ADDRESS_AA); 7 8//Connect TX and RX with a wire and run this sketch 9 10#define baudrate 9600 11//#define baudrate 57600 12//#define baudrate 115200 13//#define baudrate 230400 14//#define baudrate 460800 15//#define baudrate 921600 16 17int count=0; 18int oldCount=0; 19 20void setup() 21{ 22 Serial.begin(115200); 23 24 //int SDA1=21 ;GPIO21を割当 2020/0528追加 25 //int SCL1=22 ;GPIO22を割当 2020/0528追加 26 Wire.begin(21,22); // wake up I2C bus 2020/0528追加 27 28 29 Serial.println("start i2cuart"); 30 // UART to Serial Bridge Initialization 31 delay(100); 32 i2cuart.begin(baudrate); //baudrate setting 33 delay(1000); 34 35 36 if (i2cuart.ping()!=1) { 37 Serial.println("device not found"); 38 while(1); 39 } else { 40 Serial.println("device found"); 41 } 42 Serial.print("start serial communication. baudrate = "); 43 Serial.println(baudrate); 44} 45 46void loop() 47{ 48 char buffer02[64] = {0}; 49 //static char buffer[64] = {0}; 50 static int index = 0; 51 52 53 //printf("testesetwetewjiofjie \n"); 54 strcpy(buffer02,"testesetwetewjiofjieowjofjweonmfowenfownownofnwe \n"); 55 printf(" buffer02 = %s\n", buffer02); 56 57 Serial.println("------i2c write start ----------"); 58 59 for(int j=0;j<20;j++) 60 { 61 i2cuart.write(buffer02[j]); 62 delay(10); 63 } 64 65 delay(5000); 66 67} 68
> このケーブルのRXを接続して
GNDもつないでますよね?
GNDもつないでます。
ESP32側は一旦置いておいて、
FTDIのケーブルをループさせて(TXとRXをつなぐ)Teratermで入力が戻ってきますか?
okです。できてます。
void SC16IS750::EnableTransmit(uint8_t tx_enable)
という如何にもイネーブルにしないと送信できなさそうな関数ありますけどどうでしょう
いろいろと質問してしまい申し訳ありません。TXピンからデータが出力されていることをteratermで確認できました。
teratermの通信スピードを1200bpsに変更してみたところ、ESP32から送信しているデータをSC16IS740のTXピンで確認することができました。
#define baudrate 9600
------(中略)-----------------------
i2cuart.begin(baudrate);
9600bpsに設定していると思い込んでいたのですが、1200bpsに設定されていたようです。
SC16IS750.hの
//#define SC16IS750_CRYSTCAL_FREQ (14745600UL)
#define SC16IS750_CRYSTCAL_FREQ (1843200UL)
14745600ULをコメントアウトして、1843200ULを有効にしたら、baudrate通り9600bpsで動作するようになりました。
助かりました。
私は特に何もしてないですが解決したようで何よりです
自己解決でこの質問を閉じてください
あなたの回答
tips
プレビュー