基于C8051F040的CAN总线智能.doc

基于C8051F040的CAN总线智能.doc

ID:58863694

大小:142.50 KB

页数:5页

时间:2020-09-22

基于C8051F040的CAN总线智能.doc_第1页
基于C8051F040的CAN总线智能.doc_第2页
基于C8051F040的CAN总线智能.doc_第3页
基于C8051F040的CAN总线智能.doc_第4页
基于C8051F040的CAN总线智能.doc_第5页
资源描述:

《基于C8051F040的CAN总线智能.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、基于C8051F040的CAN总线智能节点设计C8051F040及其内部CAN控制器C8051F040内部集成有CAN控制器,主要由CAN内核、消息RAM、消息处理单元和控制寄存器组成,图1为C8051F040集成CAN的结构图。图1中,CAN内核由CAN控制器和负责消息收发的内部寄存器组成,消息RAM用于存储消息目标和每个目标的仲裁掩码,并且每一个消息目标都有它自己的识别掩码,所有的数据传输和接收滤波都是由CAN控制器完成的。消息处理单元用于根据寄存器中的信息来控制CAN内核中移位寄存器和消息RAM之间的数据

2、传递,同时它还可用来管理中断的产生。图1 C8051F040集成CAN的结构图CAN内部寄存器中存储了所有CAN的控制和配置信息,其中包括控制寄存器、状态寄存器、设置波特率的位定时寄存器、测试寄存器、错误计数器和消息接口寄存器。通常CAN内核不能直接访问消息RAM,而必须通过接口寄存器IF1或IF2来访问。另外,CIP-51的SFR并不能直接访问CAN内部寄存器的所有单元,其配置CAN、消息目标、读取CAN状态以及获取接收数据、传递发送数据都由SFR中的6个特殊寄存器来完成。其中CAN0CN、CAN0TST和C

3、AN0STA3个寄存器可直接获取或修改CAN控制器中对应的寄存器,而CAN0DATH、CAN0DATL、CAN0ADR3个寄存器主要用来访问修改其它不能直接访问CAN内部寄存器,其中CAN0ADR用来指出要访问寄存器的地址,CAN0DATH、CAN0DATL这时就相当于要访问的16位寄存器的高、低字节的映射寄存器,而对它们的读写则相当于对所指向寄存器的读写。图2给出了CIP-51如何访问CAN中控制寄存器和每个消息的路径图。图2CIP-51访问CAN中控制寄存器和每个消息的路径图基于C8051F040的CAN智

4、能节点设计由于CAN总线采用多主方式工作,所以CAN总线系统具有与DCS(分布式控制系统)不一样的拓扑结构。图3所示是某型火控系统的总线系统结构。该系统结构最大的特点就是所有的节点都能以平等的地位挂接在总线上。CAN总线智能节点之间能够相互进行通信,以完成数据交换。一个智能节点通常至少包括三个部分,即负责节点任务控制的单片机、总线控制器及总线收发器。由于C8051F040单片机为内部集成有CAN控制器,因此智能节点主要由C8051F040和CAN收发器TJA1050组成。图3某型火控系统的CAN总线结构图4是一

5、个以C8051F040为核心的智能节点硬件框图。由于C8051F040集成的是CAN控制器,要使CAN总线得以运行,还需外加CAN总线收发器,常用的CAN总线收发器有Philips公司的PCA82C250收发器、高速TJA1050收发器等。本系统采用了TJA1050高速CAN收发器来替代传统的PCA82C250收发器,TJA1050具有电磁辐射低、防短路、不上电时对总线无影响等特点,它的引脚S可以选择高速或静音两种模式,并可由C8051F040的P4.0控制,CAN总线上两端节点8一般加上两个60W的电阻和47

6、nf的电容对信号吸收,以避免信号反射。为了进一步提高系统的抗干扰能力,在CAN控制器引脚CANTX、CANRX和收发器TJA1050之间并不是直接相连,而是通过由高速光耦6N137构成的隔离电路后再与TJA1050相连,这样就可以很好的实现总线上各节点的电气隔离。这部分增加了节点的复杂性,但它却提高了节点的稳定性和安全性。图4 智能节点硬件框图CAN智能节点主要完成的任务是:将相关数据数传送给其它节点,同时从总线上接收本节点所需要的数据。因此智能节点的CAN通信主要包括系统初始化程序、发送程序、接收程序等。在本

7、例中,系统软件采用结构化程序设计方案,使其具有较好的模块性和可移植性,对于不同的系统功能或不同的应用环境,可以方便地进行编程重组。系统初始化程序初始化程序主要完成对所有的报文对象进行初始化(一般将所有值置零),对CAN控制寄存器(CAN0CN)、位定时寄存器(BITREG)进行设置,还要对发送报文对象和接收报文对象分别进行初始化。其中,位定时寄存器的设置较为复杂,这里我们使用外部晶振为8MHz,CAN通信速率为500k/s,得到BITREG的初始值为0x2301。主程序中规定对象初始化、发送和接收初始化,最后才

8、启动CAN处理机制(对BITREG和CAN0CN初始化),下面为CAN启动程序:voidstart_CAN(void){SFPRAGE=CAN0_PAGE; //指向CAN0   页面CAN0CN

9、=0x41; //将CCE和Init置“1”   开始初始化CAN0ADR=BITREG;//指向位定时寄存器   进行配置CAN0DAT=0x2301; //位率为500k/sCAN0CN

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。