STM32 CAN 参数设置

这里以STM32F103为例

已知:

1. CAN1挂载在APB1时钟线上,查看时钟配置得到APB1的外设时钟为36M

2. 目标波特率为 125k

3. 采样率设置在80%-90%为佳,最佳为87.5%

计算公式

    波特率 =  (APB1时钟频率)/(Prescaler *( SW1+BS1+BS2))

    采样点 =  (1+BS1)/(1+BS1+BS2)

可以看出最佳采样点设置规律BS1=7 BS2=1,这样采样点刚好为87.5%,但是往往事与愿违,这个时候得到的波特率不尽如意,这里就要根据目标波特率,修改BS1和BS2使其采样点为80% - 90%为佳;

另外再多说一下,这里CAN的分频系数设置不用减1,也就是分频系数为1 则不进行分频,分频系数为2 则进行2分频,这里与定时器的分频设置有区别,定时器设置分频系数为0则不进行分频,分频系数为1则为2分频

简单的说:can分频 = 分频系数 timer分频 = 分频系数+1

查看源码可以看到区别

/* CAN分频源码 */
MX_CAN_Init()
	HAL_CAN_Init(&hcan)
		 WRITE_REG(hcan->Instance->BTR, (uint32_t)(hcan->Init.Mode      |
                                              hcan->Init.SJW            |
                                              hcan->Init.BS1            |
                                              hcan->Init.BS2            |
                                              (hcan->Init.Prescaler - 1U)));
/* Timer分频源码 */		
MX_TIM4_Init()
	HAL_TIM_Base_Init(&htim4)
		TIM_Base_SetConfig(htim->Instance, &htim->Init)
			TIMx->PSC = (uint32_t)Structure->Prescaler;

 

 

 

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32中设置CAN的速率为1MHz,需要使用CAN_InitTypeDef结构体来配置CAN的初始化参数。在该结构体中,需要设置Prescaler参数来配置CAN外设的时钟分频。Prescaler的值可以设置为1-1024,用于将系统时钟分频得到CAN的时钟频率。具体的代码如下所示: CAN_InitTypeDef can_init; can_init.Prescaler = 4; // 设置Prescaler为4,将系统时钟分频为1MHz can_init.Mode = CAN_MODE_NORMAL; // 设置CAN的工作模式为正常模式 can_init.SyncJumpWidth = CAN_SJW_1TQ; // 设置SJW极限值为1个时间单位 can_init.TimeSeg1 = CAN_BS1_8TQ; // 设置BS1段长度为8个时间单位 can_init.TimeSeg2 = CAN_BS2_3TQ; // 设置BS2段长度为3个时间单位 can_init.TimeTriggeredMode = DISABLE; // 禁用TTCM时间触发功能 can_init.AutoBusOff = DISABLE; // 禁用ABOM自动离线管理功能 can_init.AutoWakeUp = DISABLE; // 禁用AWUM自动唤醒功能 can_init.AutoRetransmission = ENABLE; // 启用NART自动重传功能 can_init.ReceiveFifoLocked = DISABLE; // 禁用RFLM锁定FIFO功能 can_init.TransmitFifoPriority = DISABLE; // 禁用TXFP报文优先级的判定方法 以上代码将CAN的时钟分频设置为4,即将系统时钟分频为1MHz,其他参数根据需要进行配置。 #### 引用[.reference_title] - *1* *2* *3* [秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4 CAN!](https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值