C8051F040中CAN控制器的应用
2 CAN控制器应用时寄存器配置
下面就CAN控制器在应用时,根据所要完成功能的不同而需要做的不同配置做具体描述。这包括报文对象初始化处理、发送对象配置、接收对象配置、中断处理配置;另外,还有发送对象的更新、位定时寄存器等配置。
2.1 报文对象初始化处理
报文RAM中的报文对象(除MsgVal、NewDat、IntPnd和TxRqst)配置不受芯片复位的影响。所有的报文对象在使用前必须由CPU来初始化为零或者被设置为无效。报文对象的配置是通过相应的接口寄存器来设置其屏蔽码、仲裁场、控制场和数据场值,而这一设置过程由相应的IFX命令请求寄存器来完成。
当CAN控制寄存器中的Init位置零,CAN内核中的CAN协议控制器状态机制和报文处理状态机制将控制C_CAN的内部数据流。接收到的报文通过接收滤波后都存放在报文RAM中,而得到传输请求的报文都要移入CAN内核的移位寄存器中并通过CAN总线传出。
2.2 发送对象的配置
当报文对象作为发送对象时,仲裁寄存器(ID28-0和Xtd位)将被应用,它们定义了即将发送的报文识别符和类型,如果使用11位识别符(标准帧),那么使用的是ID28~ID18,而ID17~ID0将被忽视。如果TxIE位被置位,则IntPnd位在此报文对象被成功发送后被置位;如果RmtEn位被置位,在接收到匹配的远程帧将引起TxRqst位被置位。若数据寄存器(DLC3-0,Data0-7)将被使用,TxRqst和RmtEn在数据有效前不会被置位。屏蔽寄存器(Msk28-0、Umask、Mxtd和MDir位)可以用来(UMask=‘1’)允许相同识别符的数据帧组被接收。
2.4 中断处理
在所有中断中,状态中断具有最高优先级,报文对象的中断优先级随着报文编号的增大而减小。如果有几个中断产生,那么CAN中断寄存器将指向优先级最高的中断,而不是按中断先后顺序排列。
状态中断通过读取状态寄存器来清除,报文中断通过清除报文对象的IntPnd位来清除。处于中断寄存器中的中断识别符Intld能表明中断的原因,如果这个寄存器的值为0,没有中断产生;否则,有中断发生。
CPU控制着状态寄存器的改变是否可以引起中断(CAN控制寄存器中的EIE和SIE位);当中断寄存器的值不为0(CAN控制寄存器中的IE位)时中断队列是否有效。CPU有两种方式判断报文中断源,每一种是判断中断寄存器中的Intld位;另一种是顺序扫描中断发生寄存器。
图2
3 CAN控制器的应用
CAN总线一般用在工业检测和控制现场,它将各功能模块连接在一起组成一个现场级通信网络。在本应用中,CAN总线完成下位机各部分之间的通信以及各下位机与上位机之间的通信。下位机以单片机C8051F040为核心,上位机由PC机构成。下位机的CAN通信物理层的电路在下面将做详细说明,为了完成上位机与下位机的通信,需要外加一块PC-CAN通信卡。
3.1 CAN控制器外围硬件电路实现
由于Cygnal内部的CAN控制器只是个协议控制器,不能提供物理层驱动,所以在使用时还需外加CAN总线收发器,常用的CAN总线收发器有Philips公司的PCA82C250收发器、高速TJA1050收发器等。这里使用的是PCA82C250收发器、高速TJA1050收发器等。这里使用的是PCA82C250收发器,它可提高总线的差动发送和接收能力。它与ISO11898标准完全兼容,有三种不同的工作方式,即高速、斜率控制和待机,可根据实际情况选择。此通信物理层电路图如图2所示。
为了进一步提高系统的抗干扰能力,在CAN控制器引脚CANTX、CANRX和收发器PCA82C250之间并不是直接相连,而是通过由高速光耦6N137构成的隔离电路后再与PCA82C250相连,这样就可以很好的实现总线上各节
《C8051F040中CAN控制器的应用(第2页)》