在cubemx中学习CAN

本文介绍了CAN总线技术,它与SPI/IIC不同,通过两条差分信号传输数据,无地址编码限制。Cubemax配置中涉及CAN模块的选择、参数设置(如预分频、波特率、时间量子等),以及数据发送和接收函数的实现,还展示了如何在测试模式下设置筛选器和发送固定标识符的数据包。
摘要由CSDN通过智能技术生成

spi/IIC不同,can发送和接数据都是通过两条线完成,形成差分信号进行传输和接收。

另外和IIC不同,不是通过对目标节点进行地址编码,而是对内容进行编码,所以理论上节点数不受限制。

由于物理层比较简洁(不像spi由片选/时钟信号/数据输入/数据输出,四个信号,串口接收发送两个信号 iic有时钟信号/数据信号两条信号线,CAN使用两条差分信号线只能表示一个信号),因此需要协议较为复杂,对数据、操作命令和同步信号等打包在一起,形成报文。

cubemax中进行配置

  1. 选芯片型号,配置时钟等一些常规的准备工作。

  1. 勾选can,并配置参数,因为只有一个板子,所以选择回环模式(发送的数据直接发送到总线和输入,不能接收总线输入的数据,一般用于调试。此外还有正常模式,静默模式,回环静默模式)

需要配置的参数有

Prescaler(for Time Quantum): 预分频系数,可以控制tq(时间量子)的时间长度,将Prescaler调为1可以看到Time Quantum的最小值。

Time quanta in bit segment 1:pbs1段有几个tqtime quantum),can通讯一个数据位包括了四部分 ss段,pts段,pbs1段,pbs2段,采样点一般在pbs1pbs2段之间,canpts段和bs1段合在一起统称pbs1

Time quanta in bit segment 2pbs2段有几个tqtime quantum

Time for one Bit:一个数据位的时间

Baud rate:波特率

Test mode:测试模式,分为正常模式,回环模式,静默模式,回环静默模式

3.勾选串口,方便调试CAN,修改文件名,生成文件。

4.在生成的代码的can.c文件中写数据发送和数据接收两个函数,并且在can.h中声明一下,方便main函数调用

并且在MX_CAN_Init的用户修改部分里添加筛选器的代码,这里将屏蔽码的低三位置1,表示接收所有标识符低三位为1的帧。

5.main函数中加入以下代码,将id(标识符)设置成低三位为1的,每次发送数据的时候发八个,但生命的数组里只有两个数据,缺少的六个自动用0补齐,循环接收发送的数据。

6.最终实验结果

接收到的数据为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值