今回はI2C/UARTプロトコルブリッジICのSC16IS740/750/760 を紹介します。SC16IS740/750/760はI2CからUARTに変換するICです。
マイコンでUARTを使用する場合、UARTのボーレートに合わせてマイコンのメインクロックを調整するといったことが必要な場合が多々あります。また、UARTポートが他の用途で使用して足りないこともあります。特にUARTの受信処理はSPIに比べ、信号タイミングを測定しながらサンプリングする必要があり、ソフトウェアUARTで実装するとマイコンの負荷が高くなりがちです。マイコンの負荷が高くなることで受信ミスも発生しやすくなります。
I2C/UARTプロトコルブリッジICのSC16IS740/750/760 を使用することでこのような問題を解決することができます。
マイコンからはSC16IS740/750/760 をI2Cデバイスとして制御し、UARTのボーレート設定、送信、受信処理をすることはできます。64 bytesのバッファを内蔵しているため、通信速度が遅いI2Cでも一旦、バッファで受けて後から受信したデータを読み出すといったことが可能です。
また、SC16IS740/750/760 は別途水晶発振子を接続する必要があり、マイコンのクロックから切り離すことができます。そのため、UARTのボーレートに合わせてマイコンのクロックを最大クロックから下げるといった調整が不要です。また、7.3728MHzの水晶発振子を搭載することで9600bps、38400bps、57600bps、115200bpsといった一般的なボーレートに対してほぼ誤差率0でデータのやり取りをすることが可能です。
SC16IS740、750、760で3種類ありますが、違いは下記の通りです。
SC16IS740 | SC16IS750 | SC16IS760 | |
Flow Control Pin | RTS/CTS | RTS/CTS/DSR/DTR/CD/RI | RTS/CTS/DSR/DTR/CD/RI |
IO Pin | 0 | 8 | 8 |
SPI Max Clock | 4Mbit/s | 4Mbit/s | 15Mbit/s |
SC16IS740/750/760の電源は3.3Vですが、信号の各ピンは5V耐圧のためArduino UNOなどに接続してそのまま使用することも可能です。
このSC16IS740/750/760を使用してGrove変換アダプタを作成してみました。GROVEからUARTに変換する「I2C UART Converter」とGROVEからRS232Cに変換する「I2C RS232C Converter」を設計してみました。
GROVEの多くはI2Cデバイスですが、一部のGROVEはUARTデバイスがあります。UARTデバイスの場合、そのままI2Cポートでは接続できず、ソフトウェアUARTを使用せざるを得ない場合がありました。そのような場合に上記Converterを使用するとソフトウェアUARTを使用せずにUARTデバイスを接続することができます。
サンプルコードを作成して設計に問題なければ、どこかで販売をしたいと思います。