組み込みとか電装とか2016-10-19NXPのUART-I2CブリッジSC18IM700でLチカすべての道はLチカに通ずこのチップの存在を知ったとき、あまり使うことはないかなとスルーしてたのですが、かなり使い道があると思ったのでちょっとだけ。UARTさえあれば、プログラミングせずにI2Cデバイスと通信できるのでC言語とかVerilogとかぜんぜんぜんっ知らない僕でも使えちゃいます。やめて石投げないで気をつけるべきはRESETとWAKEUPの端子のプルアップくらいでしょうか。SC18IM700はデフォルトで9600baud、8N1で通信するので特に気にする部分もありません。偉そうにいってSC18IM700の通信コマンド間違えてて動かない動かないと3時間唸っていたのでした。GPIOでも動かしてみるSC18IM700+秋月のFT231XボードでTeraTermからLチカしてみました。SC18IM700のリセット後、'OK'という文字が送信されます。SC18IM700が動作しないように思えるときはこの文字が受信できているかまず確認します。できていれば受信はOKなので、I2Cバスのプルアップ・速度が問題か、GPIOが動作していないのであればPortConfの設定を見直せばいいことになります。詳細はデータシート参照のことhttp://cache.nxp.com/documents/customer_presentation/NXP-Interfaces-and-Power-Solutions.pdf?fsrch=1&sr=1&pageNum=1TeraTermからコマンド送信FT231X(USB-UARTで5V/3.3V系ならなんでもOKのはず)のTX/RXをSC18IM700のRX/TXと接続します。写真は秋月FT231X基板とダイセン変換基板に載せたSC18IM700です。SC18IM700では文字データ以外の16進数も送受信するため、任意のバイナリデータを送受信できるようTeraTermの設定を変更します。設定ファイルになっていると思いますが、このINIファイルのdebug=offの行を見つけ出し、(自分は475行目付近にあった)debug=onに書き換えて上書き保存する。16進表示モードに切り替える。ESCを何回か押すと切り替わるはず。0x56を送信したい場合、send$12$34$56とマクロファイル(.ttl)に記述すればいい。繰り返し上記のマクロをメモ帳などで記述し、foobar.ttlみたいなファイル名で保存。マクロ(M)でfoobar.ttlを呼び出す。TeraTermの画面はこうなるはずGPIO0~7にLEDをつけて確認すれば2秒周期でLEDがブリンクしているのが確認できるはず。クマーおさんに助けていただきました。https://developer.mbed.org/users/okano/code/SC18IM700_GPIO_pin_operation_sample/file/16ad158dc535/main.cppホントに助かりました。ありがとうございます。マヨネーズ反対!I2Cは?手元にI2Cデバイスがないので動作を確認できないのですが、オシロで信号を見てみました。TeraTermマクロは以下の通り。I2Cアドレス0xA0に1バイトデータ0xAAを送信するマクロです。Status信号波形。デバイスが接続されていないので当たり前ですが、アドレスに対してACKが返ってきてないのでエラーで終わっています。詳細はデータシートの9.2.7参照。Blogマイコン風雲録マルチチャネルDAC製作記nabeの雑記帳なんでも作っちゃう、かも。blog月別アーカイブはてなブログをはじめよう!Lynx-EyEDさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。