1 智能节点硬件规划
C8051F040中内置CAN总线协议操控器,只需外接总线驱动芯片和恰当的抗搅扰电路就能够很方便地树立一个有用的CAN总线智能测控节点。本文选用PH ILIP公司的TJA1050T CAN总线驱动器,硬件原理图如图1所示。
图1智能节点电路
图1中C8051F040 的CAN信号接纳引脚RX 和发送引脚TX 并不直接衔接到TJA1050T 的RXD和TXD端,而是经由高速光耦6N137进行衔接,完结CAN总线各节点的电气阻隔。为了完结真实意义上彻底的电气阻隔,光耦部分的VA和VB有必要经过DC-DC 模块或许是带有多个阻隔输出的开关电源模块进行阻隔。为避免过流冲击, TJA1050T 的CANH和CANL引脚各经过一个5Ω 的电阻衔接到总线上。并在CANH 和CANL 脚与地之间并联2个30pF 的电容,用于滤除总线上高频搅扰。而防雷击管D1和D2能够起到产生瞬变搅扰时的维护效果。
TJA1050T的8脚衔接到C8051F040的一个端口,用于形式挑选。TJA1050T有高速形式和静音形式,正常作业在高速形式;而在静音形式下, TJA1050T 的发送器被禁能,履行只听功用,可用于避免因为CAN操控器失控而形成的网络堵塞。
2 智能节点通讯软件规划
2. 1 CPU对CAN寄存器的拜访机理
C8051F040中的CAN寄存器分红3类: CAN操控器协议寄存器,音讯目标接口寄存器,音讯处理器寄存器。关于操控CAN首要功用的最重要的3个寄存器能够像独自的特别功用寄存器( SFRs)相同选用直接拜访的办法进行拜访。它们分别是CAN操控寄存器,CAN测验寄存器和CAN状况寄存器。而关于其他一些寄存器则经过一个直接的指针机制进行拜访。
拜访办法为首要在CAN0ADR 寄存器中输入欲拜访寄存器的索引号,然后经过CAN数据寄存器(CAN0DATH 和CAN0DATL) 拜访该CAN寄存器。为加速对频频拜访的接口寄存器的拜访速度,在拜访索引规模0x08~0x12 (接口寄存器1)和0x20~0x2A(接口寄存器2)时有主动加1 功用。当CAN0ADR 中的索引号坐落这两个规模之内时, CAN0ADR 在每次读/写CAN0DATL 时能主动加1,指向下一个CAN寄存器的16位字。当然,选用直接拜访办法的寄存器也能够选用直接拜访办法进行拜访。
2. 2 CPU对音讯目标的拜访机理
C8051F040中的CAN模块为CAN总线通讯供给了一个音讯邮箱(Message RAM),音讯邮箱中包含有32个独立的音讯目标(Message Object),每个音讯目标的ID校验码和检验滤波码均能够独自进行装备,用于音讯的传送和接纳。为避免CPU 拜访音讯邮箱和CAN音讯接纳传送之间的抵触, CPU并不直接拜访音讯邮箱中的音讯目标,而是经过两组音讯目标接口寄存器( IF1和IF2)来进行拜访。
拜访办法为,当CPU要对一个音讯目标进行写入操作时,首要对寄存器组的指令屏蔽寄存器(CommandMask Register)进行设置,用于确认对音讯目标的哪些域进行写入,然后对音讯缓冲寄存器进行设置,最终在指令恳求寄存器(Command Request Register)中写入欲写入的音讯目标的号码,完结对音讯目标的写入拜访。
而读取的办法是,首要对寄存器组的指令屏蔽寄存器进行设置,确认音讯目标的哪些部分将要被读出,最终在指令恳求寄存器中写入欲读出的音讯目标的号码,这样音讯目标欲读取的内容就传入音讯接口寄存器组中的音讯缓冲寄存器中,供CPU读取。一般状况音讯接口寄存器组1用于音讯目标的写入,而寄存器组2用于音讯目标的读出。
2. 3 CAN操控器通讯软件的完结
一般状况下最基本的CAN总线节点的通讯软件包含3个部分: CAN节点的初始化,音讯的传送,音讯的接纳。
2. 3. 1 CAN节点的初始化
智能节点的初始化首要包含以下几个部分: CAN引脚输出办法的设置,波特率参数的设置,音讯目标的初始化,以及当答应接纳或发送中止时对相应中止答应位的设置。要进入初始化状况,有必要设定CAN操控寄存器中的Init位为1。首要设置CANTX端口的输出办法,经过设置端口交叉开关寄存器3 (XBR3)中的位7CTXOUT挑选CANTX端口是作业在漏极开路仍是推挽输出办法下。默许状况下, CANTX引脚作业在漏极输出办法下。接着设置波特率。设定CCE位为1,将设置参数写入相应的寄存器,包含位守时寄存器和BRP扩展寄存器(低通讯速率时运用) 。
然后经过音讯目标接口寄存器组( IFX)对音讯目标进行设置。例如经过设置Dir确认这是一个发送音讯目标仍是一个接纳音讯目标;设置Xtd位确认是运用规范帧仍是扩展帧,等等。假如答应接纳中止或发送中止则有必要设定TxIE 或RxIE位。关于不运用的音讯目标能够经过设置它的MsgVal位为0加以制止。在答应接纳中止或许发送中止时,相应中止答应位有必要被设置。这些位包含CAN操控寄存器的IE位, E IE2 寄存器的ECAN0位。最终复位Init和CCE 位完结设置。CAN节点的初始化的流程图如图2所示。
图2 CAN节点初始化流程图
2. 3. 2 中止办法下的CAN节点通讯程序
它的一般流程是:首要在中止服务子程序中读取中止寄存器的值,获取引起中止的音讯目标的号码;然后经过判别状况寄存器中是RxOK仍是TxOk置位来确认是接纳仍是发送中止。假如是发送中止,则设定指令屏蔽寄存器中ClrIntPend位和NewDat位为1,并经过读取相应的音讯目标来铲除相应音讯目标的中止等候位和新数据位;假如是接纳中止,在铲除上述位的一起读取音讯目标中的相应数据,最终铲除状况寄存器中的相应位。流程图如图3所示。
图3 中止办法下的CAN节点通讯程序
2. 3. 3 查询办法下的CAN节点音讯发送接纳程序
关于作业在查询办法下的发送音讯目标,有两种办法来进行音讯的发送。
榜首种办法为设定其音讯恳求寄存器的Txqst位为1发动一个新的音讯的发送,然后经过查询状况寄存器中的TXOK位来判别音讯是否成功发送。发送成功后铲除相应的状况标志位。流程框图如图4( a)所示。
第二种办法为首要经过查询发送恳求寄存器中相应的Txqst位是否为0来判别前次音讯是否已成功传送,假如已成功传送则可经过设定其音讯恳求寄存器的Txqst位为1发动一个新的音讯的发送。流程框图如图4( b)所示。
图4CAN节点音讯发送接纳程序
关于作业在查询办法下的接纳音讯目标,首要经过查询状况寄存器中的RXOK是否置位来判别是否成功接纳到一个音讯,然后经过查询新数据寄存器中设定为接纳音讯目标的新数据位(NewDat)是否为1来判别哪些音讯目标成功接纳到了音讯,然后顺次读取这些音讯目标中的音讯,最终铲除状况寄存器的RXOK位。留意,成功接纳到一个音讯,则不管它是否经过检验滤波,都会置位RXOK。查询办法的CAN总线通讯的流程图如图4( c)所示。关于实践的CAN总线测控节点来说,一般状况发送选用查询办法,而接纳选用中止办法。