|
摘要 一般DSP都是由3.3V或者更低的电压供电,如果使用原来常用的5V CAN控制器,电源设计需要额外的器件与消耗,因而受到一定的局限。本文提出一种利用ADSP2191结合MCP2510的方式,实现低电压供电系统中基于CAN总线的通信技术,并给出相关电路与驱动程序设计流程。 关键词 CAN ADSP MCP2510 1CAN简介 CAN即控制器局域网,因其高性能、高可靠性和独特的设计,越来越受到人们的重视。传统的控制需要检测以及交换大量的0数据,采用硬接信号线的方法不但繁琐、昂贵,而且难以解决问题;而CAN由于其本身的优点,目前应用的范围已经跨越了很多行业,并形成国际标准,被公认为几种最有前途的现场总线之一。目前较为流行的方式是使用SJA1000的方式来作为CAN接口的扩充,然而在3.3V供电系统中,这种方法有一定局限性。本文介绍利用Microchip公司出品的MCP2510和ADI的ADSP21xx系列DSP实现CAN的一种方法。 2MPC2510简述 图2电路原理MCP2510是一款支持CAN2.0A/B 的CAN控制器,支持标准帧和扩展帧的收发;具有接收帧过滤,消息管理功能,3个发送缓冲,2个接收缓冲,并且集成了SPI标准接口,支持3.3 V供电。该芯片的内部功能框图如图1所示。 ADI公司出品的DSP由于其丰富的内部RAM和外设,方便的开发工具等优点,在越来越多的领域得到应用。 3硬件电路设计 如图2,CPU采用ADSP2191。它集成了2个SPI接口和16个可编程I/O(图中PFx)。PFx可以设置成输入或输出,甚至可以作为中断输入,并可设置中断信号的类型(极性、边沿等等)。MCP2551作为驱动器,使MCP2510的数据发送信号和数据接收信号可以和外部CAN物理媒介交互。 MCP2510作为ADSP2191的SPI1的一个从设备。DSP需要报文发送的时候,可以设置MCP2510相应寄存器,将相应TXxRTS置低或发送相应图1MCP2510结构框图命令,启动报文的发送;CAN网络有合法报文到达时候,MCP2510置低RX0BF或RX1BF,通过DSP的PF14、PF15发送中断信号。另外,MCP2510也可以通过INT向DSP发送中断,DSP通过查询MCP2510的状态寄存器,判断其所处状态,执行相应动作,提供了另外一种数据传输方式。 4软件设计 CAN是一种基于连接的通信方式,通信时需要对网表1 掩码〖〗滤码〖〗报文〖〗接收/拒绝0〖〗X〖〗X〖〗接收1〖〗0〖〗0〖〗接收1〖〗0〖〗1〖〗拒绝1〖〗1〖〗0〖〗拒绝1〖〗1〖〗1〖〗接收络上的数据流进行过滤。MCP2510提供了6个接收滤波器,提供一种2级过滤机制实现其报文过滤,如表1所列。 可见,在掩码为1时,只要有滤码的位和报文中的位不同,就拒绝该报文。 MCP2510提供了六种命令让主控CPU进行操作,如表2所列。 表2 指令〖〗格式〖〗描述复位〖〗C0H〖〗复位内部寄存器读〖〗03H〖〗读取某个寄存器值写〖〗02H〖〗写某个寄存器值发送〖〗1000 0nnnB〖〗发送指令,nnn决定发送哪个寄存器读状态〖〗A0H〖〗读取状态位修改〖〗05H〖〗对某个寄存器的某个位操作 对MCP2510发送命令的字节流如下: 对于复位命令和发送命令,DSP直接发送命令码即可,无需额外操作;写命令和位修改命令,在命令码发送完毕后,还要发送地址码和相应的待操作的数据码;读命令和读状态命令由于DSP的SPI同步传输的特性,除了发送命令码和地址码(读状态不需要)以外,需要往MCP2510发送一些额外的字节,字节的内容无关紧要,只是提供一些SPI时钟以便MCP2510可以从寄存器中移出数据。如果采用普通I/O口模拟SPI工作时序,只需要发送相应时钟可,MOSI信号可以不必理会。图3给出了DSP接收1帧报文的流程。 图3报文接收流程CAN接口的初始化和报文收发程序见本刊网站www.dpj.com.cn。 本文提供的CAN接口实现方法,在通信速率较高以及低压供电场合具有较高的实用价值。 参考文献 1Microchip Technology Inc. MCP2510 datasheet. 2002 2Analog Device Inc. ADSP219x DSP HardWare Reference
|