利用CAN进行简单的数据发送

本文介绍了如何使用MC9S12XS128MAA单片机进行CAN总线的初始化配置,并展示了如何发送CAN标准帧。通过设置CAN相关寄存器,如CANCTL0、CANCTL1、CANBTR0、CANBTR1等,实现CAN通信。程序示例中,详细说明了ID号的处理和数据存放,并使用ZLG-USBCAN工具验证了CAN数据的正确发送。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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] :同步跳跃宽度

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值