目前大部分产品在上位机和下位机通信中选择串口通信,串口通信具有稳定、兼容性好的优点,但开发的产品需要外接串口转USB芯片,增加了产品成本,在批量产品中具有一定的劣势。
FM33LC系列内置USB2.0 FS device,包含片上无晶振PHY和MAC控制器,其USB全速设备具有以下特点:
1.支持1个双向控制端点,2个IN端点,2个OUT端点,类型可配置。
2.具有96*35bits Packet RAM。B
3.可自动进行CRC生成/检查,NRZI编解码,自动位填充。
4.集成D+D-上拉下拉电阻。
USB的协议其实很复杂,如果要深入学习估计要一两年才能熟悉透。本文主要是讲如何使用官方已经写好的库进行二次开发,以达到我们自己使用的目的。我们知道USB可以用来接U盘、鼠标、键盘、虚拟串口等等。这里主要是讲USB接口用来当虚拟串口使用,这个VCP(Virtual COM Por,虚拟串口)是通过USB的CDC(communication device class,CDC是通信设备级方案,是USB 转其他的接口的一类设备,比如USB转RS232,USB转Ethernet等)类来实现的。使用FM33LC的USB功能虚拟串口可直接与电脑上位机进行通信,降低产品开发成本。
图1 USB类参考例程
官方提供USB相关例程5个,如上图1所示。第一个为虚拟串口例程,第二个为HID(humman interface device,人机接口级方案)通用代码,第三个为键盘例程,第四个为鼠标例程,最后一个为MSC(mass storage class,大容量存储方案)移动存储设备驱动例程。
打开USB_CDC_VCP代码,程序初始化USB模块,如图2所示。
图2 USB初始化代码
程序首先初始化时钟,以PLL倍频到64M运行。初始化1ms基本定时器。USB初始化。随后将USB接口与电脑相连,电脑端会自动生成一个虚拟串口,通过串口助手软件可以直接与单片机进行通信,简单便捷。
在stream.c中提供了USB虚拟串口读写函数,StreamReadData和StreamWriteData。可以通过定时器1ms轮询StreamReadData获取USB虚拟串口的数据。当需要发送数据时调用函数StreamWriteData可以将需要的数据发送至上位机。
使用FM33LC单片机进行应用程序开发时,可以充分利用USB模块的特性,利用虚拟串口进行通信取代USB传串口芯片,降低设备开发成本,理论传输速度达12 Mbps,有效提高设备的通信速率,在批量数据传输中具有显著优势。QQ:1936788289
|
目前国产单片机集成USB外设的不多,复旦微的MCU确实不错。