FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

libftdi 0.18の導入

目的: FTDI社のFT232RL(とdsPIC33FJ256GP506A)を搭載したプリント基板を試作する機会がありました。
まずFT232RLの評価のためにオープンソースのlibftdi環境をFreeBSD上に構築します。
そして実際にFT232RLのシリアル通信の通信方法を試してみます。(うまくいったらその後、BitBangも試します。)

FT232RLその1

環境の構築編:FreeBSDのPortから libftdi 0.18 をインストールし、インストール後にexamplesディレクトリの
いくつかのサンプルを実行する。

FreeBSD_MACHINE# cd /usr/ports/devel/libftdi
FreeBSD_MACHINE# make install (必要に応じてclean)
FreeBSD_MACHINE$ cp -p /usr/ports/devel/libftdi/work/libftdi-0.18/examples/hogehoge.c hogehoge



サンプロプログラムの修正と実行:
全てのサンプルプログラムはFreeBSD環境でそのままコンパイルできないので修正する。
修正箇所は先頭の#includeに関する所だけ。

#include <stdio.h> (そのまま)
#include <stdlib.h> (追加する)
#include </usr/local/include/ftdi.h> (絶対パスに修正する)

サンプルプログラムを修正したらコンパイルし実行する。実行時にroot権限がないと動作しないので注意。

FreeBSD_MACHINE$ gcc -o test test.c -lftdi -L/usr/local/lib
FreeBSD_MACHINE# ./test
ftdi_read_chipid: 0
FTDI chipid: 5431AEC5



FT232RLその2

当初の目的であるserial通信のサンプルを実行する。
serial_read.cのサンプルはコマンドの引数でボーレートを一見変更できるように見えるが、引数からは反映せず
115200bpsの固定である。dspicに書き込んでいるプログラムは57600bpsで動作させていてそのままでは動作せず。
今回は、serial_read.c側を修正し、プログラム内のbaudrateの定数を2か所115200から57600に変更し
コンパイルする。実行すると定期的にread 1024 bytesの文字が標準出力され、その後、1024byte単位で
受信が行われている模様。なお、dspicからシリアル側に10bitsのADの取得値と電圧に変換した文字列を
出力するようにプログラムを書き込んでいる。
Teratermは遠隔のFMV-6000CL(FT232RLのボードをUSB接続したマシン)にログインするために使っている。

FreeBSD_MACHINE$ gcc -o serial_read serial_read.c -lftdi -L/usr/local/lib
FreeBSD_MACHINE# ./serial_read
read 1024 bytes
1[mV], 2
A/D = 6[mV], 8
A/D = 2[mV], 3
A/D = 0[mV], 3
A/D = 0[mV], 2
A/D = 0[mV], 4
A/D = 8[mV], 11
(後略)



以下、ご参考。FreeBSDのUSBデバイスの確認方法。
FUJITSUのデスクトップパソコン(FMV-6000CL)につないだUSBデバイスの一覧を得る

FreeBSD_MACHINE# usbconfig
ugen0.1: at usbus0, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE
ugen1.1: at usbus1, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE
ugen2.1: at usbus2, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=SAVE
ugen3.1: at usbus3, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE
ugen4.1: at usbus4, cfg=0 md=HOST spd=FULL (12Mbps) pwr=SAVE
ugen3.2: at usbus3, cfg=0 md=HOST spd=LOW (1.5Mbps) pwr=ON
ugen4.2: at usbus4, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON
ugen4.3: at usbus4, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON


ugen3.2:は、市販のUSB接続のキーボード(2000年頃に購入?)
ugen4.2:は、この度自作したdspicの評価ボードに搭載したFTDI社のFT232RL
ugen4.3:は、市販のDigilent社のJTAG HS1 Programming Cable


ugen4.2:の詳細を確認すると、Vendor=0x0403、Product=0x06001でFT232RLの初期設定そのものですね。

FreeBSD_MACHINE# usbconfig -d 4.2 dump_device_desc
ugen4.2: at usbus4, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON

bLength = 0x0012
bDescriptorType = 0x0001
bcdUSB = 0x0200
bDeviceClass = 0x0000
bDeviceSubClass = 0x0000
bDeviceProtocol = 0x0000
bMaxPacketSize0 = 0x0008
idVendor = 0x0403
idProduct = 0x6001
bcdDevice = 0x0600
iManufacturer = 0x0001
iProduct = 0x0002
iSerialNumber = 0x0003
bNumConfigurations = 0x0001



ugen4.3:の詳細を確認すると、HS1の中身はVendor=0x0403、Product=0x06010でFT2232D等の初期設定に
少しカスタマイズしたようですね。

FreeBSD_MACHINE# usbconfig -d 4.3 dump_device_desc
ugen4.3: at usbus4, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON

bLength = 0x0012
bDescriptorType = 0x0001
bcdUSB = 0x0200
bDeviceClass = 0x0000
bDeviceSubClass = 0x0000
bDeviceProtocol = 0x0000
bMaxPacketSize0 = 0x0040
idVendor = 0x0403
idProduct = 0x6010
bcdDevice = 0x0700
iManufacturer = 0x0001
iProduct = 0x0002
iSerialNumber = 0x0003 <210205331885>
bNumConfigurations = 0x0001

スポンサーサイト
プロフィール

まつばば

Author:まつばば
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。