0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

高速USB2.0-CAN适配卡的应用及实现方案

牵手一起梦 来源:电子产品世界 作者:王洪义;李坚;陶涛 2021-05-05 17:02 次阅读

作者:王洪义;李坚;陶涛

控制器局域网(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的内部结构图

微控制器

系统采用SiliconLaboratories公司推出的混合信号系统级单片机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个任务协调配合完成:

(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变得更加灵活方便。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    16332

    浏览量

    177812
  • 接口
    +关注

    关注

    33

    文章

    8575

    浏览量

    151021
  • usb
    usb
    +关注

    关注

    60

    文章

    7936

    浏览量

    264483
收藏 人收藏

    评论

    相关推荐

    基于VxWorks操作系统实现PC/104-CAN适配卡的驱动系统设计

    PC/104-CAN适配卡主要由CAN控制器(SJA1000)、光电隔离(6N137),收发驱动器(82C250)及译码电路组成。编程主要了解的是控制器SJA1000。CAN
    的头像 发表于 09-08 17:51 3694次阅读
    基于VxWorks操作系统<b class='flag-5'>实现</b>PC/104-<b class='flag-5'>CAN</b><b class='flag-5'>适配卡</b>的驱动系统设计

    求一种CAN适配卡驱动程序的设计方案

    CAN总线技术CAN适配卡驱动程序的设计与实现基于WinCE环境的CAN适配卡驱动程序的设计与
    发表于 04-23 06:43

    如何利用VxWorks操作系统实现PC/104-CAN适配卡的驱动系统设计

    求一种基于VxWorks操作系统实现PC/104-CAN适配卡的驱动系统设计
    发表于 04-28 06:17

    请问怎样去设计一种USB2.0高速主机适配卡

    怎样去设计一种USB2.0高速主机适配卡?如何对USB2.0高速主机适配卡进行测试验证?
    发表于 05-28 06:39

    CAN总线分布式系统适配卡和控制单元设计

    介绍CAN总线分布式系统中适配卡和控制单元的硬件组成及软件的设计方法, 给出硬件原理图;详细分析SJA1000的初始化方法、验收滤波器的原理和使用方法、通信程序的设计,并给出
    发表于 04-08 09:51 27次下载

    基于USBCAN适配卡的设计与实现

    本文论述了CAN 总线系统中CAN 适配卡的重要作用,在分析其他CAN 适配卡实现
    发表于 08-05 09:16 16次下载

    PC-USB2.0-CAN转接及其AVR GCC语言实现

    系统使用CP2102 和MCP2510 实现PC-USB2.0-CAN 转接。系统通过CP2102 实现USB2.0 接口,通过MCP25
    发表于 08-22 09:53 16次下载

    基于CP2102高速USB2.0-CAN适配卡的设计

    基于CP2102高速USB2.0-CAN适配卡的设计 基于桥接芯片CP2102,设计了USB2.0-CAN适配卡。系统采用
    发表于 04-22 18:34 3383次阅读
    基于CP2102<b class='flag-5'>高速</b><b class='flag-5'>USB2.0-CAN</b><b class='flag-5'>适配卡</b>的设计

    基于WinCE环境的CAN适配卡驱动程序的设计与实现

    基于WinCE环境的CAN适配卡驱动程序的设计与实现 WinCE是一种为多种嵌入式系统和产品设计的紧凑、高效、可升级的操作系统,WinCE 采用标准模式,其最主要的特征:为有
    发表于 10-26 09:04 1037次阅读

    NI针对嵌入式系统开发单板式RIO适配卡

    NI针对嵌入式系统开发单板式RIO适配卡 美国国家仪器(NI)发布4款扩大作业温度的NI单板式(Single-Board) RIO适配卡,可在-40℃~85℃的作业环境温度范围下运作。这些适配卡
    发表于 12-23 08:43 1431次阅读

    基于PIC单片机的RS-232转CAN通信适配卡设计

    基于PIC单片机的RS-232转CAN通信适配卡设计 CAN总线-控制器局部网(CAN)国际标准(ISO11898)。CAN总线与一般的通
    发表于 01-27 16:24 1472次阅读
    基于PIC单片机的RS-232转<b class='flag-5'>CAN</b>通信<b class='flag-5'>适配卡</b>设计

    发电机状态监测仪中CAN适配卡的设计方案

    发电机状态监测仪中CAN适配卡的设计方案 摘要:文中介绍了发电机状态监测仪中CAN智能适配卡的功能和硬件组成,针对ISA和哼单片机同时对双
    发表于 03-03 19:37 759次阅读
    发电机状态监测仪中<b class='flag-5'>CAN</b><b class='flag-5'>适配卡</b>的设计<b class='flag-5'>方案</b>

    关于PCI9052在多功能CAN适配卡中的应用研究

    关于PCI9052在多功能CAN适配卡中的应用研究 0 概述PCI总线是一种独立于CPU的局部总线,实现PCI接口的方案一般有两种:采用可编程逻辑器件和专用总线接口器件。
    发表于 04-08 15:02 1127次阅读
    关于PCI9052在多功能<b class='flag-5'>CAN</b><b class='flag-5'>适配卡</b>中的应用研究

    基于WinCE环境的CAN适配卡驱动程序的设计与实现

    本文简要介绍了嵌入式实时操作系统WinCE环境下驱动程序的设计原理和CAN总线技术并详细分析了依托PC/104总线的CAN适配卡底层驱动程序的设计与实现
    发表于 03-29 14:25 3次下载

    基于uPD720100控制器实现新型USB2.0高速主机适配卡的应用方案

    USB界面通过USB主控制器与计算机主机系统相连接。USB主控制器不但提供与主机的PCI总线接口,同时也包含根集线器。根集线器可提供一个或多个连接点用于USB设备的连接,从而使主机操作
    的头像 发表于 06-15 15:20 2947次阅读
    基于uPD720100控制器<b class='flag-5'>实现</b>新型<b class='flag-5'>USB2.0</b><b class='flag-5'>高速</b>主机<b class='flag-5'>适配卡</b>的应用<b class='flag-5'>方案</b>