GD32F407ZGT6之CAN通信

这今天领导一直让我调GD32F407的芯片,为后续项目做准备,要求调通CAN,IO通信,PWM输出即可,仨都有结果了,感觉网站上的这个CAN通信不太多,刚好我调通了,顺便分享一下经验心得吧。

1.CAN初始化配置

首先还是老规矩,先初始化板子上的所有外设,这是系统函数自带的,然后打开我CAN路所在的时钟,也就是GPIOF,这个和stm32有点区别就是比较简洁,直接一个函数又使能又初始化,国产的崛起有望了XDM!然后就是CAN2的初始化了,我的外设是一个扬声器喇叭,这玩意还是蛮好玩的,接入USB线之后(要断电),可以看见里面已经有了相关的音乐文件,根据需要塞入自己想要的语音效果即可,然后断掉USB线,接入电源和IO通信线,根据我所发的报文可以响应我要的声音效果,这里不做赘述。然后我讲一下这个初始化函数里的相关参数。

board_init();   //初始化外设
rcu_periph_clock_enable(RCU_GPIOF); //打开F时钟
CAN2_Mode_Init(CAN_BT_SJW_1TQ,CAN_BT_BS2_6TQ,CAN_BT_BS1_7TQ,24,0);//CAN工作模式模式,波特率125Kbps

2.CAN2_Mode_Init(u8 tsjw,u8 tbs2,u8 tbs1,u16 brp,u8 mode)

CAN_InitStructure.resync_jump_width=tsjw;

重新同步跳跃宽度(Tsjw)为tsjw+1个时间单位,这玩意咋选择呢,在库函数GD32F4XX.h里面有相关定义:/* CAN resynchronisation jump width */
#define CAN_BT_SJW_1TQ                     ((uint8_t)0x00U)             /*!< 1 time quanta */
#define CAN_BT_SJW_2TQ                     ((uint8_t)0x01U)             /*!< 2 time quanta */
#define CAN_BT_SJW_3TQ                     ((uint8_t)0x02U)             /*!< 3 time quanta */
#define CAN_BT_SJW_4TQ                     ((uint8_t)0x03U)             /*!< 4 time quanta */

CAN_InitStructure.time_segment_2=tbs2;//Tbs2范围CAN_BS2_1tq ~	CAN_BS2_8tq

/* CAN time segment 2 */
#define CAN_BT_BS2_1TQ                     ((uint8_t)0x00U)             /*!< 1 time quanta */
#define CAN_BT_BS2_2TQ                     ((uint8_t)0x01U)             /*!< 2 time quanta */
#define CAN_BT_BS2_3TQ                     ((uint8_t)0x02U)             /*!< 3 time quanta */
#define CAN_BT_BS2_4TQ                     ((uint8_t)0x03U)             /*!< 4 t

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值