FT232RL是個是神奇的片子,說萬能可能有些誇張,但是。。。總之就是FTDIChip這個神奇的公司基於類似的技術,做了很多好用的產品,包括轉IIC啦,轉SPI啦,密碼狗啦之類的。是個很有用的工具就對了。
言歸正傳。用一句話描述起因呢就是,錯用了D2XX里面的FT_ProgramEx這個函數之后,片子內部的Firmware各種混亂。
1、VID、PID與INF文件
首先,VID和PID都錯亂了,原來的驅動沒法用。百度之,啊哈,發現可以通過修改inf文件,來使原來的驅動可以支持新的VID和PID。
因為我的VID和PID都變成了cccc,所以在ftdiport.inf文件中添加:
%VID_cccc&PID_cccc.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_cccc&PID_cccc
在ftdibus.inf里面添加
%USB\VID_cccc&PID_cccc.DeviceDesc%=FtdiBus.NT,USB\VID_cccc&PID_cccc
OK,重新給無法識別的器件添加驅動,然后它又變得可以識別了。
這里可以分析下inf文件,很顯然,驅動支持哪些VID和PID,可以通過修改inf文件來實現。首先,系統是會去讀inf文件,看該驅動能不能支持剛插入的器件;然后,驅動會使用該VID和PID去識別期間,類似於Linux寫驅動時的主設備號和子設備號。
2、下載libftd2xx1.1.12.tar.gz
額,雖然可識別了,但是用FT_ProgrammEx是沒法再把Firmware給設置正確了,操作一次后,一插器件上來,windows就藍屏。
所以,改在linux下面修改VID和PID再試。
先下了在Linux的D2XX支持包libftd2xx1.1.12.tar.gz過來。
唔,下這個包我抽了至少五根煙,雖然他只有34k大小,主要是服務器那邊連接一直斷。。。開始時候用chrome,斷一次,手動點擊連接一次。。。重復幾次之后就沒耐心了。所以,用上了wget。無限次嘗試下載,斷開連接1秒后嘗試重新連接。
wget --tries=inf --read-timeout=10 http://www.ftdichip.com/Drivers/D2XX/Linux/libftd2xx1.1.12.tar.gz
第一次設的是1s,結果不停在嘗試連接,然后就設置為10s了,這樣每10s嘗試連接一次,開始時候總是速度很快,哦哈哈