您的位置: turnitin查重官网> 工程 >> 电气工程 >> 电气化铁道供电 >分析适配器基于CH341USB—CAN适配器设计

分析适配器基于CH341USB—CAN适配器设计

收藏本文 2024-02-22 点赞:4232 浏览:10819 作者:网友投稿原创标记本站原创

摘要:为便捷上位机访问工业现场CAN总线,提出了一种便携式即插即用的USBCAN适配器设计方案。该适配器采用CH341作为USB总线转接芯片,直接把USB总线协议转化为并口协议;选用SJA1000芯片作为CAN控制器,支持CAN2.0B协议,以适应不同的CAN总线需求。系统从USB端口取电,且无需MCU/DSP介入,简化了电路结构;利用CH341主动并口功能,经相应的控制时序逻辑转换,上位机即可驱动SJA1000,进行CAN总线访问。该适配器支持上位机自主配置,灵活强,可靠性高。经实验测试,适配器支持访问不同的CAN总线网,速率可达1Mb/s。
关键词:CH341;USBCAN;适配器;SJA1000
1004373X(2012)18005003
19CAN总线以其突出的可靠性、实时性和灵活性,在控制领域获得广泛的应用。当上位计算机访问CAN总线终端设备时,一般采用基于PCI总线的CAN接口卡,但是该方法不支持即插即用,且需配备专用的计算机;或是借助MCU,DSP等CPU模块进行数据中转处理。若CAN适配器通过USB接口驱动CAN控制器直接访问CAN总线网,则支持热插拔和通用上位机,为测试和访问CAN总线网,提供了一种便捷的解决方案。
1设计目标
适配器支持即插即用,上位机可自主配置、访问CAN总线;适配器无需MCU,DSP等CPU介入,体积小巧,便携式设计,有广泛的适应性;提供Windows平台下适配器驱动的API函数。
2硬件实现
适配器选用SJA1000芯片作为CAN控制器,该芯片支持CAN2.0B协议,有BasicCAN和PeliCAN两种工作模式,分别支持11位和29位地址识别码,通信速率可达到1Mb/s,可满足不同CAN网接入需求[12]。选用南京沁恒公司的CH341作为USB总线的转接芯片,该芯片通过USB总线不仅提供异步串口、打印口、并口,还提供常用的2线和4线等同步串行接口[3]。尤其是CH341工作在主动式并口模式下,仅凭主机的程序控制,即可直接从外部电路输入/输出数据,而无需外接单片机DSP/MCU。因此系统置SDA低电平,SCL悬空,配置CH341工作于USB总线转并口模式,实现对SJA1000的直接控制。
图1为适配器设计原理图,两者AD0~AD7相连,构成双向地址/数据总线;RST和INT与对应的引脚相连,则可通过EPP对SJA1000复位,而SJA1000的中断也可通过EPP映射到主机。在EPP工作模式下,虽然CH341主动并口地址和数据的读写时序见(图2)与SJA1000的工作时序并非完全一致,但是可通过相应逻辑转换而相匹配。SJA1000的ALE是高电平地址输入,低电平地址锁存,AS反向后则与之等效。SJA1000的RD、WD为低电平有效信号,且应在数据读/写周期时有效而地址读/写周期时无效,以负逻辑形式表示则RD=WR·DS,WD=WR·DS#。
图2CH341并口(EPP)读写时序系统直接从USB端口取电,无需外接电源。C3,C2用于外部电源退耦,C1则用于内部电源节点退耦,均为独石或钽电容。SJA1000工作时钟频率16MHz,Intel模式,CS引脚接地,上电后直接处于选通的工作状态。
以TJA1040作为CAN总线的驱动器,该芯片EMC性能出色,采用分离终端设计,提高了总线的抗电磁干扰性能[3]。STB(P8)脚接地,设置驱动器工作于高速通信模式。CANH,CANL分别对地接30nF的电容,用于滤掉总线上的高频干扰。为防止静电和外部强干扰损坏适配器,CAN总线输出接口端并联NUP2105L总线保护器。
CH341主动并口除了EPP模式还有MEN和BUS模式,其BUS模式与SJA1000的工作时序最为匹配,控制信号无需逻辑转换,可直接连接,其7位地址总线也满足SJA1000寄存器地址的需求[4]。但由于该功能尚未经厂方完全测试,且不提供API函数,因此适配器选取EPP模式,编程更为简洁,可靠。
3软件设计
在Windows操作系统下,CH341的并口驱动程序和动态链接库DLL向应用程序提供了应用层接口,这包括设备管理API、并口数据传输API以及中断处理API[45]。并在CH341DLL.H文件中给出了API参数说

摘自:硕士论文答辩技巧www.udooo.com

明。主机程序调用这些API函数,则可便捷地驱动CH341完成USB协议到并口协议的转换,进而驱动CAN控制器SJA1000。

3.1CAN总线API设计

适配器软件设计的关键就是重新封装CH341驱动中的并口API,以实现适配器CAN总线接口的API。驱动SJA1000进入目标总线状态,主要是对其功能寄存器进行合理配置,包括控制、命令、验收代码、验收屏蔽、总线时序等寄存器。这些操作均需要对指定地址进行字节数据读写的API函数[69]。依据SJA1000的读写时序,其读写API编写如下(0号设备):

copyright 2003-2024 Copyright©2020 Powered by 网络信息技术有限公司 备案号: 粤2017400971号