C8051F040中CAN控制器的应用
[09-12 18:13:39] 来源:http://www.88dzw.com 单片机学习 阅读:8391次
文章摘要: 摘要:介绍C8051F040单片机内部CAN控制器的应用。详细叙述此控制器的构成及其访问方式,指出在使用时是如何配置控制器的相关控制寄存器,并且给出CAN控制器在应用中的物理层硬件电路和应用层软件设计。 关键词:CAN控制器 寄存器 报文对象 C8051F040 单片机与CAN总线连接的传统方式是将CPU与总线控制器和总线收发器相连后再接入总线网络,这样使CPU外围电路复杂化,整个系统受外部影响较大。为了解决这一问题,很多单片机厂商纷纷将CAN控制器集成在单片机芯片上。目前,单片机内部集成的CAN控制器有Motorola公司的 MC68HC912DG128A、Philips公司
C8051F040中CAN控制器的应用,标签:单片机开发,单片机原理,单片机教程,http://www.88dzw.com摘要:介绍C8051F040单片机内部CAN控制器的应用。详细叙述此控制器的构成及其访问方式,指出在使用时是如何配置控制器的相关控制寄存器,并且给出CAN控制器在应用中的物理层硬件电路和应用层软件设计。 关键词:CAN控制器 寄存器 报文对象 C8051F040 单片机与CAN总线连接的传统方式是将CPU与总线控制器和总线收发器相连后再接入总线网络,这样使CPU外围电路复杂化,整个系统受外部影响较大。为了解决这一问题,很多单片机厂商纷纷将CAN控制器集成在单片机芯片上。目前,单片机内部集成的CAN控制器有Motorola公司的 MC68HC912DG128A、Philips公司的P87C591、Atmel公司的AT89C51CC01和AT89C51CC02、Intel公司的TN87C196CA和TN87C196CB以及Cygnal公司的C8051F040等。 不同单片机内部CAN控制器的使用方法有所不同,但存在着很多相似之处。这里以C8051F040为列详细介绍其内部CAN控制器的使用方法,希望通过这篇文章能给初学带来方便,并能和广大的单片机爱好者就这一问题做进一步的讨论。1 C8051F040 CAN控制器构成及访问方式 C8051F040单片机是美国Cygnal公司生产的完全集成的混合信号系统级芯SoC(System on Chip),具有与8051指令集完全兼容的CIP-51内核。它在一块芯片上集成了构成一个单片机数据采样或控制系统所需要的几乎所有模拟和数字外设及其它功能部件。它具有64KB Flash、4352B RAM、CAN控制器2.0、2个串行接口、5个16位定时器、12位A/D转换器、8位A/D转换器及12位D/A转换器等,它内部还带有JTAG接口,使调试变得非常方便。 C8051F040内部集成的CAN控制器为Bosch CAN控制器。此CAN控制器有以下几部分构成:CAN内核、报文RAM(与C8051 RAM相互独立)、报文处理状态机制和CAN控制寄存器。其结构框图如图1所示。 在CAN控制器里只有三个寄存器可通过CIP-51中的特殊功能寄存器直接访问,其它的寄存器只能通过CAN0ADR、CAN0DATH和CAN0DATL寄存器以地址索引的方式间接访问。在使用CAN控制器时,重点和难点是对CAN控制器的寄存器的使用,其内部寄存器的分类及其主要功能如下:(1)CAN控制器协议寄存器 该协议寄存器是用来配置CAN控制器,处理各种中断,监控总线状态以及置控制器为测试模式。CAN控制器协议寄存器可使用C8051 MCU特殊功能寄存器通过索引方式间接访问,其中有些还可以很方便的通过C8051内部特殊功能寄存器直接寻址来访问。这部分的寄存器有:CAN控制寄存器(CAN0CN)、CAN状态寄存器(CAN0STA)、CAN测试寄存器(CANTST)、错误计数寄存器、位定时寄存器和波特率预比列因子扩展寄存器。其中,CAN0CN、CAN0STA和CANTST可通过C8051 MCU特殊功能寄存器直接访问,其它的只能通过间接访问。(2)报文对象接口寄存器 CAN控制器中有两组报文对象接口寄存器,它们用来配置报文RAM中32个报文对象是用来向CAN总线发送数据,还是从CAN总线接收数据。当其中的一组被设置为向报文RAM中写数据,另一组则从报文RAM中读取数据。利用此接口寄存器可以避免CPU访问报文RAM与CAN报文接收和发送缓冲转移之间的冲突。所有的报文对象都存储在报文RAM里面,通过报文对象寄存器对其进行访问和配置,这些寄存器要通过C8051的 CAN0ADR和CAN0DAT寄存器,使用间接索引地址方式来访问。这部分寄存器有:IFX命令请求寄存器、IFX命令屏蔽寄存器、IFX屏蔽寄存器1、IFX屏蔽寄存器2、IFX仲裁寄存器1、IFX仲裁寄存器2、IFX报文控制寄存器、IFX数据寄存器A1、IFX数据寄存器A2、IFX数据寄存器B1和IFX数据寄存器B2。(3)报文处理寄存器 所有的报文处理寄存器都是只读寄存器。通过读取它们的值可以实时地判断相应报文对象的状态,从而使CAN控制器能正确运行。它们的标识位由CAN0ADR、CAN0DATH和CAN0DATL通过索引方式间接来访问。报文处理寄存器提供中断、错误、发送/接收请求和新数据信息。这部分的寄存器包括:中断寄存器、发送请求寄存器、新数据寄存器、中断队列寄存器和报文有效寄存器。 那么,通过CAN0ADR、CAN0DATH和CAN0DATL寄存器以索引方式间接访问CAN控制器中寄存器的过程会怎样呢?因为每个CAN控制器寄存器都有一个索引号,如果要访问某一CAN控制寄存器,只需将此寄存器的索引号写入CAN0ADR寄存器,而数据读/写操作通过CAN0DATH和CAN0DATL来完成。例如:如果需要对位定时寄存器重新配置时,只需向CAN0ADR寄存器中写入0X03,将新配置的数据的低字节写入CAN0DATL中,高字节写入CAN0DATH中。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位;另一种是顺序扫描中断发生寄存器。图23 CAN控制器的应用 CAN总线一般用在工业检测和控制现场,它将各功能模块连接在一起组成一个现场级通信网络。在本应用中,CAN总线完成下位机各部分之间的通信以及各下位机与上位机之间的通信。下位机以单片机C8051F040为核心,上位机由PC机构成。下位机的CAN通信物理层的电路在下面将做详细说明,为了完成上位机与下位机的通信,需要外加一块PC-CAN通信卡。3.1 CAN控制器外围硬件电路实现 由于Cygnal内部的CAN控制器只是个协议控制器,不能提供物理层驱动,所以在使用时还需外加CAN总线收发器,常用的CAN总线收发器有Philips公司的PCA82C250收发器、高速TJA1050收发器等。这里使用的是PCA82C250收发器、高速TJA1050收发器等。这里使用的是PCA82C250收发器,它可提高总线的差动发送和接收能力。它与ISO11898标准完全兼容,有三种不同的工作方式,即高速、斜率控制和待机,可根据实际情况选择。此通信物理层电路图
Tag:单片机学习,单片机开发,单片机原理,单片机教程,单片机学习
《C8051F040中CAN控制器的应用》相关文章
- › 芯片引脚及主要特性MC68HC805C4 8位微控制器(A/D)
- › 芯片引脚及主要特性MC68HC805B6 8位微控制器(A/D)
- › 74系列数字电路74HC805六个2输入或非门驱动器
- › C8051F EC2 JTAG仿真器电路图
- › C8051F340的USBXpress开发包USB通信设计
- › Silicon Laboratories推出C8051F336系列高整合8位微控制器
- 在百度中搜索相关文章:C8051F040中CAN控制器的应用
- 在谷歌中搜索相关文章:C8051F040中CAN控制器的应用
- 在soso中搜索相关文章:C8051F040中CAN控制器的应用
- 在搜狗中搜索相关文章:C8051F040中CAN控制器的应用
分类导航
最新更新