基于AT90CAN128单片机的某车型CAN总线系统设计
0 ; /*MOb 8~14中断禁止*/
CANBT1 = 0x02 ; /*设置波特率为500kbps*/
CANBT2 = 0x20 ;
CANBT3 = 0x01 ;
CANTCON = 0x8F ; /*设置定时器预定标*/
/*以“联合制动单元状态查询消息”为例*/
CANPAGE = TX_PAGE ; /*指定此消息的MOb页(寄存器中的高4位)*/
CANCDMOB = 0x17 ; /*禁止状态,IDE位为1表示扩展帧,数据长度代码为7*/
CANIDT1 = 0x84 ; /*标识符设置*/
CANIDT2 = 0xB1 ;
CANIDT3 = 0x18 ;
CANIDT4 = 0xF2 ;
CANIDM1 = 0xFF ; /*标识符屏蔽设置*/
CANIDM2 = 0xFF ;
CANIDM3 = 0xFF ;
CANIDM4 = 0xFF ;
CANGCON = 0x02 ; /*进入操作模式*/
While ( ENFG == 0 ) ; /*测试CANGSTA中的ENFG位是否为1*/
}
2.3.2 消息的发送部分
消息的发送均采用中断方式实现。首先通过设置CANPAGE寄存器来指定被发送的页数,将数据装载到CANMSG寄存器中,然后由CANCDMOB寄存器来控制发送动作,将消息发送出去,同时将触发CANSTMOB中的TXOK中断。
联合制动单元提供给驾驶员计算机终端的消息内容包括:联合制动单元状态信息(7字节,分别为液力制动扭矩、机械制动扭矩、合成扭矩、速度以及紧急回路和正常油压的数值,以及正常制动回路油位和紧急制动回路油位的报警状态)、联合制动单元报警信息(2字节,分别为正常制动回路油位报警和紧急制动回路油位的报警)、联合制动单元制动返回消息(2字节,分别为收到的前驱或后驱制动命令的命令数据和命令值)等。
2.3 软件设计(CAN总线通讯部分)
2.3.1 初始化部分
初始化前将CAN通用控制寄存器的最高位置1(复位模式)。完成后,回到操作模式。
下面给出了CAN控制器的初始化程序:
void CAN_INIT ( void )
{
CANGCON = 0x80 ; /*进入复位模式并且复位MOb*/
while ( ENFG == 1 ) ; /*测试CANGSTA中的ENFG位是否为0*/
CANGIE = 0xB0 ; /*使能所有中断及接收、发送中断*/
CANIE2 = 0xFF ; /*MOb 0~7中断使能*/
CANIE1 = 0x00 ; /*MOb 8~14中断禁止*/
CANBT1 = 0x02 ; /*设置波特率为500kbps*/
CANBT2 = 0x20 ;
CANBT3 = 0x01 ;
CANTCON = 0x8F ; /*设置定时器预定标*/
/*以“联合制动单元状态查询消息”为例*/
CANPAGE = TX_PAGE ; /*指定此消息的MOb页(寄存器中的高4位)*/
CANCDMOB = 0x17 ; /*禁止状态,IDE位为1表示扩展帧,数据长度代码为7*/
CANIDT1 = 0x84 ; /*标识符设置*/
CANIDT2 = 0xB1 ;
CANIDT3 = 0x18 ;
CANIDT4 = 0xF2 ;
CANIDM1 = 0xFF ; /*标识符屏蔽设置*/
CANIDM2 = 0xFF ;
CANIDM3 = 0xFF ;
CANIDM4 = 0xFF ;
CANGCON = 0x02 ; /*进入操作模式*/
While ( ENFG == 0 ) ; /*测试CANGSTA中的ENFG位是否为1*/
}
2.3.2 消息的发送部分
消息的发送均采用中断方式实现。首先通过设置CANPAGE寄存器来指定被发送的页数,将数据装载到CANMSG寄存器中,然后由CANCDMOB寄存器来控制发送动作,将消息发送出去,同时将触发CANSTMOB中的TXOK中断。
AT90CAN128 单片机 CAN总线 联合制动 通讯协议 相关文章:
- AT90CAN128的双机热备结构继电器驱动系统设计(10-15)
- 基于AVR单片机的某车型CAN总线系统设计(01-03)
- FPGA的DSP性能揭秘(06-16)
- 基于单片机通用引脚的软件UART设计(10-16)
- 分时操作系统思想在单片机中的具体应用 (10-30)
- 基于AT89C51+DSP的双CPU伺服运动控制器的研究(05-26)