基于C8051f040的CAN总线智能节点设计
时间:2025-04-20
时间:2025-04-20
143214
对 C8051F040 的 CAN 控制器的分析及应用[作者:胡晓柘 张培仁 杨天宝 曹少华 转贴自:微计算机信息 【字体: 点击数: 97 更新时间:2009-3-20
A】
Analysis and Application of CAN Controller Based on C8051F040 Abstract: the struscture of CAN controller integrated in C8051F040 is introduced, analyzing t he interruption of the CAN controller, the method to solve it is given by hardware and soft ware. Based on it, the, the circuit of interface of CAN is explained. At last, we give an ap plication example of software design of master and slave nodes. Key words: CAN bus; CAN controller; interruption 摘要:介绍了 C8051F040 内部集成的 CAN 控制器的结构,重点分析了 CAN 控制器可能有的 冲突及相应硬件软件的解决方案,在此基础上给出了以此 MCU 为核心的 CAN 总线节点的硬 件原理图,并介绍了主从节点软件实现的例子。 关键词:CAN 总线;CAN 控制器;冲突 0 引言 控制器局部网 CAN (Controller Area Network)是德国 Bosch 公司在 80 年代初为解决现代汽车 中大量的控制与测试仪器之间的数据交换而提出的一种串行数据通信协议。由于 CAN 具有高 性能,高可靠性,高实时性特点,特别适合在机电系统中的应用,已被公认为是最有前途的现 场总线之一。 Silicon Lab 公司的 51 系列单片机 C8051F040 是集成在一块芯片上的混合信号系 统级单片机, 在一个芯片内集成了构成一个单片机数据采集或控制系统的所需要的几乎所有模 拟和数字外设以及其他功能部件。芯片上有 1 个 12 位多通道 ADC,2 个 12 位 DAC,2 个电 压比较器,1 个电压基准,1 个 64KB 的可在线编程的 FLASH 存储器,与 MCS 一 51 指令集 完全兼容的高速 CIP 一 51 内核,峰值速度可达 25MIPS, 并且还有硬件实现的 SPI、SMBus/
143214
IC和两个UART串行接口,并完全支持CAN2.0A和CAN2.0B的CAN控制器。本文将详细介绍C8051F040内部集成CAN控制器的原理及实现总线数据采集系统的硬件和软件方案。
1 CAN总线的网络结构
本总线数据采集系统主要有两部分组成,上位机通过UART转USB的电路与PC机实现通信,可以通过PC机对节点发送命令,收集并存储数据,修改过程参数等等功能。节点由带有CAN控制器的微处理器C8051040和CAN收发器构成。CAN收发器建立CAN控制器和物理总线之间的连接,控制逻辑电平信号在CAN控制器与物理总线的物理层的传输。CAN最高工作
位速率可达1 Mbps,实际速率可能受CAN总线上所选择的传输数据物理层的限制。
2 C8051040 CAN控制器的结构及分析
C8051F040内部集成的CAN控制器符合Bosch CAN2.0A和Bosch CAN2.0B技术规范,允许
使用CAN
协议进行串行通讯。CAN控制器主要由CAN 控制核、消息RAM (与C8051 RAM 相互独立)、消息处理器、模块接口和CAN寄存器组成。CAN消息RAM存储消息对象和标志码,CAN控制器共有32个信息目标可供配置来用于发送或接收数据;CAN寄存器用于控制和配置CA
143214
N控制核和消息处理器以及对消息RAM的访问接口模块用于C8051F040与整个CAN控制器交换数据;CAN控制核用于串行并行数据的转换。所有数据发送和验收滤波的协议处理全部由CAN控制器完成,不用单片机内核的干预,使得用于CAN通信的CPU带宽最小,其结构
如图2所示。
CAN寄存器可分为以下3类:
1.CAN控制器协议寄存器:用于CAN控制,总线状态,位定时,错误控制,中断和测试方
式;
2.消息对象接口寄存器:用于配置32 个消息对象,向消息对象发送或从消息对象接收数据。CIP-51 MCU 通过消息对象接口寄存器访问CAN 消息RAM。当向IF1 或IF2 命令请求寄存器写一个消息对象时,相关接口寄存器(IF1 或IF2)的内容被传送到CAN RAM 中的消息
143214
对象或消息对象被传送到接口寄存器。
3.消息处理寄存器:只读寄存器。为CPU提供中断、错误、发送/接收请求和新数据等信息。 CAN控制模块之所以要设置如此烦杂的寄存器,是和CAN网络要达到的高性能,高可靠性,高实时性特点相关的。并且CAN总线是多主的,双向串行的,半双工高速同步传送的二线制
总线。所以自然会生竞争、需要仲裁和同步等问题。由其是以下三个问题需要解决:
1.由于同步信号(特别是确认位)在CAN总线上传送有物理延时;另外多个CAN独立模块晶体频率存在频率和相位微小误差;以及总线上实变信号会产生脉冲尖锋而造成的高速串行步
位去来确认传送的可靠性问题。
2.由于CPU与CAN控制核都随机的与CAN消息RAM交换数据造成的数据一致性与连贯性
的问题。
3.由于从消息RAM并行数据变成CAN串行数据在CAN总线传送时必须保持数据一贯性和可靠工作而造成的不能在传同一桢数据期内被中断,又保证传送失败时不能丢失数据的问题 第一个问题是通过不同CAN节点之间的位时序配置来解决的。根据CAN规范,一个位时被分成4个时段(参见图3 ),即同步时段,传播时段,相位缓冲时段1 ,相位缓冲时段2。每一个时段有多个特定的可编程决定个数的量子时间。同步段是为了减小CAN总线跳变相位误差而设计;传播时段是用来补偿网络物理时延的,该时延包括信号在总线上的传播时间和CAN节点内部的时延;相位缓冲段1和2用来补偿振荡器的误差和噪声尖峰,它的大小一方面由初始化确定,另一方面它可由CAN控制器 …… 此处隐藏:3944字,全部文档内容请下载后查看。喜欢就下载吧 ……
上一篇:常用的双手进针法有哪些
下一篇:害虫防治原理和方法