当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]引言控制器局域网(CAN) 是德国BOSCH公司于1986年为解决汽车内部测量与执行部件之间的数据通信而开发的一种串行数据通信协议。它的网络模型结构包括物理层、 数据链路层和

引言

控制器局域网(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总线协议的转换。

 

图1 USB2.0-CAN适配卡框图

硬件实现

CP2102

CP2102是Silicon Labs公司的USB转UART桥接芯片,具有集成度高、速度高、价格低廉、开发简单等特点,能够用最简单的外部电路,最少的外部器件简便地实现USB到 UART的转换。CP2102 包含USB2.0全速功能控制器、USB收发器、振荡器和带有全部的调制解调器控制信号的异步串行数据总线(UART)。CP2102的内部结构如图2所示,内置有与计算机通信的协议,工作时,提供的免费的实用COM口器件驱动器允许一个基于CP2102的产品作为的一个口使用,也就是通常所说的产生一个虚拟的口,电路无需任何外部的USB器件即可工作,工作特性可以满足CAN总线的传输波特率要求。

 

图2 CP2102的内部结构图

微控制器

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

电路设计

系统电路如图3所示,由CP2102、C8051F040、CAN驱动芯片PCA82C250以及光电隔离芯片6N137等组成。CP2102 的RTX、TXD引脚分别是串口的接收、输出端,与单片机的对应引脚相连。USB的终止和恢复信号支持功能便于CP2102器件以及外部电路的电源管理。当在总线上检测到终止信号时,CP2102将进人终止模式。在进人终止模式时,CP2102会发SUSPEND和信号。但是,SUSPEND和在 CP2102复位期间会暂时处于高电平。为避免这种情况出现,需要用一个l0kΩ的电阻来确保在复位期间保持在低电平。PCA82C250是CAN收发器,可增加总线驱动能力,Rs端接地相连,系统处于高速工作方式。6N137是光电隔离芯片,CAN总线信号CANTX和CANRX从C8051F040 出来后先分别经过高速光耦6N137进行电气隔离,再经过CAN总线控制器接口芯片82C250驱动,然后接到CAN数据线上。6N137实现智能节点与 CAN总线之间的电气隔离,不仅提高了节点的可靠性和系统的抗干扰能力,而且也保护了总线及总线上的其它节点。总线两端124Ω的电阻对,防止通信信号传输到导线端点时发生反射。

 

图3 适配卡的硬件设计

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个任务协调配合完成:[!--empirenews.page--]

(1) USB中断后续处理任务

CP2102接收到数据或发送完成都会触发中断程序运行。中断处理程序只需要简单地通知此任务有中断发生,以尽量减少中断关闭的时间。因此,这个任务的优先级最高,并且一旦开始运行不再等待其它事件,尽快处理完成。此任务根据USB接口的不同中断原因,通知其他任务进行后续的数据处理或转发工作。

(2)控制端点信息处理任务

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

(3) CAN总线发送任务

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

(4) CAN总线接收任务

当CAN总线接收[6]到数据后,由于数据包最多只有8个字节,因此可以一次放入USB接口芯片发送缓冲区,由主机读取。此任务很少占用处理器时间。主要是为了协调CAN总线与USB总线之间数据转发的同步,使数据包按照原来的顺序接收到,并且不覆盖尚未发送的上一个数据包,避免数据丢失。 CAN接收中断首先读C8051F040中断寄存器,清除中断标志。然后触发CAN-rcv信号量,使CAN接收任务得以运行。CAN接收任务然后等待 USB发送完成中断触发USB-wr信号量,表示USB接口可以发送新的数据。由于USB接口缓冲区较大,并且发送速度快,CAN接收任务直接将CAN接收到的数据,送入USB接口芯片CP2012的发送缓冲区。然后打开CAN接收中断。

结语

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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭