基于FPGA的CAN总线转换USB接口的设计方案
3 软件设计
3.1 USB固件程序
USB固件程序是在Keil工具上开发完成的,除了进行必要的端点及寄存器配置外,程序中使用了自定义请求命令。自定义请求码通过USB控制传输的方式传送给固件,固件程序需要响应自定义请求码的请求信息。本文使用的自定义请求码为Oxa8,在响应代码中设置端口PA[1:0]电平值,产生USB控制命令,代码如下所示。SETUPDAT[2]对应控制传输端点的Value值,由上位机应用程序设定。
3.2 USB驱动程序及应用程序
使用CYPRESS公司提供的CY7C68013A通用驱动程序CyUSB.sys。上位机应用程序使用VC编写,也是基于Cypress提供的C++类库文件CyAP-I.lib设计完成的。使用的主要函数包括:BeginDataXfer、FinishDataXfer、XferData等函数。应用程序中设计了独立的数据接收线程,线程函数中不断地发送USB数据读命令,并完成批量输人端点的读操作。当有数据读入时,与主线程之间采用事件的线程同步方式,将数据读入计算机内存并保存。以下是线程函数中用于发送USB控制命令的控制传输代码:
4 实验调试与结果
为验证设计的正确性,使用了周立功公司的USBCAN-I产品,与目标电路板组成双节点通信,2个节点设置相同波特率500 Kb/s(BTRO= 00,BTR1=1Ch)和相同帧格式,由测试软件ZLGCANTest发送一组数据(eOh,e1h,……,e7h),上位机应用程序接收到的数据如图7所示。反过来由上位机应用程序注入指令数据e0h,a8h,周立功软件接收到的数据为e0h,a8h,00h,OOh……。经实验表明,数据收发正确,近距离通信时,通信速率可高达1 Mb/s。
5 结论
使用该方法设计的CAN总线转换器优点在于:使用USB总线完成CAN总线与计算机的数据交换,不会影响CAN总线的整体通信速率;通过FPGA控制完成通信接口的设计,可扩展性好,灵活性强,稳定性高。作为空间相机下位机地检设备的一部分,FPGA同时还可以完成RS422等总线的通信控制。
- RS485光电隔离器在485总线保护效果(12-13)
- 光电隔离性能RS485中继器延长485总线网络传输距离(08-31)
- CAN总线转换器设计与应用(12-21)
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 基于FPGA的快速并行FFT及其在空间太阳望远镜图像锁定系统中的应用(06-21)