CAN转USB

2024-08-12

CAN转USB(精选6篇)

CAN转USB 篇1

控制器局域网总线(Controller Area Network,CAN)是由德国Bosch公司为汽车应用而开发的多主机串行通信协议。由于它具有抗干扰能力强、可靠性高、实时性好及易于使用等特点,已经广泛应用于工业自动化、交通工具、医疗仪器及楼宇自动化等多个领域[1]。CAN总线是唯一成为国际标准的现场总线。CAN总线具有以下特点:多主控制,总线空闲时所有单元节点都可发送消息;数据传输距离远,低速下最远距离可达10km;传输速率高,最高速度可达1Mb/s;无破坏的基于标识符的优先级仲裁,仲裁失利后转为接收;可靠的错误检测与诊断,具有错误通知和恢复功能,支持自动重发;系统的柔软性强,增减节点不影响其他节点[2]。正是基于以上的优点,使得CAN总线在工业现场应用广泛。而大多数CAN总线的使用场合都以电脑作为上位机采集数据,故需要使用CAN转USB模块进行接口转换。因此,笔者给出了一种高可靠性、低成本的CAN转USB的设计方案。

1 整体设计思路①

首先通过CAN收发器的CAN_H和CAN_L将STM32连入CAN网络中。收发器负责从总线上进行数据的收发,然后数据通过STM32内部集成的CAN控制器进行逻辑处理,得到的数据进行组织后再通过TTL转芯片USB(CH340G)与电脑的虚拟串口进行通信。整体模块结构框图如图1所示。

2 模块硬件设计

2.1 STM32F103C8T6微控制器

STM32F103C8T6芯片是由ST公司推出的基于ARM Cortex-M3内核的32位MCU,最高频率72MHz。该控制器集成度高,片上外设丰富,集成单周期硬件乘法器。内部集成多个定时器,支持3路串口。它本身集成了CAN控制器,支持CAN协议2.0A和2.0B,位通信比特率可达1Mbit/s,完全符合J1939规范[3]。

STM32内部的CAN控制器有如下特性:比特率最高1Mbit/s;发送方面,内部有3个发送邮箱,发送报文的优先级可配置;接收方面,两个3级深度的FIFO,14组过滤器,支持标识符列表和标识符屏蔽模式。这样在报文的处理上可最大程度地减少CPU的开销。

2.2 SN65HVD230 CAN收发器

SN65HVD230芯片为德州仪器推出的3.3V电压的高速CAN收发器,支持ISO 11898标准,最高速度可达1Mbit/s,最多支持120个节点,具有良好的抗干扰能力和高可靠性,具有热保护,抗瞬间干扰,开路失效保护功能。CAN收发器的电路设计如图2所示。图2中P4 Header为两脚插针,可用跳线帽来决定本模块接入CAN总线后是否启用R4终端电阻。

2.3 CH340G TTL转USB芯片

CH340G是一个USB总线的转接芯片,可以实现USB转串口、USB转Ir DA红外或者USB转打印口。在串口方式下,CH340还可以将普通的串口设备直接升级到USB总线。外围元器件需求很少,只需要晶振和电容即可。硬件全双工串口,支持通信比特率50bit/s~2Mbit/s,内置收发缓冲区。电路设计如图3所示。

3 软件设计

模块的功能为实现CAN网络与PC机通信,因此需设计相关的下位机软件进行数据处理、发送等。软件设计主要以KEIL MDK5作为集成开发环境,PC机端软件可以采用现成的串口助手。下位机软件流程框图如图4所示。

程序开始,首先进行相关的片上外设初始化,需要初始化的有系统时钟、CAN控制器相关寄存器、串口相关寄存器及中断向量表等。然后程序进入main()函数中的主循环。主循环中包含Can Config()、Uart Config()、Can To Uart Process()、Uart To Can Process()、Uart Send()及Can Send()等函数。

当PC机有数据通过串口发送到STM32时,会产生串口接收中断。PC机每次发送15个Byte(除掉了起始和结束标志),Byte0用于区分后续的数据是配置数据还是需要发送到CAN总线上的数据,若为配置数据,则调用Can Config()、UartConfig()函数对CAN的标识符、掩码、帧格式、帧类别和串口的比特率及停止位等信息按后续14Byte数据的要求进行配置;若为要发送到CAN总线上的数据,则后续的14Byte遵循如下格式(可由上位机软件按此格式生成):将ID(报文标识符,标准帧11位,扩展帧29位)、IDE(区分扩展标识符和标准标识符)和RTR(区分数据帧和远程帧)最多共计31bit数据放入Byte1~Byte4中,DLC(数据字节数)放入Byte5中,DATA0~7(数据)共计8Byte数据存入Byte6~Byte13中,最后为了防止数据出错将所有数据进行求和校验放入Byte14中。串口接收完15Byte后将数据存入temp[0]~temp[14],此时可以对数据求校验和来与temp[14]比较,查看数据是否出错,未出错则调用Uart To Can Process()将数据提取出来,放入CAN控制器的发送邮箱中,然后调用Can Send()将报文发送到CAN总线上,至此由PC机到CAN总线的数据发送完毕。

当有CAN接收FIFO中断产生后,说明标识符过滤已经通过,得到的都是需要的报文,Can T-o Uart Process()函数将接收到的报文信息进行提取,将得到的ID、IDE、RTR、DLC、DATA[0]~DA-TA[7]重新组织,放在一个unsigned char buff[14]中,将ID、IDE和RTR最多共计31bit数据放入buff[0]~buff[3]中,DLC放入buff[4]中,将DATA0~7共计8byte数据存入buff[5]~buff[12]中,最后为了防止数据出错将所有数据进行求和校验放入buff[13]中。组织完成之后,利用Uart Send()函数,将数据加上起始和结束标志后发送出去,这样CAN总线中的数据发送到PC机就完成了。当PC机接到数据后可以选择是否利用buff[13]对数据进行校验。

4 实验

将设计的模块与另一CAN节点相连接,该节点为一单片机不停地向CAN总线发送8Byte标准帧数据1、2、3、4、5、6、7、8,ID为0x211。PC机连接上模块后,利用串口助手接收的数据如图5所示。

收到的数据中AA为起始和结束标志,由于ID为0x211,数据帧RTR为0,标准帧IDE为0,这样得到前4位数据位分别为42(标准帧ID前8位)、20(标准帧ID后3位+扩展帧ID前5位得到)、0(扩展帧ID中间8位)、0(扩展帧ID后5位+0+IDE+RTR)、08(DLC),后面紧接着的8位为数据内容,之后的8E是除了起始和结束标志之外的所有数据的校验和。实验结果与设计相吻合。

5 结束语

基于STM32 32位ARM内核微控制器设计CAN转USB模块,很好地利用了微控制器内部丰富的片上外设,72MHz的频率使处理高速度的数据也不会有任何延迟。直接使用内部的CAN控制器、USART串口模块、外部的CAN收发器和USB转TTL芯片进行相关设计,整体设计硬件简单,软件稳定可靠,并且用户可根据自身需求编写相应的上位机软件,电脑上基于虚拟串口二次开发容易,是不错的低成本CAN转USB的解决方案。

摘要:在有关CAN总线通信的嵌入式设计中,经常需要PC机作为调试工具,以便在PC机上直观地观察数据,这就需要CAN转USB设备进行连接。笔者选用低成本的内部集成了CAN控制器和串口的ARM内核32位处理器STM32作为主体芯片完成CAN转USB模块的设计。该模块速度快、可靠性高,能够满足大部分场合的要求。

关键词:CAN总线,STM32芯片,CAN转USB

参考文献

[1]高军,刘晓莉,赵延明.基于LPC2292的CAN总线USB接口适配器的设计[J].化工自动化及仪表,2007,34(4):49~52.

[2]牛跃听,周立功,方丹.CAN总线嵌入式开发-从入门到实践[M].北京:北京航空航天大学出版社,2012:3~8.

[3]张河新,王晓辉,黄晓东.基于STM32和CAN总线的智能数据采集节点设计[J].化工自动化及仪表,2012,39(1):78~80.

CAN转USB 篇2

CAN (Controller area network) 总线是20世纪80年代初德国Bosch公司为解决现代汽车中控制与测试之间的数据交换而开发的一种串行数据通信协议。由于较好的解决了现场实际环境中数据的高速通信以及抗干扰等问题, 而被广泛应用于工业现场和汽车电子等领域[1,2,3,4]。对于计算机系统, 由于大多没有CAN总线接口, 因此不能直接获得工业现场CAN总线设备的数据。传统的方法都是采用基于PCI总线的CAN转接卡实现对远端CAN总线设备的控制操作。但是该方法不能实现即插即用, 并且插卡操作需要打开机箱。另外, CAN总线的数据通信也必须与配有PCI转CAN总线接口的计算机才能完成, 切换计算机比较繁琐。而USB具有使用简单、即插即用、热插拔、开放性、高速、稳定、可靠性高等优点, 特别适用于仪器仪表、虚拟仪器、数据采集设备、监控设备和加密设备等场合。因此可以采用USB接口实现CAN总线设备与PC机的数据通信, 使C AN总线的数据接入PC机变得更简便。

2、CAN总线适配器的硬件设计

CAN总线适配器电路主要由微控制器C8051F340、CPLD时序电路、CAN总线接口芯片、DC-DC隔离保护电路组成。CAN总线适配器系统框图如图1所示。

2.1 微控制器

微控制器采用C8051F340 (以下简称F340) , F340集成了全速/低速USB功能控制器, 用于实现USB接口与PC的数据通信。U SB功能控制器 (USB0) 由串行接口引擎 (SI E) 、USB收发器、1KB FIFO存储器和时钟恢复电路组成, 不需要外部元件[5,6]。USB功能控制器和收发器符合通用串行总线规范2.0版。实验测试表明:微控制器F340的US B接口与计算机之间的通信速度最快可以达到500Kbytes/s。

2.2 CPLD电路的设计

CPLD电路主要完成对CAN控制器SJA1000内部寄存器和SRAM的地址分配, 以及对相关外设间接口的数字逻辑电路的集成。通过CPLD编程可以灵活地实现单片机对S RAM的访问和对两路CAN总线控制器的读写操作。

2.3 CAN总线接口的设计

SJA1000是一个独立的CAN控制器, 符合CAN2.0规范。SJA1000可应用于多种工程领域, 尤其在系统优化诊断和维护方面。

CAN通信控制电路主要包括SJA1000独立控制器、PCA82C250总线收发器和6N137高速隔离光耦等器件。PCA82C250可以提供对总线的差动发送和接收, 从而提高了系统总线的节点驱动能力, 增大了通信距离、降低了干扰。为确保计算机的安全, 在SJ A1000与PCA82C250之间采用高速光耦6N137来隔离, 被隔离的两个部分分别使用不同的电源和地线, 以提高抗干扰性能, 确保后续电路的安全。

3、系统程序设计

3.1 微处理器程序设计

系统程序的主要功能是实现CAN总线控制器与单片机的通信, 以及单片机与PC机的USB通信。

本设计采用C语言编程, 利用中断驱动机制, 前台主程序专注于单片机的USB接口与PC机之间的数据的处理, 而后台中断程序 (ISR) 主要实现单片机与SJA1000控制器之间的数据通信。二者通过事件标志和数据缓冲区来实现, 主程序流程图如图2 (a) 所示。

3.2 CAN总线程序设计

CAN总线程序部分包括:SJA1000初始化、数据发送和数据接收。SJA1000初始化程序放在主程序开始部分, 而数据发送和数据接收采用中断方式, 以提高程序运行效率。

SJA1000必须在上电或硬件复位后设置CAN通信, 它可能会在主控制器操作期间发送一个软件复位请求, 此时SJA1000会被重新配置并再次初始化。假设上电后独立CAN控制器得到一个复位脉冲而进入复位模式, 则主控制器首先通过读复位模式/请求标志来检查SJA1000是否已达到复位模式, 然后再设置SJA1000的寄存器的状态。若工作在Peli CAN模式, 在复位模式中主控制器必须配置SJA1000控制段寄存器:模式寄存器、时钟分频寄存器、验收码寄存器和验收屏蔽寄存器、总线定时寄存器、输出控制寄存器。CAN中断程序流程图如图2 (b) 所示。

3.3 USB固件程序设计

USB固件程序设计主要完成USB设备与PC间的通信, 当USB设备接入主机时, 要经历一个枚举过程, 这是USB器件与其他器件所不同的地方。枚举过程是一个标准设备请求的过程, 主机通过枚举获取USB器件的详细信息, 以提示安装驱动程序, 此后设备才能进入正常的数据通讯。

USB固件程序设计主要目的:当USB设备连接到主机上时, 主机可以发现新设备, 然后建立连接并完成数据传输任务, 也就是能够让Windows正常检测和识别USB设备。因此在USB固件程序中, 最重要的工作就是USB描述符的定义和USB传输中断的处理。鉴于系统的高速和纠错要求, 采用块传输模式, 与F340内核之间通过中断完成数据传输。在系统采集到一包数据后, 通过USB接口将数据包传递到PC机, PC机收到正确数据后对下位机进行确定答复。若数据有误, 将向下位机请求重发, 确认与重发命令在单片机中通过PC机控制命令包的命令字识别。当USB中断到达时, F340首先通过读取USB功能控制器的三个中断寄存器C MINT、IN1INT和OUT1INT来判断中断来源, 然后根据不同的中断来源跳入相应的处理模块以进行不同的中断处理, 并在处理完毕后返回。USB中断程序流程见图2 (c) 。

3.4 USB驱动的开发

设计的驱动程序是建立在Windows W DM基础上的USB设备驱动, WDM驱动程序主要的开发工具是微软提供的软件开发包 (DDK, device driver kits) , 该软件包为驱动程序开发者提供了用于开发驱动程序所需的资源文件、编译连接程序、开发技术文档等, 再利用第三方开发工具Driver Stud io可以快速地建立USB设备驱动的框架, 只要进行少量的修改即可实现程序的正常运行, 此处不做详述。

4、实验测试

基于USB接口的CAN总线适配器实物图如图3所示。上位机采用Labview软件实现对USB转CAN装置性能的测试。测试数据传输准确率为100%。当C8051F340工作在48MHz时, USB接口与PC机的通信速度超过330k Byte/s, 最快可达500Kbytes。适配器在CAN总线数据转换, 并通过USB接口传输到上位机的传输速度大于100Kbytes/s, 可以满足工程实际的应用需求。

5、结语

本文设计的基于USB接口的CAN总线适配器实现了计算机与CAN总线设备的数据通信。与PCI接口的CAN总线转接卡相比, 具有价格低, 使用灵活方便的优点, 在实现CAN总线设备与计算机接口通信领域具有一定的实用性。

参考文献

[1]史久根, 张培仁, 陈真勇.CAN现场总线系统设计技术[M].北京:国防工业出版社, 2004.

[2]王恩怀, 李永红, 刘忠献, 等.CAN总线接口自动检测系统[J].仪表技术与传感器, 2008, 4:36-38.

[3]何青, 李红, 何子睿.基于CAN总线远程振动检测系统研究[J].振动、测试与诊断, 2009, 29 (4) :398-400.

[4]冷毅, 李青侠, 刘胜, 等.基于无线传感器和CAN总线的直接式轮胎压力检测系统[J].仪器仪表学报.2008, 29 (4) :711-717.

[5]C8051F430 Data Sheet, Rev.1.4[Z], SilicioLn aboratories, 2009.

CAN转USB 篇3

USB (Universal Serial Bus)是一种通用串行总线,是由Intel、Compaq、IBM、Microsoft等多家公司共同推出的一种新型接口,它基于连接技术,实现主机与外围设备的简单快速连接,具有快速、双向、异步传输、可热插拔等特点,方便用户使用、提供实时数据交换、灵活扩展端口等目的,满足了人们对总线易用性、扩展能力强和低成本的要求,代表了PC数据传输的发展趋势。USB在PC外设领域的传输速度从1.5Mbps的低速和12Mbps的全速提高到如今的480Mbps的高速数据传输。目前,USB总线已成为计算机领域中应用最广泛的外设总线连接规范。

CAN (Controller Area Network)总线是80年代初德国Bosch公司为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议。CAN总线属于现场总线的范畴,是一种具有很高保密性、支持分布式控制或实时控制的串行通信网络,是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维。它的应用范围遍及从高速网到低成本的多线路网络。目前,德国汽车公司和欧洲其他几个主要汽车公司的车辆控制系统都采用CAN总线,国内外的许多工业控制系统也采用了CAN总线技术。CAN总线被公认为最有前途的现场总线之一,据专家预测,CAN总线的应用寿命至少还有20年。

虽然上述两种总线的特点都比较突出,但二者在控制领域的应用仍有局限性。USB的传输距离通常不超过l0m,经常达不到工业应用要求;而CAN总线适配器与主机在传统接口上连接十分繁琐和复杂,不利于CAN总线的应用扩展。所以,本设计将传输距离较远的CAN总线技术和即插即用的USB接口技术相结合,即利用USB接口方便地实现CAN总线和主机的连接,从而有力的扩展了CAN总线的监控和管理功能,扩大了CAN总线的应用范围。

1 硬件设计

1.1 CAN接口芯片C8051F040

C8051F040是Silicon Laboratories公司生产的C8051系列单片机,集成有高速的25MIPS与8051完全兼容的微处理器内核,支持CAN2.0B技术规范的CAN控制器,最高可使51内核工作在25MHz下,对外提供两个2路UART、1路SPI、1路SMBus/I2C与外部进行串口通信;片上集成了8路12位A/D转换器,两路12位D/A转换器;2路电压比较器;集成有内部电压基准(也可接外部电压基准);64k字节Flash;4352字节数据RAM;5个16位定时器,可编程计数器阵列(PCA)等,是一种高性能的微处理器[1]。通过JTAG口可进行非浸入式在系统调试,系统设计开发时不需要外扩RAM,程序直接存储在Flash。

C8051F040作为微处理器,具有丰富的I/O端口,可提供8个数字端口,其中PO、P1、P2、P3为低端口,P4、P5、P6、P7位高端口。C8051F040丰富的外设数字资源(包括UART、SMBUS、SPI、PCA、定时器等)需要通过交叉开关配置到低端口才能使用。P4、P5、P6、P7高端口只能按字节寻址,C8051F040的工作电压虽然为2.7-3.6V,但其I/O端口均与TTL电平兼容。对外部扩展存储器和存储器映射的I/O设备可采用总线复用模式和非复用模式扩展。

1.2 USB接口芯片CH375

USB接口采用CH375,它是USB通用设备接口芯片,完全满足USB 1.1标准,具有8位数据总线D[0~7],接口地址输入A0、读RD#、写WR#、片选CS#及中断输出INT#,可以方便地挂接到微处理器的数据总线上[3]。

在PC计算机端,CH375芯片的驱动程序以及动态链接库等软件为PC计算机应用层提供了应用层接口,即将CH375芯片的驱动程序、动态链接库拷贝到上位PC计算机中,利用CH375动态链接库DLL提供的API接口函数对其进行操作,对USB总线的访问及通信控制就非常简单了。

1.3 系统硬件结构

根据C805 1F040集成CAN控制器的结构,在硬件中通过光电隔离器件6N137及CAN接口器件82C250直接与C AN总线连接,其连接较方便。

而USB总线接口采用通用接口芯片CH375,它具有8位数据总线和读、写、片选信号控制线及中断输出,可以方便地挂接到微处理器的系统总线上。CH375地址数据线共用,即采用地址数据线复用模式进行数据交换,用微处理器C8051F040的P4.5、P4.6、P4.7即RD、WR、P2.0和外部存储器接口P7双向地址数据线AD[0-7]实现相应的地址和数据读写操作。加一片选信号P2.1以控制并分配CH375的有效地址,CH375通过外部中断INT的方式与微处理器进行通信[3,4,6]。图1是系统硬件接口电路。

2 软件设计

微处理器C8051F040以CH375与上位PC计算机之间的USB通信作为桥梁,使CAN与PC机进行通信,进行CAN总线数据的信息交换,因此,接口软件开发包括对CH375的USB通信任务及对CAN通信编程[2]:CAN接口的初始化,接收CAN总线信息,上传到PC计算机,并把PC计算机的信息下传到CAN总线;对CH375进行初始化,完成USB总线连接过程,并组织和管理USB和PC计算机之间的数据交换和传输[5]。开发软件采用Keil 51集成开发环境,并采用C语言进行编程。

2.1 USB接口软件

CAN接口软件开发包括微处理器C8051F040交叉开关的配置、设置外部存储器接口P7采用数据地址复用总线方式,作为C8051F040和CH375的硬件接口,P2.0、P4.5、P4.6作为地址锁存、读写信号控制。CH375占用两个地址位,当AO引脚为高电平时选择命令端口,此时可以写入命令,当AO引脚为低电平时选择数据端口,此时可以读出数据。它通过微处理器的P7口对CH375芯片进行读写,所有操作大多由一个命令码、若干输入数据和若干输出数据组成;部分命令不需要输入数据,部分命令没有输出数据。USB通信接口程序包括3部分:初始化,用微处理器C8051F040对CH375及外围接口的初始化,主循环:发送USB请求,处理USB事件和用户处理事件;中断服务程序:对CH375产生中断进行处理。图3 (a)和图3(b)是USB中断发送和中断接收程序流程图。

2.2 CAN接口软件

由于CAN控制器模块是集成在微处理器C8051F040内,相应地软件设计及软件设计的硬件配置部分没有USB接口复杂。CAN接口软件开发包括微处理器C8051F040交叉开关的配置、CAN接口初始化,中断处理程序等。图4是CAN中断处理流程图。

3 结束语

本文介绍的USB-CAN总线转接系统实现了预期的目标。采用CH375进行USB数据传输率高,达到1Mbps以上,方便地从RS232转向USB总线,弥补其通信传输率低的缺点,实现了数据传输及系统升级,为CAN总线和PC计算机的连结提供了一个方便而实用的USB接口。

参考文献

[1]C801F04x mixed-signal ISP flash MCU family[Z].2002.

[2]Bosch.CAN specification 2.0[Z].

[3]刘红艳,于复生.8051单片机与U盘的接口设计[J].电子元器件应用,2006.

[4]智兆华,张鹏.USB接口芯片CH375的原理及应用[J].近日电子,2005(8).

[5]Universal serial bus specification,1998.

CAN转USB 篇4

关键词:USB 接口,CAN 总线,微控制器,智能适配卡

随着信息技术的飞速发展,各种数据的实时采集和处理在现代工业控制中已经成为必不可少的部分,这就要求现场设计的接口简单灵活且具有较高的数据传输率。控制器局域网CAN(Controller Area Network)总线属十现场总线的范畴,是一种具有高可靠性、支持分布式控制和实时控制的串行通信总线标准。传统的适配卡设计方案中,CAN总线网络与计算机的连接通常采用的是RS232、ISA或者PCI接口,但是随着计算机接口技术的迅速发展,ISA接口已经逐渐被淘汰。RS232接口数据传输率太低,PCI接口虽然可以实现高速传输,但其主要缺点是占用有限的系统资源,设计复杂,并且无法用于便携式计算机的扩展,必须有高质量的驱动程序保证系统的稳定。USB技术正是顺应接口技术发展而提出的一种快速、双向、同步传输、廉价的并且可以进行热插拔的通用串行总线。

本文设计了基于USB接口的CAN总线适配卡的硬件结构和软件实现方案。该适配卡既可以对数据起到转发的作用,即收集CAN总线上各个节点的数据,转发给上位机,并把上位机的命令和数据发给各节点;也可以完成对CAN总线上的用户系统的部分监控管理工作,故又被称为智能适配卡[1]。通过在矿井等特殊现场环境下的实践应用,证明该适配卡具有良好的抗干扰能力和高速的传输性能。

1 智能适配卡的硬件结构

适配卡的硬件电路主要由微控制器、CAN总线接口、USB总线接口和信号隔离模块等部分组成,如图1所示。

1.1 AT89C52微控制电路

AT89C52是一个低电压、高性能CMOS 8位单片机,片中内置有8KB可反复擦写的Flash存储单元和256B随机存取数据存储器RAM,功能强大。AT89C52是该接口电路的控制核心,其中P0、P2口用作16位数据I/O口,P1、P3口用作控制。

微控制器负责对USB设备控制器和CAN控制器进行控制。在微控制器内部驻留有USB通信协议和CAN通信协议,完成USB通信协议和CAN总线通信协议转换,实现USB接口和CAN接口通信数据的透明传输[2]。

1.2 USB接口电路

本设计中USB控制芯片采用Philips公司的PDIUS-BD12。该芯片是一款性价比很高的USB器件,内部集成了串行接口引擎SIE、存储器管理单元MMU、集成RAM、模拟收发器以及电压调整器,可与任何外部微控制器实现高速数据传输的并行接口(2MB/s)。提供3个端点,其中主端点(端点2)的双缓冲配置增加了数据吞吐量并轻松实现实时数据传输。

PDIUSBD12与微控制器的接口有二种方式:多路地址/数据总线方式、单地址/数据总线方式。在本设计中,采用的是前一种方式,即使用了AT89C52的INT0、ALE、WR、RD和P0口,A0脚接地,当PDIUSBD12接收到主机的有效信息时,会产生一个中断通知AT89C52进行处理。若微控制器的输出地址为奇数,则表示对PDIUS-BD12发送指令;若输出地址为偶数,则表示对PDIUS-BD12进行数据传输。AT89C52将数据经PDIUSBD12的并行接口送入FIFO存储器。对微控制器而言,PDIUS-BD12看起来就像1个带8位数据总线和1个地址位的存储器件。由于在USB的信号传递过程中会掺杂进瞬间的高压噪声,这些噪声对USB口的收发电路将产生致命的危害,因此需要对这些噪声电压进行抑制。在USB接口电路设计中,使用了SN75240,它可以对USB接口中的不正常电压进行有效的抑制,以保证硬件设备的安全[3]。

1.3 CAN总线电路

在本设计中,CAN总线控制器采用Philips公司生产的SJA1000,它作为一个发送、接收缓冲器,实现主控制器和总线之间的数据传输。CAN总线控制器接口芯片采用PCA82C250,它是CAN总线控制器和物理总线的接口,可以对总线提供不同的发送能力和对CAN控制器提供不同的接收能力。为了增强CAN总线的抗干扰能力,SJA1000的TX0和RX0并不是直接与PCA82C250的TXD和RXD相连,而是通对高速光电耦合器6N137后与PCA82C250相连。这样就很好地实现了总线上各CAN节点间的电气隔离,如图2所示。不过应注意:光耦部分电路所采用的两个电源Vcc和Vdd必须完全隔离,否则采用光耦就会失去意义。电源的完全隔离可采用小功率电源隔离模块,或带+5V隔离输出的开关电源模块实现。

2 智能适配卡的软件设计

适配卡的软件设计主要包括CAN通信软件设计、USB设备端通信软件设计、USB设备驱动程序设计和应用程序设计四大部分。

2.1 CAN通信软件设计

CAN通信软件设计主要包括三大部分:初始化CAN控制器SJA1000、发送数据模块和接收数据模块。同时还包括一些数据溢出中断及帧出错的处理。初始化CAN控制器SJA1000主要用来实现CAN控制器工作时的参数设置,这些初始化的内容包括硬件使能CAN控制器、设置CAN报警界限、设置CAN总线波特率、设置中断工作方式、设置CAN验收过滤器的工作方式、设置CAN控制器的工作模式等[4]。这些功能主要是通过设置各寄存器予以实现。

微控制器AT89C52将USB总线送来的数据转换为符合CAN发送帧格式的数据,通过调用CAN发送数据模块将该数据从CAN控制器SJA1000转发。微控制器AT89C52调用CAN接收数据模块接收来自CAN总线的数据,并把数据转换为符合USB发送帧格式的数据,将该数据通过PDIUSBD12进行转发[5]。CAN通信软件整体工作流程如图3所示。

2.2 USB设备端通信软件设计

USB设备端通信软件设计主要包括PDIUSBD12的硬件驱动层、USB接口控制驱动层、USB协议层和USB应用层软件设计[6]。

2.2.1 PDIUSBD12的硬件驱动层软件设计

PDIUSBD12硬件驱动层主要任务是初始化PDIUS-BD12与AT89C52连接的配置,复位PDIUSBD12并建立PDIUSBD12与AT89C52的通信函数。

2.2.2 USB接口控制驱动层软件设计

USB接口控制驱动层的主要任务是实现PDIUSBD12的各种功能,包括地址使能、读取端点数据、向端点写入数据和设置DMA等,该层中的功能函数通过调用PDIUSBD12硬件驱动层的各函数予以实现。

2.2.3 USB协议层软件设计

USB协议层的主要任务是处理标准的USB设备请求以及特殊的厂商请求。USB主机通过标准USB设备请求,可设定和获取USB设备的有关信息,完成USB设备的枚举。所有的请求都是通过PDIUSBD12的端点0接收和发送SETUP包来完成。

2.2.4 USB应用层软件设计

PDIUSBD12支持所有的四种USB数据传输方式。本文适配卡的设计中使用了控制传输、中断传输和批量传输。控制传输只用来传递控制信息,固定使用端点0;中断传输使用端点1,用来传送CAN网络状态信息;批量传输使用端点2,用来实现主机和CAN网络节点之间的数据传送。

PDIUSBD12具有完善的中断机制,微控制器AT89C52可以通过读PDIUSBD12的中断寄存器获得总线事件。为了提高USB应用层软件的运行效率,主程序对系统进行初始化后开放中断,在中断服务程序中对事件进行分析和必要的处理,并设置相应的变量标志和数据缓冲区。主程序则循环查询变量标志,调用相应的子程序进行处理。这种程序结构使得主程序能够在前台处理各种数据传送任务,同时又可以通过中断在后台及时处理总线事件,有力地确保了最佳的传输速率和更好的软件结构,同时简化了编程和调试[7]。PDIUSBD12中断服务程序如图4所示。

2.3 USB设备驱动程序设计

USB设备驱动程序采用的是WDM(Windows Driver Mode)类型。WDM属于操作系统的内核模式,其驱动程序由运行于内核模式的系统代码组成。WDM设备驱动模型与先前的VXD型驱动程序相比,降低了所需驱动程序的数量和复杂性,简化了驱动程序的开发[8]。

本文采用DriverStudio开发工具进行开发。DriverStudio包含VtoolsD、softICE和DriverWork等工具,通过DriverWorks的开发向导Driver Wizard生成驱动程序框架,在其生成的代码框架中再加入对设备上LED灯的控制操作,实现一个完整的USB设备驱动程序。在生成驱动程序的同时,可以同时生成驱动程序的测试程序。编译运行DriverWorks生成的驱动测试程序,能够发现此设备驱动运行是否良好,并能够实现对设备上的LED灯的控制。

2.4 应用程序设计

对于广大用户而言,与系统的交互是通过应用程序实现,而且整个系统的主要数据处理都在这里完成。因此,运行效率高、界面友好、具有强大数据分析和处理的应用程序的设计,也是系统设计上一个不容忽视的关键因素。应用程序设计的关键是实现从USB外设读取或发送特定数量的数据,本设计中采用Visual C++6.0作为应用程序的开发环境。

CAN总线与USB总线作为流行的、先进的总线技术都具有广泛的应用和发展前途。本设计通过结合USB与CAN的优点连接扩展了USB在工业控制中的功能,同时大大简化了工业控制与PC机之间的数据通信,具有十分广泛的应用价值。本设计已经完成,并在矿井下数据传输中得到应用,取得了良好的现场应用效果。

参考文献

[1] 张延宇,曹云侠.基于 USB 的 CAN 适配卡的设计与实现[J].微计算机信息,2006,22(1) :6-8.

[2] 高强,任恩恩,张涛.CAN 总线的 PCI 接口通信卡设计[J].电子技术应用,2007,33(7) :122-124.

[3] 周立功.PDIUSBD12固件编程与驱动开发[M].北京:北京航空航天大学出版社,2003.

[4] 律德才,马峰.CAN 总线控制器 SJA1000的原理及应用[J].电测与仪表,2002,(4) :57-59.

[5] CENA G,VALENZANO A.FastCAN:A high-performance enhance CAN-like network[J].IEEE Transactions on Industrial Electronics,2000,47 (4) :951-952.

[6] 高军,刘晓莉,赵延明.基于 LPC2292的 CAN 总线 USB 接口适配器的设计[J].化工自动化及仪表,2007,34(4) :49-52.

[7] 张红彩,赖联琨,姜学东.USB 总线在 CAN 接口卡上的应用与设计[J].自动化与仪表,2006,(3) :27-30.

CAN转USB 篇5

控制器局域网 (CAN) 是德国BOSCH公司于1986年为解决汽车内部测量与执行部件之间的数据通信而开发的一种串行数据通信协议。它的网络模型结构包括物理层、数据链路层和应用层, 以双绞线为信号传输介质, 通信速率最高可达1Mbps (40m) , 直接传输距离最远可以达到10km (5Kbit/s) , 每条总线可挂接设备多达110个, 特别适用于实时性要求很高的网络。由于其多主的工作方式、优良的稳定性和实时性能、成熟的仲裁和同步技术, 加上开放式总线结构、短报文高速通讯、远程通讯能力、超强的纠错和扩展功能, 以及控制简单、应用成本低等优点, 已经被越来越多地应用到广大网络控制系统领域, 并被公认为最有前途的现场总线技术之一。

USB (通用串行总线) , 是1995年以Intel为首的7家公司推出的一种协议规范, 用以实现将计算机的各种外围接口统一起来, 用带四根线 (两根电源线和两根数据线) 的接口来实现任意设备和PC机间的通讯。具有即插即用, 软硬件支持广泛、低功耗、价格低、数据传输率高、扩充性好、使用灵活、硬件结构标准化高和完备的总线拓扑结构等特点, 因此USB自问世以来, 显示出了强大的生命力, 在以计算机为上位机的控制系统中, 得到广泛的应用。

随着计算机技术的飞速发展, PC已经把USB采纳为通用总线和通用接口标准的控制器几乎已经成为各个领域操控终端的首选。通过USB接口, 在安装必要的应用软件和驱动程序之后, PC能接入到各个控制系统中去。因此, 为了提高应用的高效率、操控的便利性, 把USB的通用型和CAN的专业性结合起来, 达到优势互补, 有必要设计一种高速USB2.0-CAN适配卡, 以实现USB2.0通信协议与CAN总线通信协议的转换。

系统结构

系统主要包含三部分:微控制器、USB接口和CAN接口的控制部分 (见图1) 。其中C8051F040作为系统微控制器。USB接口功能控制器采用CP2102 USB转UART桥接芯片。其中C8051F040作为CAN总线控制器负责与CAN网络交换数据, CP2102实现USB口信息格式与串口格式的转换, 最后由C8051F040操作串口与CP2102交换数据, 实现USB2.0到CAN总线协议的转换。

硬件实现

CP2102

CP2102是Silicon Labs公司的USB转UART桥接芯片, 具有集成度高、速度高、价格低廉、开发简单等特点, 能够用最简单的外部电路, 最少的外部器件简便地实现USB到UART的转换。CP2102包含USB2.0全速功能控制器、USB收发器、振荡器和带有全部的调制解调器控制信号的异步串行数据总线 (UART) 。

微控制器

系统采用Silicon Laboratories公司推出的混合信号系统级单片机C8051F040作为系统的控制器, 内部集成的CAN控制器包括一个CAN内核、消息RAM (独立于CIP-51内核) 、消息处理单元、控制寄存器等, 但没有提供物理层驱动器, 要实现与CAN总线的接口, 还需接口控制器, 例如82C250、TJA1050等。数据接收和滤波都是由CAN控制器完成的, 不需要CIP-51内核的参与, 通过这种方式使CAN通讯时占用的系统资源最小。CIP-51内核通过其内部的特殊功能寄存器来配置CAN控制器以及实现数据交互。

电路设计

系统电路如图2所示, 由CP2102、C8051F040、CAN驱动芯片PCA82C250以及光电隔离芯片6N137等组成。当在总线上检测到终止信号时, CP2102将进人终止模式。在进人终止模式时, CP2102会发SUSPEND和SUSPEND信号。但是, SUSPEND和SUSPEND在CP2102复位期间会暂时处于高电平。为避免这种情况出现, 需要用一个l0kΩ的电阻来确保在复位期间保持在低电平。PCA82C250是CAN收发器, 可增加总线驱动能力, RS端接地相连, 系统处于高速工作方式。6N137是光电隔离芯片, 6N137实现智能节点与CAN总线之间的电气隔离, 不仅提高了节点的可靠性和系统的抗干扰能力, 而且也保护了总线及总线上的其它节点。总线两端124Ω的电阻对, 防止通信信号传输到导线端点时发生反射。

USB与CAN之间协议转换的实现

设计在充分遵守USB和CAN协议的基础上, 实现了USB数据与CAN数据之间的协议转换和转发。USB的高速率和CAN的低速率、USB的大数据包和CAN的小数据包之间存在着矛盾, 必须认真解决, 否则可能会造成数据丢失, 协议转换不可靠, 设备工作不稳定。本设计中USB和CAN都采用了接收中断方式, 将USB和CAN的数据包先存储下来, 作为缓冲再进一步处理。在中断服务程序的数据接收时, 只有将数据准确地收取下来, 才将接收缓冲区释放, 在此之前拒绝接收新的数据。在数据发送时, 先确认发送缓冲区可用于写入数据。由于两端接口芯片都有内部的发送和接收缓冲区, 主程序的主要任务就是完成数据的转发, 以及提供通信同步的握手协议, 防止数据丢失和顺序错误。

相对于CAN总线传输速率, USB总线速率要高得多, 128字节的缓冲区也比CAN总线芯片8字节缓冲区大得多, 因此, 向CAN接口发送数据需要完成拆包和重新打包的任务, 属较慢操作, 采用定时查询式发送。CAN接收任务每次直接转发CAN接口收到的8字节数据到USB接口发送缓冲区, 采用两个信号量 (CAN-rcv, USB-wr) 完成数据同步操作。数据转发工作共有4个任务协调配合完成:

USB中断后续处理任务

CP2102接收到数据或发送完成都会触发中断程序运行。中断处理程序只需要简单地通知此任务有中断发生。这个任务的优先级最高。此任务根据USB接口的不同中断原因, 通知其他任务进行后续的数据处理或转发工作。

控制端点信息处理任务

当USB接口接收到主机发来的USB协议信息时, 此任务得到通知。根据主机的要求, 按照USB协议规范的数据格式对主机应答。主要用于USB设备枚举阶段, 与主机之间的信息交换。其它时间, 此任务不占用处理器时间。

CAN总线发送任务

当USB接口有新的数据要转发到CAN总线时, USB中断后续处理任务通知此任务运行。读出USB芯片接收缓冲区中的数据到内存缓冲区, 然后分解成小于等于8字节数据包, 增加CAN总线协议数据包头, 送入C8051F040的发送缓冲区。CAN发送任务每次等待USB接收中断触发USB_rd信号量后, 开始读取CP2102接收缓冲区数据到内存数组Ep2out_Buf[128], 然后采用查询式发送方式, 将数据送到C8051F040的发送缓冲区, 每次8字节。在查询过程中, 如果C8051F040处于正在发送中, 将任务休眠3个时钟嘀嗒<5ms) , 然后再次查询, 避免长时间占用处理器。

CAN总线接收任务

当CAN总线接收到数据后, 由于数据包最多只有8个字节, 因此可以一次放入USB接口芯片发送缓冲区, 由主机读取。CAN接收中断首先读C8051F040中断寄存器, 清除中断标志。然后触发CAN-rcv信号量, 使CAN接收任务得以运行。CAN接收任务然后等待USB发送完成中断触发USB-wr信号量, 表示USB接口可以发送新的数据。由于U S B接口缓冲区较大, 并且发送速度快, CAN接收任务直接将C A N接收到的数据, 送入USB接口芯片CP2012的发送缓冲区。然后打开C A N接收中断。

结语

本设计在充分遵守USB和CAN协议的基础上, USB和CAN都采用了接收中断方式, 通过通信同步的握手协议, 实现了USB数据与CAN数据之间的协议转换和转发, 很好的解决了USB的高速率和CAN的低速率、USB的大数据包与CAN的小数据包之间的矛盾, 能够保证数据完整, 协议的可靠转换。使CAN的专业化操作和实践通过USB变得更加灵活方便。

参考文献

[1]CP2102DataSheet[Z].Silicon Laboratories, 2005

[2]C8051F040Datasheet[Z].Silicon Laboratories, 2003.

[3]潘琢金, 施国君.C8051Fxxx高速SOC单片机原理及应用[M].北京:北京航空航天大学出版社, 2002

[4]PC-USB2.0-CAN转接卡及其AVRGCC语言实现[J].微计算机信息, 2007年, 23卷第2期:299-301

[5]马伟.计算机USB系统原理及其主/从机设计[M].北京:北京航空航天大学出版社, 2004

[6]饶运涛.现场总线CAN原理与应用技术[M].北京:北京航空航天大学出版社, 2003

[7]杨春杰, 亢红波.基于CAN总线的双通道智能网桥设计及常见问题分析[J].航天制造技术, 2007年第3期

CAN转USB 篇6

本设计基于ARM9处理器和SJA1000CAN控制器,能较好地以低成本实现USB与CAN之间的传输。此转换器可以作为“测试工具”应用于汽车电子,也可以作为“工业控制设备”应用于工业控制现场。

1 模块结构的总体设计

本设计将具有远距离传输能力的CAN总线与即插即用的USB接口相结合,即利用USB接口方便的特性来实现CAN总线和主机的连接。并且扩展了8路通道的CAN总线,高效地扩大了CAN总线的应用范围。USB-CAN转换器的总体框图如图1所示。

图中,RS232串口用于系统的调试,RJ45接口用于调试同时也作为将来系统的扩展使用。本设计自带8路CAN接口和2路LIN接口,实现USB与CAN总线的数据双向传输。

2 硬件设计

2.1 ARM处理器和USB接口的设计

本设计的核心处理器是ARM9系列的S3C2440。考虑到三星S3C2440是BGA封装,需要特殊的焊接工艺,所以本设计采用核心板+底板的形式。核心板的外部存储器配置是64 MB SDRAM和64 MB NAND Flash。

更重要的是,S3C2440内置了USB控制器,无需再外扩USB控制器,节省了成本。其内置USB控制器完全兼容USB1.1协议,支持全速设备;集成USB收发器,支持Control、Interrupt和Bulk 3种传输模式;具备5个FIFO的通信端点,其中Bulk端点支持DMA操作方式,接收和发送均由64 B的FIFO完成;支持挂起和远程唤醒功能。

在USB接口设计上,为了避免由于外部设备或电缆中介入高电压干扰,造成计算机USB接口甚至主板的烧坏,本设计还考虑了USB接口的隔离保护,并选用SN65220芯片作为接口的保护芯片,其电路如图2所示。

图中,USB_SELECT是微处理器用来控制USB设备与主机连接的信号。当主机集线器检测新设备时,集线器监视着每个USB设备端口的信号电压,集线器端口的2根信号线的每1根都有15 kΩ的下拉电阻,而每一个设备在DP1(即D+)都有1个1.5 kΩ的上拉电阻。当用USB线将PC和USB设备接通后,设备的上拉电阻使信号线的电位升高,因此主机集线器可以检测到USB设备[1]。本设计使用USB_SELECT来控制1.5 kΩ的上拉电阻,当处理器给USB_SELECT1个高电平时,这时DP1信号线上的电压升高,主机集线器就会检测到此USB设备,然后开始USB的设备枚举;当USB_SELECT为低电平时,则表示没有设备连接到主机。这样就可以通过USB_SELECT信号的高低来控制设备与主机的连接。

2.2 CAN节点的设计

CAN节点使用Philips公司的独立CAN总线控制器SJA1000,收发器采用高速的TJA1050,它增强了电磁兼容(EMC),且在不上电的时候使总线呈现无源特性。CAN单元模块负责CAN信息帧的收发和CAN协议的实现,接口管理逻辑负责同外部主控制器的接口,该单元的每1个寄存器都可以由主控制器通过SJA1000的地址/数据复用总线访问。

SJA1000提供的微处理器的接口信号主要有AD0~AD7共8根地址数据复用线,以及ALE、CS、RD、WR、MODE、RESET和INT信号。其中,MODE为接口方式选择信号,本设计将MODE接VCC高电平,选用Intel模式。接口电路如图3所示。

RESET复位信号由主控制器S3C2440统一控制,振荡信号CLK由1个16 MHz的晶振统一提供。另外,ALE、CS、RD、WR和INT信号需要经过CPLD接口逻辑转换后才能与SJA1000连接。当芯片被片选信号CS选中后,地址信号首先出现在复用总线上,经ALE信号锁存后才可以对数据进行读写操作[2]。

由于系统设计的是8通道CAN的转换器,所以共有8个CAN单元并列组成CAN通信模块。其8通道的数据地址总线扩展的主要思想是把每个SJA1000(CAN控制器)的寄存器映射到ARM9内存地址空间的某个地址,通过内存访问指令,访问SJA1000的内部寄存器。

2.3 复杂可编程逻辑器件(CPLD)的设计

由于微处理器S3C2440的地址与数据总线是分离的,而SJA1000的数据与地址线是分时复用的,两者总线接口之间存在差异性,因此必须对S3C2440的读写时序进行逻辑变换,使其满足SJA1000的接口要求才能使二者配合工作。

本模块选用了Altera公司的MAX3000系列可编程逻辑器件EPM3128芯片。EPM3128具有128个宏单元,80个用户I/O管脚,2 500个可用门和ISP,管脚间延迟为10 ns,计数器速度可高达100 MHz,可以很好地满足系统的需要。

在本设计中,CPLD需要完成2个功能:(1)完成S3C2440的地址数据非复用总线到SJA1000的地址数据复用总线的双向转换;(2)通过对S3C2440的地址线译码,进行多通道扩展(本设计扩展为8通道)。

通过对S3C2440与SJA1000读写时序的分析,可用如下的逻辑关系来完成2种不同总线的转换:

其中,ALE、CS、WR、RD是SJA1000的总线控制信号,n GCS2、n WE、n OE、A0为S3C2440的总线控制与地址信号。根据以上的逻辑关系,利用Quartus II的原理图输入方式,可以得到如图4所示的单通道的硬件图。

8通道的扩展,则利用更多的地址线编码,再通过CPLD译码即可实现。

3 软件设计

3.1 系统的总体设计方案

USB-CAN转换器的工作方案如下[3,4]:

(1)下行传输:上位机输出数据发送到USB设备。上位机可以在任意时间按照协议要求把数据发送到USB设备的缓冲区,USB设备尽快把缓冲区中的数据发送到CAN总线。

(2)上行传输:USB缓冲区中的数据输入到上位机。首先,USB设备通过查询方式不断检查CAN总线是否有输入的数据,若有数据存入CAN缓冲区,上位机输出“读CAN总线请求”到USB设备,USB设备再根据请求的内容确定是否获取到需要的数据,将获取到的数据写入USB设备的发送缓冲区;若没有数据存入CAN缓冲区,则按照协议的格式,回应“没有收到数据”。

3.2 CAN节点的软件设计

CAN总线节点的通信程序主要包括3个部分:CAN初始化、数据的发送和数据的接收。初始化程序主要是对SJA1000的初始化设置,包括:工作方式的设置、接收滤波方式的设置、接收屏蔽寄存器和验收代码寄存器的设置、波特率的设置和中断允许寄存器的设置。SJA1000的初始化工作要在复位模式下才能进行。初始化设置后就可以回到工作状态,进行正常的通信任务。CAN控制器的初始化是CAN总线系统设计中极为重要的一个部分,是系统正常工作的前提[5]。初始化过程如图5所示。CAN控制器从上电到正常工作,一般需要经过硬件和软件的配置。软件的初始化函数为:

int SJA1000_Init(struct Can Config&config,unsigned char channel);

参数说明:struct Can Config是SJA1000配置信息的结构体;channel是通道选择,如果成功则返回0,如果不成功,则返回不为0。

对于数据的发送程序,发送时用户只需将待发送的数据按特定格式组合成1帧报文,送入SJA1000发送缓冲区中,然后启动SJA1000发送即可。每帧发送之后,可以通过发送中对安置软件发送成功标志,发送程序通过对成功标志的查询来进行相应的处理。其实现函数如下:

void SJA1000_Write(struct Can Frame&frame,unsigned char channel);

参数说明:struct Can Frame结构体是CAN的帧格式,channel是通道选择。

接收程序要比发送程序复杂,采用中断接收方式,这样可以更有效地接收数据。通过读取SJA1000中断状态寄存器进行接收及出错处理。其中断函数如下:

void__irq SJA1000_Read Data(void)。

CAN总线是一种比较成熟的现场总线,目前被广泛应用于汽车电子和工业控制。而USB总线是PC机广泛采用的接口设备。多通道的USB-CAN转换器可以在大型的CAN网络的应用中提供一个方便的USB接口,大大简化了现场总线与PC机之间的数据通信。因此本设计具有很强的实用性,具有良好的应用前景。

摘要:介绍了基于嵌入式系统的USB与多通道CAN转换器的设计。将USB总线与CAN总线的特点相结合,使上位机能够通过USB接口同时监视多个CAN通道(最多8个),完成USB总线与CAN总线的数据双向传输。

关键词:嵌入式系统,USB总线,CAN总线,CPLD

参考文献

[1]萧世文,宋延清.USB2.0硬件设计[M].北京:清华大学出版社,2006:23-49.

[2]廖济林.USB2.0应用系统开发实例精讲[M].北京:电子工业出版社,2006:72-75.

[3]王黎明.CAN现场总线系统的设计与应用[M].北京:电子工业出版社,2008:103-127.

[4]林新兵.基于嵌入式系统的USB-CAN协议转换器的设计与实现[D].中国海洋大学,2006:32-35.

【CAN转USB】推荐阅读:

上一篇:工艺设备论文下一篇:模糊PID串级控制

本站热搜

    相关推荐