该日志会跟随设计进度而持续
更新。
一、名词解释:
ftdi - 很有名的usb 设备解决方案芯片提供商,它的ftxxxx系列串口转usb芯片非常经典和被广泛应用。
vcp - virtual com port (虚拟串口端口)
usb-serial controller - usb和串口控制器,相当于一个在usb和串口之间的转换接口,在嵌入式控制系统,工业控制系统中应用广泛。
usb device solutions - usb 设备解决方案,这是现在大部份专业芯片厂商,如st、ti、maxim等为了推广自已芯片而向应用厂商提供的芯片设计服务集成方案,是一个互利的服务,在提高自身的出货量的同时帮助芯片应用厂商加快产品的开发进度。
二、相关芯片设计数据手册
http://www.ftdichip.com/documents/datasheets.htm
三、ftdi chip 产品选型目录
http://www.ftdichip.com/ftproducts.htm
四、上位机串口编程模式
一般的上位机串口编程模式如下:
(1)调用经典的串口控件,如mscomm控件,这是个事件驱动的activex控件,在串口编程中应用极广,是简单和中级的串口编程应用首选。但由于要有窗口容器包含它、“运行”效率不高和占用系统资源较多,在具有10个以上的串口应用的项目一般不用这个控件。
(2)现在非常流行的dot.net中的串口控件,如下图所示:
http://blog.gkong.com/uploadfile3/20098513220171.jpg
这是在用c#或dot.net “管态”软件编程的首选控件,但同样存在上面所用的“mscomm.ocx”一样的问题,因此,在专业的串口编程中用得较小。
(3)真接用windows sdk 编程(也即win api)来把串口当作一个文件来操作(windows 操作系统自2000开始就不把串口单独进行抽象了,而是把有关设备或端口的抽象为“文件”,因此,我们只要掌握了针对“文件”的编程模型就能针对串口进行编程控制。这样设计是操作系统的未来。开始时会有点不习惯。但是慢慢就会体会到microsoft这样设计的高明之处。
(注:我在2002年之前一直用mscomm.ocx 和 pcomm(台湾厂商提供的一个用api写的以静态库形式或动态库dll形式提供的串口函数封装,很稳定和很专业,对于c和c++是无缝的,因此后期我都不用mscomm.ocx,大部份项目都用它,在我的blog中有pcomm下载和一个详细的在vs2008下c#和三菱fx系列的编程口进行通信编程的用例。但自从2002年在维护一个日本vc++5.0&mfc的工控项目时,慢慢被里面的串口class(实际上是给串口win32编程更向上抽象多了一层,使我们不用直面win32的繁杂)所触动。下决心用win32来写串口代码。这也是最具灵活性、最高效率、的串口编程方式,不过要过多线程编程之一关才能写出“优雅”的代码来。)
(4)随着电脑的发展,串口在个人电脑的作用越来越显得可有可无,因此现在的个人电脑大部分都取消了串口,但串口(嵌入式系统中叫usart/uart)在嵌入式系统中的需求却是有增无减,比如,stm32103vet6就集成了2个usart和3个uart接口。虽然在我们互联嵌入式系统网络时有了越来越多的选择,比如can。但是用得最多的还是uart(串行接口),因此,串口usb转接线就变成了嵌入式开发工程师每人一条甚至2条。虽然还可以用之前的串口编程模型来写串口程序,但不少usb 设备芯片提供商为他们的芯片提供操作系统驱动的同时,还提供了更直接更高效的dll动态链接库。用该库来写串口程序将更为直接和高效,但会损失掉代码的移植性,这有时是不可接受的。
但,我现打算用这种方式来编写串口程序,只要我再加上一层接口函数,用该接口来隔离掉厂商dll与用户代码的串口操作代码就行了。
五、ftdi的 d2xx drivers 的dll编程资源
d2xx drivers allow direct access to the usb device through a dll. application software can access the usb device through a series of dll function calls. the functions available are listed in the
[URL=http://www.ftdichip.com/documents/programguides/d2xxpg34.pdf]
d2xx programmers guide
[/URL]
document which is available from the
[URL=http://www.ftdichip.com/ftdocuments.htm]
documents
[/URL]
section of this site.
programming examples using the d2xx drivers and dll can be found in the
[URL=http://www.ftdichip.com/ftprojects.htm]
projects
[/URL]
section of this site.
http://blog.gkong.com/images/file/pdf.gif
d2xxpg34.pdf
// d2xx 编程手册
http://www.ftdichip.com/ftprojects.htm
// d2xx 编程项目s
http://www.ftdichip.com/projects/codeexamples.htm
// code examples(包括vc、c#、delphi, labview(当然labwindowscvi参考vc的例子就ok)
http://www.ftdichip.com/projects/codeexamples/vc++.htm
// 有4个用例项目。
困了,睡觉先,有空会更新(2009-8-5)
----------------------------------------------
此篇文章从博客转发
原文地址:
Http://blog.gkong.com/more.asp?id=96187&Name=zjcsharp