基于STM32的CAN通讯测试:让地球仪转起来

本文介绍了基于STM32的CAN通信测试,解析了CAN协议的报文结构、SAE J1939协议以及STM32的CAN控制器配置。通过CAN收发器TJA1050连接步进电机,实现对地球仪的转动控制。通过CAN盒或USART将数据传输到PC进行测试和验证。
摘要由CSDN通过智能技术生成

虽然很早就对CAN协议有所耳闻,但自己一直没机会去探究,因此同很多人一样,对CAN的认知仅仅停留在“用在汽车领域的通讯”。由于最近一直在看锂电池BMS:

内容涉及到了CAN通信,并且工作中也会在客户那里听到一些J1939、NMEA2000等,于是就感觉是时候来了解下CAN了。

一、CAN

控制器局域网(Controller Area Network),最初是专门为解决乘用车的串行通信而研发的,其具有较高的实时处理能力、工作在较强电磁干扰下的高可靠性和良好的错误检测能力。其目的主要是简化汽车中各电子控制单元间的控制连接,降低成本。CAN协议中各通信节点通常是由控制器和收发器组成:

这种通讯结构是非主从式的,也就是任何节点都可以在总线上自由发言,广播式的通信最大的问题就是没有对象,各节点总是时刻在选取总线上自己关心的报文进行接收,然后处理,对于不关心的就过滤掉。那问题就来了,各节点是怎么来区分报文呢?这其实是自己开始时很困惑的地方,直到参悟了报文帧中的仲裁域。

二、报文

CAN的报文帧分为标准帧和拓展帧,也就是CAN2.0A和CAN2.0B,CAN2.0A是只支持标准帧,而CAN2.0B是支持拓展帧的。以常用的CAN数据帧为例,标准帧结构如下:

 标准帧总计127bits,仲裁域中的标识符有11bits,这11位的标识符不仅用作优先级而且用作报文区分,但这11位的标识符就限制了同一网络中的最大节点数,为扩大最大通讯节点,于是就有了拓展帧:

拓展帧主要是增加了18位的拓展标识符,因此拓展帧的标识符就达到了29bits,帧的总长度为150bits。

三、SAE J1939

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值