直奔主题
FTD2XX下载
FTD2XX是FTDI官方对USB 2.0系列芯片的开发库,对DLL调用就能够直接访问设备,库很简洁用起来也简单,直接官网下载就好了。
gcc编译
为什么不用 libftdi
,这个虽然开源,但是跟官方差别不大,依赖libusb
,在linux上还好,windows上很不方便,需要卸载原有驱动,windows上没必要费这个事。linux上libftdi
就比较友好,直接包管理安装就可以用,官方库则需要一顿复杂的操作。
下载以后,发现是ftdi2xx.lib,习惯用MSVC就不说了,如果用mingw,或者其他版本gcc,命令像下面这个样子:
gcc main.c -I.\ftd2xx -l:ftd2xx.lib -L.\ftd2xx -o hi_ft232
使用动态库是可以的,静态库总是连接不成功。主要就是一个-l:ftd2xx.lib
特殊的链接参数。这是一个不标准的hello world
:
#include <stdio.h>
#include <windows.h>
#include "ftd2xx.h"
int main() {
FT_HANDLE handle;
if(FT_Open(0, &handle)) {
puts("Can't open device");
return 1;
}
FT_Close(&handle);
}
续一句
FTDI的芯片编程我准备陆续出一个系列吧(虽然没人看,逃),包括FTDI特色协议和FPGA通信之类的。FTDI的芯片定制性最然比较差,只能用FTDI的驱动开发USB设备,但是带来的好处也很明显,开发起来简单方便。
大致的准备时这样的,先使用FT2232D芯片外挂FLASH和LATTICE LCMXO2 640HC做一个简单的板子,CHANNEL A和B全连接,CHANNEL A用MPSSE走JTAG下载,CHANNEL B不支持MPSSE无所谓,先把FT的基础的特色协议与FPGA通信用几篇博客细说一下。具体讲讲PC端的C代码和FPGA上的Verilog。
板子还没画呢,当时由于手快没看价格,发现LATTICE 640HC和1200HC的价格差不多,有些亏了。640 LUT虽然短小,那我就尽量使代码简洁精悍。