板间CAN通信传输数据教程-------基于HAL库

目录

一、CubeMx配置

二、代码


适用于板间CAN通信传输数据------锂离子爆肝著作(假的

包括:普通数据传输、标志位传输

板子为一块F103C6T6和F407ZGT6之间进行数据传输

一、CubeMx配置

F103配置

1、RCC

2.sys

3.GPIO

4.定时器

定时器配置小知识点:(1ms为例)

5.CAN

CAN配置小知识点:

首先需要配置CAN通信的波特率。用的是Stm32F103,分频系数设为4后,cubemx会自动完成Time Quantum(TQ)的计算;将得到的TQ乘以TBS1、TBS2、SJIY之和刚好就是1us,对应的波特率是1M,这是CAN总线支持的最高通讯频率。通信频率需要根据自己需要设置,注意的是同一条CAN总线上的设备的波特率需要一致。

111.11111111111111*(5+3+1)=999.9999999999999=1000ns=1us

即公式: CAN波特率=TQ*(TBS1+TBS2+SJY)

也能够直接用公式: CAN波特率=APB总线频率/分频系数/(TBS1+TBS2+SJY)

这里要注意的是先设置TS1和TS2,再将预分频系数调4,即从最初一开始的16变4

F407配置

1-2步骤都是相同的

3. GPIO

4.定时器设置

5.CAN设置

二、代码

1.文件移植

    

2.添加头文件

3.DefineLED

在main.h文件中加入

F1芯片灯

#define LED0_ON HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET)

#define LED1_ON HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET)

#define LED2_ON HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11, GPIO_PIN_RESET)

#define LED0_OFF HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET)

#define LED1_OFF HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_SET)

#define LED2_OFF HAL_GPIO_WritePin(GPIOB, GPIO_PIN_11, GPIO_PIN_SET)

F4芯片灯

#define LED0_ON HAL_GPIO_WritePin(GPIOE, GPIO_PIN_13, GPIO_PIN_RESET)

#define LED1_ON HAL_GPIO_WritePin(GPIOE, GPIO_PIN_14, GPIO_PIN_RESET)

#define LED2_ON HAL_GPIO_WritePin(GPIOE, GPIO_PIN_15, GPIO_PIN_RESET)

#define LED0_OFF HAL_GPIO_WritePin(GPIOE, GPIO_PIN_13, GPIO_PIN_SET)

#define LED1_OFF HAL_GPIO_WritePin(GPIOE, GPIO_PIN_14, GPIO_PIN_SET)

#define LED2_OFF HAL_GPIO_WritePin(GPIOE, GPIO_PIN_15, GPIO_PIN_SET)

4.点个灯试一下(两块板都是一样的)

都在main.c文件中:

5.开始正题

声明:我的发送数据板是F407 接收板为F103

传输普通数据

发送板F407

main.c文件

Canbus文件

蓝色框框为使用的时候需要更改的地方,其余的都是固定模板,由于我是四个数组,所有为四个iq

这样就可以直接调用函数发送了

直接调用里面的函数就可以将四位浮点数拆成四个数组了

传输标志位

Canbus文件

思路一样,由于所传输的状态标志位是一连串的u8,所有传输8个标志位就直接需要八个数组即可。

main.c文件

接收板F103

main.c文件(main.c主要是做验证标志位)

关于id在.h文件

关于标志位

 

  • 代码

 百度网盘自取哦,欢迎指正:

链接:https://pan.baidu.com/s/1R-PzymScR40SmUsZ_ryWDQ?pwd=k3j0 
提取码:k3j0

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值