泉州网站开发公司,有限责任公司和有限公司有啥区别,泰安网站的建设,西安黄页摘要#xff1a;现场总线已成为数据总线领域中最为活跃的热点#xff0c;CAN总线被公认为最有前途的现场总线之一#xff0c;CAN总线节点的设计、调试是CAN总线通讯系统设计的重点。在此介绍了C8051F040单片机内部集成的CAN控制器#xff0c;并基于C8051F040单片机设计了一… 摘要现场总线已成为数据总线领域中最为活跃的热点CAN总线被公认为最有前途的现场总线之一CAN总线节点的设计、调试是CAN总线通讯系统设计的重点。在此介绍了C8051F040单片机内部集成的CAN控制器并基于C8051F040单片机设计了一个CAN通信节点并给出了CAN节点测试模式软件设计程序可以用于CAN总线模块的测试节省测试时间。 关键词C8051F040CAN总线测试模式CAN控制器 现场总线能同时满足过程控制和制造业自动化的需求因而现场总线已成为数据总线领域中最为活跃的一个领域。现场总线的研究和应用已成为数据总线领域的热点。CAN总线(Controller Area Network)属于现场总线的范畴它是一种支持分布式控制和实时控制的串行通信网络。CAN总线是德国博士公司在20世纪80年代为解决现代汽车中众多的控制和测试仪器之间的数据通信而开发的一种串行通信协议。由于其高性能、高可靠性、及独特的设计CAN总线越来越受到人们的重视其应用领域不再局限于汽车工业而向过程工业、机械工业、纺织工业、农用机械、传感器以及航空航天等领域发展。被公认为最有前途的现场总线之一。 1 引言 Cygnal公司开发的51系列单片机C8051F040是完全集成的混合信号系统型微控制器其上集成可实现全功能CAN的CAN总线控制器完全符合CAN规范20A和20B。本文利用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所示。 3 CAN控制器工作模式 C8051F040单片机上集成的CAN控制器主要有2种工作模式正常工作模式和测试模式。可以通过将CAN控制器寄存器中的Test位置1进入测试模式。在测试模式下测试寄存器中的Tx1Tx0LBackSilent以及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置1CAN核便工作于基本模式下。在这种模式下消息存储器不工作即不用消息队列缓存交换数据而把IF1寄存器用作传输缓存把IF2寄存器用作接收缓存。 4 CAN通信节点硬件设计 C8051F040上集成的CAN控制器是一个协议控制器不能提供物理层驱动需要外接CAN收发器才能挂接在CAN网络上与其他节点通信。本文采用PCA82C250收发器作为物理层驱动器。若在CAN控制器和PCA82C250之间加入光藕隔离器件可以提高系统的稳定性和可靠性但这会增加系统的复杂性。本文的目的主要是调试CAN控制器的测试模式所以没有使用光藕隔离器件。CAN通信节点原理图如图5所示。 5 软件设计 基于C8051F040的CAN通信节点的软件设计主要包括3个部分CAN节点初始化、报文发送和报文接收。熟悉这3部分程序的设计就能写出普通的CAN通信程序。 51 CAN初始化 初始化CAN控制器的一般步骤如下 (1)将SFRPAGE寄存器设置为CAN0_PAGE。 (2)将CAN0CN寄存器的INIT和CCE位设置为“1”。 (3)设置时序参数。 (4)启动CAN控制器。 由于本文要研究的是测试模式所以最后要进入测试模式。