单片机和MCP2510的CAN总线通信模块设计

发布者:剑戟辉煌最新更新时间:2007-04-09 来源: 单片机及嵌入式系统应用关键字:编程  封装  接收  速率 手机看文章 扫描二维码
随时随地手机看文章

CAN(Controller Area Network)总线,即控制器局域网。由于具有高性能、高可靠性以及独特的设计,CAN总线越来越受到人们的重视。德国的Bosch公司最初为汽车监控和控制系统设计了CAN总线,现在,其应用已面向过程工业、机械工业、纺织工业、农用机械、机器人、数控机床、医疗器械及传感器等领域发展。CAN总线已经形成国际标准,并已经公认为是最有前途的现场总线之一。CAN总线规范已经被国际标准化组织制订为国际标准ISO11898,并得到众多半导体器件厂商的支持,推出各种集成有CAN协议的产品。CAN总线系统智能节点是网络上报文的接收和发送站,一般由单片机和CAN控制器或二者合二为一组成。

MCP25l0是Microchip公司生产的一种独立的可编程CAN控制器芯片。本文将介绍新型的独立CAN通信控制器MCP2510,并给出其在CAN总线系统智能节点中的应用实例。

1 MCP2510芯片介绍

MCP25lO是一种带有SPI接口的CAN控制器,DIP封装如图1所示。它支持CAN技术规范V2.OA/B,能够发送或接收标准的和扩展的信息帧,同时具有接收滤波和信息管理的功能。MCP2510通过SI接口与MCU进行数据传输,最高数据传输速率可达5 Mbps,MCU可通过MCP2510与CAN总线上的其他MCU单元通信。MCP2510内含3个发送缓冲器和2个接收缓冲器,同时还具有灵活的中断管理能力,这些特点使得MCU对CAN总线的操作变得非常简便。


1.1 MCP2510的主要特点

◇支持CANV2.0A/B;

◇具有SPI接口,支持SPI模式0,0和1,1;

◇内含3个发送缓冲器和2个接收缓冲器,可对其优先权进行编程;

◇具有6个接收过滤器,2个接收过滤器屏蔽;

◇具有灵活的中断管理能力;

◇采用低功耗CMOS工艺技术,其工作电压范围为3.0~5.5 V,有效电流为5 mA,维持电流为10μA;

◇工作温度范围为-40~十125℃。

1.2 结构及工作原理

MCP2510有PDIP、SOIC和TSSOP三种封装形式。图2是MCP2510的内部结构框图。CAN协议机负责与CAN总线的接口,SPI接口逻辑用于实现同MCU的通信,而寄存、缓冲器组与控制逻辑则用来完成各种方式的设定和操作控制。现结合其工作过程将各部分的功能、原理作一介绍。

(1) 收发操作

MCP251O的发送操作通过3个发送缓冲器来实现。这3个发送缓冲器各占据14字节的SRAM。第1字节是控制寄存器TXBNCTRL,该寄存器用来设定信息发送的条件,且给出了信息的发送状态;第2~6字节用来存放标准的和扩展的标识符以及仲裁信息;最后8字节则用来存放待发送的数据信息。在进行发送前,必须先对这些寄存器进行初始化。

(2) 中断管理

MCP25lO有8个中断源,包括发送中断、接收中断、错误中断及总线唤醒中断等。利用中断使能寄存器(CANINTE)和中断屏蔽寄存器(CANINTF)可以方便地实现对各种中断的有效管理。当有中断发生时,INT引脚变为低电平并保持在低电平,直到MCU清除中断为止。

(3) 错误检测

CAN协议具有CRCF错误、应答错误、形式错误、位错误和填充错误等检测功能。MCP2510内含接收出错计数器(REC)和发送出错计数器(TEC)两个错误计数器。因而对网络中的任何一个节点来说,都有可能因为错误汁数器的数值不同而使其处于错误一激活、错误一认可和总线-脱离3种状态之一。

2 MCP2510在智能节点中的应用实例

利用MCP2510和CAN总线收发器TJA1050可构成一个CAN总线分布式测控网络。系统可包括一个主控制器和多个节点控制器,这种节点控制器可对电动机的电流、电压及周围的温度进行监控,其结构如图3所示。

这种网络拓扑结构采用了总线式结构和无源抽头连接,且结构简单、成本低,因而系统的可靠性较高。其信息传输采用CAN通信协议,通信介质采用双绞线。由于CAN总线是基于发送报文的编码,不对CAN控制节点进行编码,故系统的可扩充性比较好,同时增删CAN总线上的控制节点不会对系统的其余节点造成任何影响。

节点控制器的MCU可选用具有SPI接口的微处理器,也可采用不带SPI接口的微处理器。本系统采用的是不带SPI接口的微处理器AT89C51。AT89C51可通过P1口与CAN控制器的SPI接口直接相连,并用软件算法来实现SPI接口协议。CAN总线收发器TJA1050则作为MCP25l0与物理总线的接口。如果需要进一步提高系统的抗干扰能力,则可在MCP2510和TJAl050之间再加一个光电隔离器。

智能节点电路原理图如图4所示。

2.1 软件设计

MCP2510正常工作之前,需要进行正确的初始化,包括设置SPI接口的数据传输速率、CAN通信的波特率、MCP2510的接收过滤器和屏蔽器以及发送和接收中断允许标志位等。与SJA1000不同的是,单片机对MCP2510的接收缓冲器和发送缓冲器的操作,必须通过SPI接口用MCP2510内置读写命令来完成。其读、写命令时序图如图5和图6所示。

本文中MCP2510主要采取中断模式进行总线数据的接收和发送。整个系统主序提供两种中断:定时器中断和外部中断。定时器中断的中断子程序主要负责处理来自模拟通道AIN0~AIN7的A/D数据,向MCP2510发送“数据发送请求命令”以及发送数据。外部中断的中断处理子程序主要包括CAN总线错误处理子程序和数据接收子程序。

2.2 软件主体设计流程

软件主体设计流程如图7所示。软件设计时需要注意以下问题:

①因为MCP2510在初始化完成后处于默认Config-uration模式下,所以就需要在MCP2510的初始化完后将其置为Normal模式,否则MCP2510将一直停留在Configuration模式下,不能正常进行工作。将MCP2510置Normal模式可通过使用MCP2510内置的BitModify(位修改)4指令向CANCTRL控制字写入一个0字节来实现。

②在对MCP2510进行任何操作之前,都要由微处理器向MCP2510的片选CS输出一个低电平,使得MCP2510选通。

③在执行MCP2510的“读”操作时,发送完读指令及其地址码之后,仍然需要向MCP2510提供时钟,以接收“读”到的数据。可以通过向MCP2510发送一个0字节来实现。

④在对MCP2510完成任意操作后,都要延时一段时间,使其有足够的时间来准备接收下次操作的命令,防止出现MCP2510“忙”的情况。

3 总 结

CAN总线已被公认为是最有前途的几种现场总线之一。因其性价比高、实现简单等突出优点深受越来越多的研发人员的青睐。本文的智能节点可联结多个集散控制系统,其软硬件电路的设计方法同样适合于其他基于CAN总线的分布式控制系统的节点设汁。

关键字:编程  封装  接收  速率 引用地址:单片机和MCP2510的CAN总线通信模块设计

上一篇:基于C8051F040的CAN总线智能节点设计
下一篇:基于智能通信控制器的串行通信系统的抗干扰设计

推荐阅读最新更新时间:2024-03-30 21:23

DSP/BIOS中的IO设备驱动编程技术
近年来,随着信息技术的飞速发展,DSP在航空、航天、雷达、通信、消费类电子设备等方面都得到了广泛应用;同时,DSP的运算能力也越大越强大,TI公司新推出的TMS320C6400系列的运算能力可以达到8800MIPS。这些都要求开发DSP的应用程序要缩短开发时间,增加软件的可编护性和可重用性。语音压缩、语音识别、图像处理等方面的应用要求DSP的开发尽可能简单,还要求代码的执行效率高。 DSP/BIOS是TI公司推出的一个实时操作系统。DSP/BIOS与TI的CCS(Code Composer Studio)集成在一起。目前最新的版本是CCS 1.2中的DSP/BIOS II。应用DSP/BIOS可以大大简化DSP应用程序的开发和
[嵌入式]
STM32Keil下编程实现蜂鸣器长鸣
前言 基于STM32F103C8T6在Keil下编程实现蜂鸣器的长鸣 一、原理图 1.STM32F103C8T6 STM32F103C8T6是ST在2007年发布的一款MCU,截止目前ST已经发布了速度高达400MHz的STM32H7。三点好处,一是封装比较大,方便初学者焊接,二是价格低廉,学习成本比较低,三是网上有大量的资料供初学者学习使用。 2.BELL蜂鸣器 二、Keil代码 1.Beep.c 代码如下: #include stm32f10x.h #include Beep.h void BEEP_Init(void) { GPIO_InitTypeDef GPIO_Structure;/
[单片机]
STM32Keil下<font color='red'>编程</font>实现蜂鸣器长鸣
英特尔庆祝晶体管诞生60周年
12月16日正值晶体管诞生60周年纪念日,由贝尔实验室发明的晶体管是当今数字世界的构建模块,被认为是20世纪最伟大的发明之一。 英特尔公司董事长贝瑞特博士在祝贺晶体管诞生60周年时表示:“晶体管太有魅力了!它改变了世界,改变了我们每个人生活、学习和工作的方式。在人类发展的路程上,晶体管是我们‘最好的朋友’。” 摩尔定律的指引 1965年4月19日,《电子学》杂志刊登了摩尔先生的一篇论文,其中的预言已经成为半导体行业的传奇。这个被称作摩尔定律的预测认为未来一个芯片上的晶体管数量大约每两年翻一倍,这也造就了信息技术在全球的普及。 摩尔定律不仅预测计算性能将不断提升,同时还预测其成本将不断降低。英特尔最新芯片系列中一个晶体管的价格只有
[焦点新闻]
小型单片机可编程控制延时开关电路模块设计
  可编程控制电路设计   采用的增强型STC8051单片机及其周围电路,组成最小单片机系统。使用的STC8051芯片内部具有下列硬件资源:增强型STC8051单片机中包含中央处理器(CPU)、4K字节程序存储器(Flash)、128字节数据存储器(SRAM)、2个16位可重装载定时器、1K字节电可擦写EEPROM、6个通用I/O口、硬件看门狗(WDT)、片内高精度R/C震荡1T时钟,内部时钟从5MHz~35MHz 可选,速度比普通8051快6~12倍,及8级高可靠复位等模块。   通过定义单片机P3口的第三位为输出,串口功能由P3.0和P3.1口分别接收和发送数据,调用内部时钟,结合定时器,实现延时时间和输出控制。    供电
[电源管理]
小型单片机可<font color='red'>编程</font>控制延时开关电路模块设计
无线遥控接收程序
#include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int uchar i,j; sbit P2_7=P2^7; sbit fmq=P3^6; sbit P3_7=P3^7; void delay1ms(unsigned int i) { unsigned char j; while(i--) { for(j=0;j 115;j++) //1ms基准延时程序 { ; } } } void delay500us() { unsigned char j; for(j=0;j
[单片机]
Vishay业内首款采用小尺寸57mm x 60mm封装的功率厚膜电阻
宾夕法尼亚、MALVERN — 2012 年 4 月12 日 — 日前,Vishay Intertechnology, Inc.(NYSE 股市代号:VSH)宣布,推出业内首款采用小尺寸57mm x 60mm封装的功率厚膜电阻--- LPS1100,可在散热器温度为+25℃的条件下提供1100W的额定功率。LPS1100具有高温降额性能和很宽的阻值范围。 LPS1100厚膜电阻是无感 ( 0.1μH) 器件,阻值范围1Ω~1.3kΩ。新颖的设计使电阻能够轻松安装在散热器上,小占位、25mm的低外形,加上仅重79克,使器件能够节省宝贵的空间,帮助设计者减小其终端产品的尺寸。 凭借高功率和高达12kVRMS的绝缘强度,LPS1
[半导体设计/制造]
单片机编码 无线模块发送与接收 程序
模块型号,可在万能的某宝搜索【超再生无线模块】 接收距离:空旷200米 接收端在没有收到讯号,会生成间歇性尖状脉冲,data接LED负极,5V接LED正极,可看见闪烁 【科普知识】 无线收发,天线计算公式: 电磁波的速度,30W公里每秒,即3X10^8m/s 频率的单位有MHZ,(兆赫兹),KHZ(千赫兹)HZ(赫兹),相互之间关系是1MHZ=1000KHZ=1000000HZ, 波长=速度/频率 前辈们经验告诉我们,1/4波长的天线是较靠谱的 315M的1/4波长天线计算公式,导线传播高频信号的缩短率在0.98 (300000000/315000000)/4*0.98=0.23333(M)=23.3(
[单片机]
单片机编码 无线模块发送与<font color='red'>接收</font> 程序
数据转换器促使医疗市场升温
  数据转换器家族“人丁兴旺”且“个性突出”,应用者应根据各自的需求选择合适的产品。尽管在可预见的将来,工业和通信应用仍是数据转换器的主要市场,但随着器件功耗的降低和尺寸的缩减,便携式医疗领域的应用正在蓬勃发展。   计算机的发明把人类带入一个以二进制为基础的数字世界,随着个人电脑的广泛应用及互联网的迅猛扩张,由“0”和“1”组成的数字信号似乎已经成为我们生活中不可或缺的元素。但是,自然界的信息毕竟是以模拟信号的方式表现出来的,它们无法直接转化为二进制的数字信号,因此,数据转换器就成了连接模拟世界与数字世界的桥梁。   采样率和分辨率左右器件性能   数据转换器包括模拟/数字转换器(ADC)和数字/模拟转换器(DAC)。来自
[模拟电子]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新工业控制文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved