背景资料 众所周知,国内开发学习板80%以上的市场,已被意法半导体占领,铺天盖地的中文资料,众多新生力量 的加入,使意法半导体的DSC芯片逆袭成为众多高校电子信息工程的必修科目。事实上,NXP等众多厂家 芯片的实力更强,然而意法半导体在价格上以绝对优势占领了市场,尘埃落定,其它IC厂家只剩眼红而已。 桂林电子科技大学,主要使用NXP的Cortex-M3,北航各家都有,主要是ST的,清华大学2014年开始 布局ST公司的芯片研究,同时也不放弃50MHz以下的Cortex-M0,江苏的大学主要研究其它厂商的 Cortex-M4。现在随随便便一个电子专业的毕业生,都对Cortex-M3芯片了如指掌。 一、USB Serial tools 软件简介 USB Serial tools 是本人于2012-2013年业余制作的开发调试工具软件包,通过注册WINDOWS消息通知, 具备了USB虚拟串口设备插拔检测的能力,不同于传统的调试工具,该软件还可以让技术开发人员便捷地 查看USB虚拟串口设备的生产厂商信息。 二、USB双虚拟串口简介 意法半导体官方在2007-2013年,在多个Cortex-M3系列上实现了各种USB设备,其中包含 CDC 设备,即 USB虚拟串口,经过多年数个版本的更新,意法半导体的USB CDC例程仍然存在很多不足之处,和一些 BUG,本人参考了国外大牛的基本通讯例程,和意法半导体最新的4.0版本CDC例程,经过大约1个星期 断断续续的改进,终于实现了USB双虚拟串口,测试硬件平台为大虾开发板 (STM32F103VCT6核心板),软件平台为MDK-ARM 4.74。 国外大牛实现的双虚拟串口,使用自己编写的驱动文件,没有经过微软数字签名,而且收发通讯只做演示, 并没有设置任何缓冲,不能作为产品。本人在前人的基础上修改而成的USB双虚拟串口,驱动文件在ST 官方inf文件的基础上修改,能通过微软数字签名。 USB Serial tools和通过微软数字签名认证的USB双虚拟串口这一套组合产品 USB Serial tools软件正准备申请软件著作权专利。 三、USB双虚拟串口的测试 利用USB Serial tools软件对USB双虚拟串口的部分测试,如图1-1所示。 图1-1 USB双虚拟串口全双工收发压力测试 图1-2 USB Serial Tools对USB双虚拟串口设备的识别信息 图1-3 WIN7-X64对 USB双虚拟串口的识别信息(驱动程序通过微软数字签名) 图1-4 专业工具Bus Hound对USB双虚拟串口通讯过程的监视情况 Bus Hound对虚拟串口(COM16)的监视及说明: 图1-5 64字节数据包循环发送测试(10次循环) 备注: 1. 发送方为虚拟串口COM15,发送周期: 30毫秒 数据包长度: 64字节 2. 之所以测试64字节,是因为USB 2.0 Full Speed (USB1.1)通讯数据包最大只有64字节; 数据包小于64字节时,Windows知道这个包收完就没有了,会马上读取; 数据包等于64字节时,Windows不知道后面还有没有发完,要求USB虚拟串口设备再发一个空包,告诉它数据包结束了。 图1-5 129字节数据包循环发送测试1(5次循环2Mbps) 备注: 1.Windows驱动每次都读到129字节,但实际的USB传输还是按照3次传输,一般是(64+64+1)。 2.注意这里测试波特率提高到1-2Mbps是为了减少数据传输时间。 串口波特率不能提高到1Mbps以上,主要是受到RS485物理层收发芯片及高速光藕的价格影响,另外串口 速度高,通讯距离也收到限制,常规应用串口波特率基本都在500kbps以内。 四、USB CDC设备可靠性的决定性因素 USB 双虚拟串口属于USB复合设备中的其中一种,也成为双CDC通讯设备。 USB CDC设备可靠性,取决于软硬件系统的整体设计。不管是X893的inf还是stmcdc.inf, 实际上都是调用微软的驱动文件usbser.sys,usbser.sys不会出现问题,所以CDC设备的 可靠性就取决于上位机上层软件和下位机的整体设计水平。 上位机有多种CDC设备的工具软件,可以相互取代,因此下位机底层驱动软件的鲁棒性及 硬件的可靠性设计就显得尤为重要(这也是为什么我花很多时间去测试的原因)。 硬件方面,USB的TVS保护和布线,由于时钟信号只有12MHz,处理比较简单。 软件方面,主要是看设计者对通信的各种情况考虑的是否周全,是否会有bug。 比如ST公司的工程师参考了中国设计者的代码,但没有理解的很深刻,将63字节 的缓冲定义改为64字节,但在数据包刚好是64字节时,未添加空字节包确认,这个bug至今未修改。 如无人值守的场合,可以利用USB双虚拟串口的其中之一,提供一个周期性的信号, 利用STM32或外部独立的芯片,监视这个周期性信号是否存在,从而通知STM32F103 "移除设备",延时一段时间后再恢复工作。当然还需上位机的配合,上位机必须要 具备USB设备移除和插入的检测功能,防止自己崩溃,才能恢复正常的工作。 一般场合,USB设备出现故障的概率很低,不需要另外的监控信号。 |