質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

0回答

1772閲覧

ESP32からi2c経由でSC16IS740にデータを送信したい。

MaeharaKenji

総合スコア86

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

0クリップ

投稿2020/06/03 06:06

編集2020/06/03 06:12

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ozwk

2020/06/03 06:14 編集

> このケーブルのRXを接続して GNDもつないでますよね?
ozwk

2020/06/03 06:31

ESP32側は一旦置いておいて、 FTDIのケーブルをループさせて(TXとRXをつなぐ)Teratermで入力が戻ってきますか?
ozwk

2020/06/03 07:04

void SC16IS750::EnableTransmit(uint8_t tx_enable) という如何にもイネーブルにしないと送信できなさそうな関数ありますけどどうでしょう
MaeharaKenji

2020/06/03 08:37

いろいろと質問してしまい申し訳ありません。TXピンからデータが出力されていることをteratermで確認できました。 teratermの通信スピードを1200bpsに変更してみたところ、ESP32から送信しているデータをSC16IS740のTXピンで確認することができました。
MaeharaKenji

2020/06/03 08:38

#define baudrate 9600 ------(中略)----------------------- i2cuart.begin(baudrate); 9600bpsに設定していると思い込んでいたのですが、1200bpsに設定されていたようです。
MaeharaKenji

2020/06/03 09:28

SC16IS750.hの //#define SC16IS750_CRYSTCAL_FREQ (14745600UL) #define SC16IS750_CRYSTCAL_FREQ (1843200UL) 14745600ULをコメントアウトして、1843200ULを有効にしたら、baudrate通り9600bpsで動作するようになりました。 助かりました。
ozwk

2020/06/03 09:51 編集

私は特に何もしてないですが解決したようで何よりです 自己解決でこの質問を閉じてください
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問