* FT232 シリーズの synchronous bit-bang モード [#se38c80d]

FTDI 社の FT232 シリーズは,UART だけでなく GPIO としても使えることで有名です.
この FT232 シリーズの synchronous bit-bang について見てみました.

* synchronous bit-bang とは [#z53f426d]
** synchronous bit-bang とは [#z53f426d]

[[Application Note AN_232R-01 Bit Bang Mode Availability ... - FTDI Chip>https://www.ftdichip.com/Support/Documents/AppNotes/AN_232R-01_Bit_Bang_Mode_Available_For_FT232R_and_Ft245R.pdf]] によると,

- 内部ボーレートクロックに同期してビットデータを送受信
- 受信データは送信データに同期してサンプルする
-- ただし,受信データサンプル → 送信データ送出 の順番で処理するので,対応する送受信データを比較すると受信データが1サンプル分遅れる

と''いうことになっています''.

** ホスト環境 [#k555b6b6]

- debian testing(buster)
-- Linux kernel 4.18.0
- libftdi 0.20-4

通信ライブラリは,FTDI 純正の D2XX ではなく libftdi を,テストプログラムには,[[baud_test>https://github.com/wjakob/libftdi/blob/master/examples/baud_test.c]] を使用しました.

このテストプログラムは
>0x00 0xff 0x00 0xff ...

というシーケンスを送信します.
つまり,1サンプルごとに出力ポートから L → H → L → ... を繰り返し送出していることになります.


** FT232RL (おそらく偽物) [#w55c13cc]
#ref(IMG_20181226_012234.jpg,center,10%)

まず最初は,よく見かける中国製の FT232RL 基板.
価格も安かったので,おそらくは FT232RL の偽物を使用していると思われます.

この基板をホスト PC に接続し,コマンドラインからテストコマンドを実行します.

 $ ./baud_test -m s -b 10000 -c 128
 real baudrate used: 10000
 this test should take 10.00 seconds
 and took 41.4536 seconds, this is 2412 baud or factor 0.241

で,FT232RL の TxD ピンをオシロで見ると,以下のような波形が出力されていました.

#ref(IMG_20181227_030102.jpg,center,10%)

…何じゃこりゃ.

画面の時間軸(横軸)1マス分が 100 μs = 1/10000[bps] になるよう設定しているので,1マスごとに規則正しく L → H → L → ... という信号が出ていることを期待してたのですが,信号の変化点,つまりサンプルの出力が不定間隔になっています.

描画ごとに輝線を消さない persist モードで観測してみると
#ref(IMG_20181227_030202.jpg,center,10%)
このようになりました.

信号の変わり目は 100 μs の倍数にはなっていることがわかります.

また,テストコマンドの実行結果出力では factor 0.241 と出力されており,出力レートが理想値の 1/4 ほどになっていることになります.
データ出力が滞っているためだと思われます.

** FT2232D [#qfb50fa5]
#ref(IMG_20181226_012353.jpg,center,10%)
#ref(IMG_20181226_012604.jpg,center,10%)

次は[[Olimex 社の ARM-USB-TINY>https://www.olimex.com/Products/ARM/JTAG/ARM-USB-TINY/]] です.
内部で FT2232D を使用しています.




** FT2232H [#ea3d72e6]
#ref(IMG_20181226_012330.jpg,center,10%)


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS