CAN是控制器局域网络(Controller Area Network, CAN)的简称,是国际上应用最广泛的现场总线之一。 在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议。
本例通过用MC9S12XS128MAA来实现CAN标准帧的发送。
首先需要对CAN进行初始化配置,以下为本例所用到的寄存器介绍:
CANCTL0寄存器
RXFRM = 1 时,收到有效消息
= 0 时,未收到有效消息
RXACT = 1时,MSCAN正在接收消息
= 0时,MSCAN正在发送或空闲
CSWAI = 1 时,在等待模式下,模块停止计时
= 0时,等待模式期间模块不受影响
SYNCH = 1 时,MSCAN与CAN同步
= 0 时,MSCAN与CAN不同步
TIME = 1 时,启用内部 MSCAN计时器
= 0 时,禁用内部 MSCAN计时器
WUPE = 1 时,唤醒启用
= 0 时,唤醒禁用
SLPRQ = 1 时,CAN总线空闲时MSCAN进入休眠模式
= 0 时,MSCAN运行在正常模式
INITRQ = 1 时,MSCAN进入初始化模式
= 0 时,MSCAN运行在正常模式
CANCTL1寄存器
CANE = 1 时,MSCAN使能
= 0 时,MSCAN禁止
CLKSRC = 1 时,MSCAN时钟来源于总线
= 0 时,MSCAN时钟来源于晶振
LOOPB = 1 时,启用环回自检
= 0 时,禁用环回自检
LISTEN = 1 时,帧听模式开启
= 0 时,运行在正常模式
BORM = 1 时,根据用户请求总线断开恢复
= 0 时,自动总线断开恢复
MUPM = 1 时,只有当CAN总线上的主脉冲长度为t wup时,MSCAN才会唤醒
= 0 时,MSCAN任何时候都可唤醒
SLPAK = 1 时,睡眠模式激活
= 0 时,运行在正常模式
INITAK = 1 时,初始化模式激活
= 0 时,运行在正常模式
CANBTR0寄存器
SJW[1:0] :同步跳跃宽度