飞思卡尔MC9S12X CAN驱动

     今天带着大家学习下MC9S12XS  CAN驱动模块开发。首先先了解下什么CAN,用途。          

CAN总线的概念:

       CAN是控制器局域网络(Controller Area Network)的简称,是由研发和生产汽车电子产品著称的德国BOSCH公司开发,并最终成为国际标准(ISO11898)。

       CAN(Controller Area Network)是ISO国际标准化的串行通信协议。广泛应用于汽车、船舶等。具有已经被大家认可的高性能和可靠性。

  CAN控制器通过组成总线的2根线(CAN-H和CAN-L)的电位差来确定总线的电平,在任一时刻,总线上有2种电平:显性电平和隐性电平。

       “显性”具有“优先”的意味,只要有一个单元输出显性电平,总线上即为显性电平,并且,“隐性”具有“包容”的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平。(显性电平比隐性电平更强)。总线上执行逻辑上的线“与”时,显性电平的逻辑值为“0”,隐性电平为“1”。

CAN总线的用途:

       在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986 年德国电气商博世公司开发出面向汽车的CAN 通信协议。此后,CAN 通过ISO11898 及ISO11519 进行了标准化,现在在欧洲已是汽车网络的标准协议。现在,CAN 的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。

        当车载各电子控制装置在不具有CAN功能(如果是不具有CAN通讯能力的电控装置,使得其与其它电控装置相互之间不能进行数据通讯,这样造成各电控装置的电控能力差,功能单一,可扩展性差),不能直接进行通讯的情况下,采用“CAN模块”产品就可以实现具有CAN功能的车载电控网络系统,各电控装置相互之间可以相互传递所需的电控信号,使得整车的电控系统作用更加强大。

下面我们正式的开始学习下MC9S12  CAN驱动模块开发。



MSCAN模块整体框架如下所示:



下面我们结合代码一起来看看,CAN驱动


CAN初始化函数主要包括:CAN波特率的设置,设置CAN接收中断使能、CAN滤波器等等。


CAN接收函数主要包括:当接收寄存器标志位置位之后,读取相应的寄存器。如CAN 标识符  CAN 数据 CAN 长度,保存至制定的变量中。。

ca

CAN发送函数主要包括  设置CAN标识符、设置CAN数据、设置CAN长度等,在此之前还有一些逻辑判断,如判断长度、判断寄存器是为空等。

想要获取CAN驱动源码,请关注微信公众号“嵌入式软件开发学习圈”。。。。。







猜你喜欢

转载自blog.csdn.net/weixin_42019584/article/details/80030573