新闻中心

EEPW首页 > 手机与无线通信 > 设计应用 > AT90CAN的CAN 通信模块驱动设计及C编程

AT90CAN的CAN 通信模块驱动设计及C编程

作者:时间:2009-09-21来源:网络收藏

总线较之一般的总线而言,其数据具有突出的可靠性、实时性和灵活性,应用范围也早已不再局限于汽车行业,而是扩展到了机器人、数控机床、家用电器等领域。控制器用来实现统一的通信协议。CAN控制器分为两种:一种是独立的控制芯片,如SJA1100;另一种是将其集成在微控制器内部,例Atmel公司最新推出的系列单片机。与使用独立的CAN控制器相比,自身集成了CAN接13的微控制器在简化硬件电路的同时,提高了软件开发的效率。

本文引用地址:http://www.eepw.com.cn/article/157838.htm

1 单片机CAN控制器特性
单片机的CAN控制器能够兼容CAN2.OA和CAN2.OB通信协议,内部设有120字节的邮箱空间,它由15个MOB(Message Object)与CAN DATA BUFFER组成。MOB用来描述一帧完整的CAN报文信息,每个MOB拥有独立的工作寄存器组(详见参考文献[1],这些寄存器规定了CAN通信报文的帧格式与工作模式。CAN通用控制寄存器里的CANPAGE寄存器为15个MOB规定了相对应的BUFFER地址和指针,用来存放通信时发出或接收到的数据以及保存MOB寄存器组的设置。对MOB的寄存器组进行初始化设置后,CAN控制器根据MOB的不同设置,就可以分别实现数据的发送、接收以及过滤功能,整个工作过程不需要CPU干预,简化了软件代码的编写。而CPU通过访问CAN控制器状态寄存器或者由CAN控制器以中断的方式通知CPU,即可得到当前通信状态,从而大大节省了CPU的占用时间。


2 CAN控制器的初始化
要实现CAN通信,首先要对CAN控制器进行正确的初始化设置。初始化过程包括对 CPU的引脚功能、CAN通信波特率、中断优先级和MOB寄存器的设置等。在编写的过程中,需要注意的是在完成对CANPAGE寄存器的设置后,再进行MOB的设置;否则,MOB的初始值将不能被保存,导致系统初始化失败。其基本初始化流程如图1所示。其中阴影部分是必须初始化的部分,其他部分可以根据实际程序功能的需要予以设置。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭