基于ATmega8515的USB-CAN适配器的实现

发布者:xi24最新更新时间:2013-10-26 来源: dzsc关键字:ATmega8515  USB-CAN  适配器 手机看文章 扫描二维码
随时随地手机看文章

  CAN(Controller Area Network)总线作为一种多主机局部网现场总线,由于其组网的灵活性和便捷性、通信的高效性和可靠性以及低廉的成本,在工厂的分散控制领域受到了广泛的应用. 现在的工厂自动化控制,既需要“分散控制”,更需要有效的“集中管理”,以保障生产的安全和效率,而联络各种设备的现场总线和对设备进行监控的工作站(通常为工业PC机) 之间的通信成为一个关键的咽喉. 以往的监控站和现场总线之间的通信大多采用两种方式:一是设计专用的通信卡和现场总线进行通信;二是通过PC机的RS-232C标准接口和现场总线进行接口.使用专用的通信卡对于现在的小型化控制设备已不太方便和实用,而以最高波特率仅为38. 4kb/s 的RS-232C标准接口和最高波特率达1 Mb/s的CAN总线进行接口,无疑会造成CAN总线和监控站之间的通信“瓶颈”问题.

  可见,包括RS-232 在内的接口已经无法满足PC机与外部设备之间不断提高的速度以及稳定性、易用性等方面的要求,并给工程技术人员的设计和用户的运用带来诸多不便. USB(通用串行总线) 的出现解决了上述问题. USB以其优越的易用性、稳定性、兼容性、扩展性、完备性、网络性和低功耗的特点得到了广泛的欢迎和应用,目前的PC机无论是台式还是便携式,均带有 USB插口,并且在最新发布的USB2. 0 版本中,USB 的带宽已经提升到了480Mb/s. 基于上述原因,作者利用Atmel公司最新推出的RISC架构的微控器ATmega8515 , 设计了一种USB总线到CAN总线的专用适配器来对CAN 总线上的设备进行监控. 用USB和CAN总线进行对接,解决了CAN总线和PC机间的通信“瓶颈”问题,提高了通信速度及效率,同时又达到了稳定、易用的目的.

1  USB-CAN适配器的硬件设计

  本文所设计的USB-CAN适配器的主要特点是:(1) PC机和CAN总线之间数据传输波特率可以达到CAN总线1 Mb/s 的最高传输效率; (2) PC机和CAN总线之间数据传输可靠性高,其硬件系统电路如图1 所示,其中CAN 总线的控制器选用Philips公司的独立CAN总线控制器SJA1000 ,USB总线控制器选择全速器件USBN9603 ,两个总线控制器之间的协调处理器采用高性能的AVR 单片机ATmega8515,从而保障了通信速率;CAN 总线控制器和CAN 总线进行光电隔离,采用DC/DC 电源变换器件给光电隔离器件及其后端器件供电,彻底隔离CAN 总线和PC机之间的电气干扰,保障了PC机的安全性.

图1  USB-CAN适配器电气原理图

1. 1  外部微控制器
  独立CAN总线控制器SJA1000 和全速USB总线节点控制器USBN9603必须有外部微控制器进行控制才能工作. 设计中采用Atmel公司最新推出的高性能、低功耗的8 位AVR微控制器ATmega8515 ,给USB-CAN适配器带来诸多优点,并且提高了其性价比.

  ATmega8515具有低功耗特点,供电电压在4.5 ~5.5V DC ,其引脚Vcc 和GND之间最高电流为20mA. 而USB口电源为+ 5V DC,最大可提供500mA电流,故在适配器的电路设计中利用USB口提供的电源直接供电,免去了电源电路,使电路更为简洁.

  ATmega8515 是RISC架构,有多达130 条功能强大的指令(大部分只用一个时钟周期执行) ,32×8通用工作寄存器,完全静态运作,在16MHz 的晶振下运行速度可以达到16MIPS ,片上2周期的乘法器,其运算速度是目前常用的8051单片机的10多倍,用它可以大大减少USB总线控制器和CAN总线控制器之间协调处理的时间,提高了USB-CAN适配器的实际通信速率.

  微控制器具有非易失性的程序和数据存储器,8K字节的在线可编程Flash;可选驻留代码区带有独立的锁存位,通过片上驻留程序可以在线编程实现真正的Read-While-Write 操作;512字节的EEPROM,可进行10 万次擦写,使USB-CAN 适配器的重要设置参数在掉电情况下仍能保存;512 字节的SRAM,可选用对AVR 微控制器进行C 或C + + 编程的编译器, 为开发比较大的程序带来了方便( 例如AT90S1200 没有RAM空间来建立堆栈,只能运用汇编器) ;带有软件加密位;而且微控制器的外围器件中有2 个定时P计数器,具有独立的预分频、比较模式及捕捉模式;3 个PWM通道;可编程串行USART;主P从SPI 串行接口,如图1 中J2 和SPI 的MISO、MOSI、SCK相接,J2 接在串行下载线ISP 上可在线编程;具有独立片上振荡器的可编程看门狗计时器,这些给USB-CAN 适配器控制软件提供了充足的存储、开发空间和安全性.

  ATmega8515可以扩展高达64K字节的外部程序存储器,带有ALE (即外部数据存储器地址锁存使能) 引脚,可以很方便地与SJA1000 和USBN9603引脚相连,这是除了AT90S4414/8815 外其它AVR 微处理器所没有的. 如图1 所示,SJA1000 在Meag8515 的空间地址为0x7F00H ~ 0x7F7FH , USBN9603 在Meag8515 的空间地址为0xBF00H~0xBFFFH.

1. 2  USB总线控制器
  USB -CAN适配器中的USB 总线控制器USBN9603是全速USB 总线节点控制器,传输数据波特率最高可达12Mb/s. USBN9603内部集成收发器,通过18~27Ω的终端电阻与USB 电缆连接,如图1中R7、R8 ;片内集成了倍频电路PLL ,可降低EMI ;并具有可编程时钟输出功能,如图1 中U2 的CLKOUT引脚,在加电复位状态下,默认频率输出为4 MHz ,通过微处理器编程设置,其输出频率为frequency = 48 MHz/(CLKDIV + 1) ,其中CLKDIV 为0~15 之间的整数,当CLKDIV = 2时,可以为ATmega8515 提供16MHz 时钟源,简化了微处理器外围电路;USBN9603 内部集成了1个3. 3V 的调节器,通过1 个1. 5 kΩ的上拉电阻(如图1中R1) 连接到USB 的D + 数据线上,可以使USB 主控制器识别出有1 个USB 全速设备正在连接.

  USBN9603 有7 个基于FIFO 的端点:1 个必需的双向控制端点EPC0 (8 字节缓存), 3 个发送端点EPC1、EPC3 和EPC5 (每个64 字节缓存) ,3 个接端点EPC2、EPC4 和EPC6 (每个64 字节缓存) . 充分利用USBN9603 的FIFO ,可以使ATmega8515 微处理器和USBN9603 控制器并行运行,大大提高了适配器的运行效率.

  USBN9603 的MODE0、MODE1 和ATmega8515 的2 个引脚相连,通过控制2 个引脚的电平,可以选择USBN9603 和微处理器之间的接口方式(如表1 所示) .

表1  USBN9603 接口方式

  USBN9603 支持DMA ,图1 中ATmega8515 通过控制BACK为低电平来使能或高电平禁止DMA. 此外,USBN9603 的中断输出INTR 接到ATmega8515 的INTR0 上,使ATmega8515 能够对USBN9603进行及时的状态诊断和事件处理.

1. 3  CAN总线控制器
  USB -CAN适配器中的SJA1000是工业自动控制领域中独立的CAN总线控制器, 是PhilipsSemiconductors公司继PCA82C200的下一代产品,在PCA82C200 的BasicCAN模式基础上, 增加了符合CAN2.0 协议规定的PeliCAN 模式, 因此它和PCA82C200 在电气上是兼容的;支持11 位标识符ID和29 位标识符ID ;在最高达24MHz 的晶振下,通信速率达1 Mb/s ;发送缓存13 个字节,接收缓存有64个字节,采用FIFO 模式,减少了接收等待时间,提高了实际通信效率.

  USB-CAN 适配器数据传输处理框图如图2 所示,CAN 总线控制器的数据地址复用口和ATmega8515的PA 口相连,它的中断使能端和ATmega8515 的INT1引脚相连,使得ATmega8515能够对SJA1000进行及时的状态诊断和事件处理;串行数据传输端通过光电隔离器件6N137和CAN控制器接口器件PCA82C250相连,使USB-CAN适配器的稳定性及抗干扰能力大为提高. [page]

图2  USB2CAN适配器数据传输处理框图

2  USB-CAN适配器的软件设计

  USB-CAN 适配器软件包括两部分:ATmega8515中的固件和PC机内USB2CAN适配器的驱动软件.

2. 1  USB-CAN适配器固件编程
  良好的开发环境是开发单片机软件质量和速度的保证.USB2CAN 适配器采用GNU AVR 的最新版本WinAVR 编程,它能够对所有AVR 单片机用C 或C + + 语言进行编程,且能在WIN2000 下运行.

  USB-CAN 适配器固件设计成完全的中断驱动,当ATmega8515处理前台任务时,USB 和CAN 的传输可以在后台同时进行,大大提高了实际传输效率,编程和调试亦很方便. 后台的中断处理子程序通过设置事件标志和数据缓冲区来实现和前台主程序之间的数据交换(如图2 所示) .当ATmega8515检测到CAN 控制器的状态寄存器而得知接收缓冲CANRX-Buffer有数据,就会把数据传到USB 控制器空闲发送缓冲区TXFIFO-1或TXFIFO-2中; 同样, 当USB控制器的接收缓冲区RXFIFO-1或RXFIFO-2充满数据时,ATmega8515就会把RXFIFO-1或RXFIFO-2的数据读到内部一个连续的RAM空间,当CAN总线控制器发送缓冲区CAN-TX-Buffer 为空时,再把数据从RAM传到CAN-TX-Buffer.

  USB -CAN适配器固件设计中采用乒乓缓存法提高实际传输速率. USBN9603有7个端点, 通常FIFO内的数据进行传送或接收时每个端点对应一个管道,但是,两个同方向传输数据的端点也可以利用一个管道,这样可以有效地提高数据的传输率,因为当第一个端点的FIFO传输数据时,微处理器可以对第二个端点的FIFO进行数据读或写,反之亦然.

  USBN9603 在进行批量传输时,其实际传输率大约是512kb/s ,这往往是由于主机的控制器最大每帧数据包数量限制造成的,而并非USBN9603本身传输性能. 其它传输方式,如中断传输、同步传输、控制传输的最高传输速率为1.5Mb/s. 采用乒乓缓存法后,可使传输速率提高一倍,从而使传输速率为1Mb/s 的CAN总线控制器没有等待接收数据和发送数据空间的情况,解决了数据传输中的“瓶颈”问题.在USB-CAN 适配器中,端点EP1 (TXFIFO-1) 和EP3 (TXFIFO-2)发送数据到主机,EP2(RXFIFO-1) 和EP4(RXFIFO-2)从主机接收数据(如图2 所示) ,其FIFO中的数据长度都是64字节. 在主机进行枚举过程中,当节点接收到配置设备请求,固件程序就可以把EP1/EP3和EP2/EP4分别分配到同一个端点地址.USBN9603 内置有一个优先级表,如果多个端点编程指定为同一个端点号,具有较低号的端点(利用TOGGL 标志区分高低)首先得到响应和数据.

2. 1. 1  数据上传
  当主机发送一个IN 令牌给USB-CAN 适配器,适配器就开始向PC机发送数据. 图3 为数据上传的流程图. 通过两个标志UPDATE1 和UPDATE2 把主程序和Tx 中断子程序紧密联系起来,体现了前台后台程序设计思想. 当UPDATE1 清0 ,上传数据完毕;当置1 时,开始传输下一批数据. 图4为EP1的Tx中断子程序流程图,UPDATE1 在该中断子程序置1.UPDATE2的运行和UPDATE1相似.

图3  主程序处理上传送FIFO 数据流程

图4  EP1 的Tx 中断子程序流程


2. 1. 2  数据下传
  当主机发送一个OUT令牌给USB2CAN适配器,适配器就开始接收PC发送的数据,并将其暂存在ATmega8515 的RAM中,然后传到CAN总线控制器的数据发送缓冲区CAN.TX.Buffer. 图5 为EP2的Rx中断子程序流程,显示了PC的数据如何传到CAN总线的发送缓冲区. 端点EP4 的Rx 中断子程序流程和EP2的相似. [page]


图5  EP2 的Rx 中断子程序流程

2. 2  USB-CAN适配器驱动程序编程
  USB-CAN适配器设备驱动程序采用Win2000DDK编写,在VC6.0+ +环境中编译. 驱动程序运行于内核模式,其程序组织主要是按功能进行划分,而不是一种层次结构. 即插即用例程和电源管理例程完全按照USB 标准总线驱动程序参考编写.一个驱动程序可以被多个类似的硬件使用,但驱动程序的某些全局初始化操作只能在第一次被装入时执行一次. 而DriverEntry例程就是用于这个目的,它是内核模式驱动程序主入口点. I/O管理器按下面方式调用该例程:
extern“C”NTSTATUS DriverEntry ( IN PDRIVER OBJ ECT  DriverObject , INPUNICODE STRING  RegistryPath)
DriverEntry 的第一个参数是一个指针,指向一个刚被创建的驱动程序对象.
DriverEntry 的第二个参数是设备服务键的键名.

本设计中该例程的各个域设置如下:
DriverObject - > DriverUnload =
  UsbCan- DriverUnload ;
DriverObject - > DriverExtension - > AddDevice =
  UsbCan- AddDevice ;
DriverObject - >MajorFunction[ IRP- MJ - CREATE] =
  UsbCan- DispatchCreate ;
DriverObject - >MajorFunction[ IRP- MJ - CLOSE] =
  UsbCan- DispatchClose ;
DriverObject - >MajorFunction[ IRP- MJ - READ] =
   
  UsbCan- DispatchRead ;
DriverObject - >MajorFunction[ IRP- MJ - WRITE] =
  UsbCan- DispatchWrite ;
DriverObject - > MajorFunction[ IRP- MJ - INTERNAL - DEVICECONTROL
] =
  UsbCan- DispatchInternalControl ;
DriverObject - >MajorFunction[ IRP- MJ - POWER] =
  UsbCan- DispatchPower ;
DriverObject - >MajorFunction[ IRP- MJ - PNP] =
  UsbCan- DispatchPnp ;
DriverObject - > MajorFunction [ IRP- MJ - DEVICE- CONTROL ]
=
  UsbCan- DispatchControl.

3  USB-CAN适配器的应用



  本文设计的USB-CAN适配器在分布式PLC 控制系统中的应用如图6 所示,笔记本电脑通过该适配器和PLC控制系统的CAN总线进行连接,实现了一个笔记本对多个PLC进行程序下载及对多个PLC运行状况进行监视,特别是在上位机只进行监视的情况下,可以进行热插拔而不影响系统的运行,给系统调试带来极大的方便. 经USB测试软件测试,其最高传输速率在40m内达到了1Mb/s.

参考文献:

[1]. ATmega8515 datasheet http://www.dzsc.com/datasheet/ATmega8515_.html.
[2]. USBN9603 datasheet http://www.dzsc.com/datasheet/USBN9603_6750.html.
[3]. SJA1000  datasheet http://www.dzsc.com/datasheet/SJA1000+_609075.html.
[4]. RS-232  datasheet http://www.dzsc.com/datasheet/RS-232+_584855.html.
[5]. RISC datasheet http://www.dzsc.com/datasheet/RISC_1189725.html.
[6]. AT90S1200  datasheet http://www.dzsc.com/datasheet/AT90S1200+_143803.html.
[7]. EPC1 datasheet http://www.dzsc.com/datasheet/EPC1_300880.html.
[8]. EPC2 datasheet http://www.dzsc.com/datasheet/EPC2_2058984.html.
[9]. EPC4  datasheet http://www.dzsc.com/datasheet/EPC4+_2058981.html.
[10]. PCA82C200 datasheet http://www.dzsc.com/datasheet/PCA82C200_html.
[11]. 6N137 datasheet http://www.dzsc.com/datasheet/6N137_91364.html.
[12]. PCA82C250 datasheet http://www.dzsc.com/datasheet/PCA82C250_.html.
[13]. PLC  datasheet http://www.dzsc.com/datasheet/PLC+_1248813.html.

关键字:ATmega8515  USB-CAN  适配器 引用地址:基于ATmega8515的USB-CAN适配器的实现

上一篇:基于ATmega16与DS18B20的智能温控系统的设计
下一篇:基于ATmega8单片机的红外导盲系统设计

推荐阅读最新更新时间:2024-03-16 13:29

Molex 的高密度电磁干扰屏蔽光学适配器克服空间上的约束
(新加坡 – 2017 年3月23日) Molex推出配备了内部激光保护装置的全新多端口 EMI 适配器产品线。这种通用适配器可以支持包括 MXC、MTP/MPO、MT 和 HBMT 在内的多种类型的连接器。电磁干扰屏蔽式光学适配器可理想用于需要一定的 I/O 密度、电磁干扰围护、流线型面板后方光纤路由以及眼部防护的数据通信与网络应用。 Molex 全球产品经理 Josh Krantz 表示:“在数据速率提高到 25Gb/s、50Gb/s 以及更高的过程中,电磁干扰的围护已经成为设计人员必须关切的问题。与传统的塑料适配器相比,Molex 的高密度 EMI 适配器在电磁干扰屏蔽方面有更好的效果,这已经被大量的测试方案所验证。多端
[网络通信]
Molex 的高密度电磁干扰屏蔽光学<font color='red'>适配器</font>克服空间上的约束
基于DeviceNet总线的从设备通信适配器设计
    摘要: 基于DeviceNet总线的泵/阀控制器从设备通信适配器是用于智能泵/阀控制器与DeviceNet网络之间的通信协议设备,用于在智能泵/阀控制器和DeviceNet网络主设备之间交换I/O数据和其它设定数据。本DeviceNet总线从设备通信适配器是独立的智能化设备,由微处理器(W78E58)、双口RAM(IDT7005)、SJA1000 CAN控制器、82C251 CAN收发器、状态指示发光管、微型开关、电源线路以及其它外围电子线路所组成。设计目的是使通信接口符合DeviceNet的协议规范。     关键词: DeviceNet 适配器 通信协议 从设备 引 言   Devi
[工业控制]
安森美16WxDSL调制解调器AC-DC适配器
       家庭和办公应用中的xDSL调制解调器通常采用外部交流-直流(AC-DC)适配器供电。从大多数人的使用习惯来看,这些适配器一直插在电源插座上,持续从交流主电源消耗着电能。据估计,通过适配器的电能中有高达25%是在待机(空载)时消耗的。基于这个原因,AC-DC适配器在设计之初就必须考虑到在待机模式下要保持极低的能耗。       除了待机能耗要尽可能地低,AC-DC适配器的工作效率必须非常高。由于电子设备工作时的能耗毕竟占据着更高比例(约75%),较高的工作效率能够帮助节省电能。有鉴于此,世界各地的规范机构不断发布与实施针对外部电源(EPS)在工作及待机时的能效要求,如表1所示。              
[电源管理]
纳微GaNFast™ 推动世界上最薄的旅行适配器
纳微(Navitas)宣布GaNFast™功率IC应用在前所未有的14mm超薄外形通用型45W电源适配器Mu One。这个用于全球范围的超薄适配器可轻松滑入口袋,其中结合了GaN功率IC技术与新型USB-PD电源输送协议和先进的Type C连接器,可以为笔记本电脑充电,或者为任何智能手机快速充电。 新型高速氮化镓(GaN)功率IC的性能比旧式硅(Si)芯片的好20倍以上。通过高频工作并同时提高效率,GaNFast功率IC可减小变压器、散热片和印刷电路板等组件的尺寸、重量和成本。 Made in Mind首席执行官Mathew Judkins评论道:“Made in Mind一向致力于挑战行业规范,我们寻求志同道合的最
[电源管理]
纳微GaNFast™ 推动世界上最薄的旅行<font color='red'>适配器</font>
Arena Solutions今日宣布:和Triniti正式达成合作
加州福斯特城2016年3月2日电 /美通社/ -- 云产品生命周期管理 (PLM) 应用程序先驱 Arena Solutions 今天宣布与全球领先的甲骨文电子商务套件 (Oracle E-Business Suite) 咨询和解决方案公司 Triniti 合作,在应用程序数据管理方面开展开创性工作,从而推出整合了 Arena PLM 和 Oracle E-Business Suite (EBS) 的产品。拥有新适配器后,新的和有变化的产品数据就能自动地从 Arena PLM 传送到 Oracle EBS,让客户能更精确地进行规划并极大地缩短上市前的时间。 新的 Arena-Oracle 适配器让有变化的产品数据能自动地从 Ar
[电源管理]
超密脚距的微封装芯片为何会很棘手
你注意到了没有?新一代的运算放大器和其它的集成电路很少有双列直插式封装的。当需求量不大的时候,提供双列直插式封装的集成电路并不是经济可行的。在模拟板上对超密脚距的微封装芯片做实验可能会很棘手。怎么办呢? DIP适配器缓解了这个棘手的问题。你可以利用10美元来实现SO-8,SOT23 (3, 5, 6, 或者 8引脚) MSOP-8, SC70-6, SOT563-6这些封装。我们不会花一分钱在适配器上,我们仅想尽力使采用这些微小封装进行设计时更容易。事实上,你可以使用CAD版图来自行修改或者装配。你可以优化分类从而集中在你最频繁使用的封装上。我知道要焊接这些集成电路需要很好的焊工,我你可以做到,然后在像双列直插式封装一样的电路
[模拟电子]
适配器模式实例之算法适配
在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。——Gang of Four 基本概念 客户:需要调用我们的代码的对象。 Adapter模式的宗旨:保留现有类所提供的服务,向客户提供接口,以满足客户的期望。 主要内容 (1)类适配器: 当客户在接口中定义了他期望的行为时,我们就可以应用适配器模式,提供一个实现该接口的类,并且扩展已有的类,
[电源管理]
安森美半导体推出最小的65 W USB-PD适配器方案
2018年3月7日 – 推动高能效创新的安森美半导体 (ON Semiconductor,美国纳斯达克上市代号: ON ) 推出全新世界级的高密度 电源适配器 方案,用于需要兼容USB供电(USB PD)或高通Quick Charge™规格的笔记本电脑、平板电脑和其他便携式设备。这一包含多项正待批专利的方案,包括 有源钳位反激(ACF)控制器 NCP1568和一个相应的 高速半桥驱动器 NCP51530。该方案是一个65 W 符合USB-PD的适配器,具有30 W/in^3的功率密度,以94.5%的峰值能效工作。 NCP1568是一款高度集成的AC-DC脉宽调制(PWM)控制器,采用ACF拓扑结构,包含零电压开关(ZVS)
[电源管理]
安森美半导体推出最小的65 W USB-PD<font color='red'>适配器</font>方案
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved