基于C8051F040单片机的CAN总线测试模式研究
摘要:现场总线已成为数据总线领域中最为活跃的热点,CAN总线被公认为最有前途的现场总线之一,CAN总线节点的设计、调试是CAN总线通讯系统设计的重点。在此介绍了C8051F040单片机内部集成的CAN控制器,并基于C8051F040单片机设计了一个CAN通信节点,并给出了CAN节点测试模式软件设计程序,可以用于CAN总线模块的测试,节省测试时间。
关键词:C8051F040;CAN总线;测试模式;CAN控制器
现场总线能同时满足过程控制和制造业自动化的需求,因而现场总线已成为数据总线领域中最为活跃的一个领域。现场总线的研究和应用已成为数据总线领域的热点。CAN总线(Controller Area Network)属于现场总线的范畴,它是一种支持分布式控制和实时控制的串行通信网络。CAN总线是德国博士公司在20世纪80年代为解决现代汽车中众多的控制和测试仪器之间的数据通信而开发的一种串行通信协议。由于其高性能、高可靠性、及独特的设计,CAN总线越来越受到人们的重视,其应用领域不再局限于汽车工业,而向过程工业、机械工业、纺织工业、农用机械、传感器以及航空航天等领域发展。被公认为最有前途的现场总线之一。
1 引言
Cygnal公司开发的51系列单片机C8051F040是完全集成的混合信号系统型微控制器,其上集成可实现全功能CAN的CAN总线控制器,完全符合CAN规范2.0A和2.0B。本文利用C8051F040单片机上集成的CAN控制器,外接一个CAN收发器(PCA82C250)设计了一个CAN通信节点的硬件电路,然后详细介绍了CAN控制器测试模式的实现,可以应用于CAN通信节点的调试测试。
2 C8051F040单片机上集成的CAN控制器
CAN控制器包括CAN核,消息存储器,消息处理器,控制寄存器和模块接口等几部分。CAN核用于协议控制和消息的串并转换;消息存储器用于存储消息对象和标志符;消息处理器用于控制CAN核和消息存储器之间的数据传输;控制寄存器用于控制和配置CAN控制器;模块接口用于MCU与CAN控制器之间交换数据。C8051F040单片机上集成的CAN控制器的消息存储器上可以存储32个消息对象,均可以被配置为发送或接收对象。CAN总线协议处理由CAN控制器独立完成,不用MCU干预,因此CAN通信占用的CPU带宽很小,C8051F040集成CAN控制器原理如图1所示。
C8051F040单片机上集成的CAN控制器主要有2种工作模式:正常工作模式和测试模式。可以通过将CAN控制器寄存器中的Test位置1,进入测试模式。在测试模式下,测试寄存器中的Tx1,Tx0,LBack,Silent以及Basic位均是可写的。将Test位置0后,测试寄存器的所有功能将被禁止。测试模式又可细分为沉默模式(又叫监测模式)、回送模式、基本模式以及回送和沉默模式结合等4种工作模式。通过将测试寄存器
中的Silent位置1,可将CAN核设置为沉默模式。在沉默模式下,CAN核能够接收有效数据帧和有效远程帧,但是只能在总线上发送隐性位而不能进行传输。图2为在沉默模式下CAN_TX和CAN_RX信号同CAN核的联系。通过将测试寄存器的LBack位置1,可以将CAN核设置为回送模式。在回送模式下,CAN核将它发送的消息当作接收到的消息对待,并存储在接收缓存中。
图3为在回送模式下CAN_TX和CAN_RX信号同CAN核的联系。通过将LBack和Silent同时置1,可以将回送模式和沉默模式结合。这种模式可以应用于热自检,可以在不影响CAN系统运行的情况下,对CAN节点进行自检。在这种模式下,CAN_RX引脚与CAN核断开,CAN_TX引脚被保持为隐性位。图4为在这种模式下CAN_TX和CAN_RX信号同CAN核的联系。若将测试寄存器中的Basic置1,CAN核便工作于基本模式下。在这种模式下消息存储器不工作,即不用消息队列缓存交换数据,而把IF1寄存器用作传输缓存,把IF2寄存器用作接收缓存。
4 CAN通信节点硬件设计
C8051F040上集成的CAN控制器是一个协议控制器,不能提供物理层驱动,需要外接CAN收发器才能挂接在CAN网络上与其他节点通信。本文采用PCA82C250收发器作为物理层驱动器。若在CAN控制器和PCA82C250之间加入光藕隔离器件可以提高系统的稳定性和可靠性,但这会增加系统的复杂性。本文的目的主要是调试CAN控制器的测试模式,所以没有使用光藕隔离器件。CAN通信节点原理图如图5所示。
5 软件设计
基于C8051F040的CAN通信节点的软件设计主要包括3个部分:CAN节点初始化、报文发送和报文接收。熟悉这3部分程序的设计,就能写出普通的CAN通信程序。
5.1 CAN初始化
初始化CAN控制器的一般步骤如下:
(1)将SFRPAGE寄存器设置为CAN0_PAGE。
(2)将CAN0CN寄存器的INIT和CCE位设置为“1”。
(3)设置时序参数。
(4)启动CAN控制器。
由于本文要研究的是测试模式,所以最后要进入测试模式。
测试 模式 研究 总线 CAN C8051F040 单片机 基于 相关文章:
- sysbench的安装和做性能测试(06-21)
- 嵌入式软件设计中查找缺陷的几个技巧(03-06)
- DSP-SPOOL整轴线缆测试选件(06-16)
- 基于DSP的中频电源测试系统设计(08-08)
- 基于仿真的嵌入式软件白盒覆盖测试系统设计(08-26)
- 嵌入式软件运行剖面建模及测试用例生成(11-06)