基于F28335的CAN通讯
前言
DSP作为一种控制芯片,常常需要和其他设备进行通讯。CAN通讯就是其中一种。
CAN通讯是串行通讯中的一种,相比较并行通讯,还是有串行通讯的固有的特点,成本低,速度慢。相比加其他串行通讯,比如SCI通讯,CAN通讯速度快,可靠性高,但硬件电路复杂,机制复杂,成本高。
CAN概述
CAN模块属于DSP的外设之一。可实现与其他设备或芯片的通讯。
CAN接口集成了CAN协议的物理层和数据链路层功能,可完成对通讯数据的成帧处理,包括位填充、数据快编码、循环冗余检验和优先级别判别工作等。
CAN模块组成
CAN模块有两大部分组成,CAN协议内核(CPK)和消息控制器。如下图所示:
其中,CPK中包含接收缓冲器和发送缓冲器。
CPK主要有两个功能。一个功能是解码接收的所有消息,并把这些消息转移到接收缓冲器中;另一个功能是根据CAN协议发送消息。
消息控制器包含:
- 内存管理单元,CPU接口和接收控制单元,定时器管理单元;
- 能储存32条消息的邮箱RAM;
- 控制和状态寄存器。
消息控制器其中一个功能是确定CPK接收到的消息是否必须保留用于CPU或者被丢弃。另一个功能是发送下一条消息到CPK。
通过消息控制器,还可以确定消息标识符、优先级。
CAN模块的一些概念
消息
消息就是通讯所传输的信息。一条消息里面包含:11或29位标识符、一个控制字段和数据字节组成。
邮箱
邮箱就是储存消息的RAM。
CAN模块的收发过程
消息的收发是基于CAN模块接收和发送邮箱的特性来决定的。
接收到消息后,消息的标识符将与使用屏蔽的接收邮箱的标识符进行匹配,当两者匹配时,接收到消息将写入对应的邮箱。同时,邮箱相应的接收消息等待位被置位;当两者不匹配时,消息不储存。
因此接收的实现过程可以如下:
查询邮箱的接收消息等待位。如果为1,CPU读取邮箱,清除邮箱的接收消息等待位;如果不为1,则不进行操作。
有发送消息时,CPU将要发送的数据储存再一个配置为发送邮箱的邮箱中。如果相应的TRS位被置位,并且邮箱被启用的话,消息将被发送。
因此,发送过程可以如下:
- 清除发送成功标志位;
- 禁止邮箱;
- 填充数据与ID;
- 使能邮箱;
- 启动本次数据发送。
总结
介绍了CAN模块最简单的概念。介绍了发送和接收的过程。