ESP8266でSC16IS750を使う

i2cインタフェース



ESP8266にはUART0とUART1が有りますが、UART1は送信しかできません。
こちらの ライブラリはそのままではESP8266ではコンパイルエラーとなりますが、SC16IS750.cppを少し変更するだけで、
ESP8266でも使えるようになります。
赤字の2行が追加したコードです。
#ifdef __AVR__
 #define WIRE Wire
#elif ESP8266 // ESP8266
 #define WIRE Wire

#else // Arduino Due
 #define WIRE Wire1
#endif




ESP8266のi2cで使う場合の結線はATmega328と全く同じです。
SC16IS750 ESP8266 備考
i2c-SPI 5V i2c/SPIの切り替え
A0-CS 5V i2cアドレスの選択(※)
A1-SI 5V i2cアドレスの選択(※)
NC-SO N/C i2cの時は使わない
SCL-SCK SCL(IO5) PullUpする必要が有る
SDA-VSS SDA(IO4) PullUpする必要が有る
/IRQ N/C 基板上でPullUpされている
RESET N/C 基板上でPullUpされている
VIN 5V
GND GND

※これらのピンはi2cアドレスの選択に使われます。
アドレスの範囲はデー タシートの10.3章に記載されています。
A0とA1をVddとした場合、i2cアドレスは0x90となります。



TXとRXをクロスで結線しライブラリに付属するI2CSELFTESTを動かしてみましたが、全く変更なしで動きました。
これだけ互換性が有ると気持ちいです。
こちらのATmegaと同じスケッチで230,400bpsで通信できます。

続く...