- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于TMS320F2812和USB100的CAN-USB总线通信系统设计
上位机通过USB接口发送数据,下位机通过CAN接口接收数据基本步骤为:
(1)F2812初始化通用IO口以及eCAN控制器;
(2)F2812检测USB模块是否有来自上位机的数据;
(3)若有,将数据读入配置好的eCAN发送邮箱;
(4)启动配置好的eCAN发送邮箱;
(5)当邮箱发送消息给下位机成功后,会进入eCAN发送中断程序;
(6)清除相应标志后退出中断程序,继续等待上位机发送数据。
上位机通过USB接口接收数据,下位机通过CAN接口发送数据基本步骤为:
(1)F2812初始化通用IO口以及eCAN控制器;
(2)当下位机通过CAN接口发送数据时,根据邮箱标识符,已配置好的eCAN接收邮箱收到下位机数据,同时进入eCAN接收中断子程序;
(3)F2812检测USB模块内部缓冲区是否允许向上位机发送数据,若禁止,则等待;
(4)若允许向上位机发送数据,则将数据写入上位机;
(5)清除相应标志后退出中断程序,继续等待下位机发送数据。图2为系统软件流程图。
3.2 上位机软件编写
采用NI公司的LABWINDOWS/CVI8.0进行上位机控制界面设计,实现通过PC机发送和接收CAN总线系统的数据的功能。
由于USB100模块将USB接口虚拟成了RS 232标准的串口,程序要实现的任务是调用WINDOWS下串口函数,使得用户在CVI的界面下完成PC机数据的收发。该系统与PC机之间的通信主要通过调用LABWINDOWS/CVI函数库中提供的RS 232函数库,这几个函数在设计驱动程序中具体实现。主要的函数有:配置串口函数:int OpenComConfig(int COMPort,char deviceName[],long baudRate,int parity,int dataBits,int stopBits,int inputQueueSize,int outputQueueSize);将字节写入指定端口函数:int ComWrt(int COMPort,char buffer[],int count);从指定端口读入字节函数:int ComRd(int COMPort,char buffer[],int count);在PC机上通过相应控件启动相应端口函数,使得数据通过USB接口发送。
作者:叶成 刘晓刚 刘春生 来源:电子元器件应用