登录/注册

stm32103 can分频

更多

在STM32F103系列微控制器中,配置CAN总线波特率时,需要通过分频器(Prescaler)位时序参数共同调整。以下是配置步骤及关键要点:


1. CAN总线时钟源


2. 波特率计算公式

波特率 = CAN时钟源 / (Prescaler × 总时间量子数)

其中:


3. 配置步骤

(1) 确定分频器(Prescaler)

根据目标波特率和APB1时钟计算分频值:

Prescaler = CAN时钟源 / (目标波特率 × 总时间量子数)

(2) 设置位时序寄存器(CAN_BTR)


4. 示例:配置1 Mbps波特率

假设APB1时钟为36 MHz,目标波特率1 Mbps:

  1. 选择总时间量子数:通常设置为 9 Tq(典型值)。
    • Sync_Seg = 1 Tq
    • BS1 = 4 Tq(TS1[3:0] = 0x3)
    • BS2 = 3 Tq(TS2[2:0] = 0x2)
  2. 计算Prescaler
    Prescaler = 36 MHz / (1 Mbps × 9) = 4
  3. 配置寄存器
    CAN1->BTR &= ~(CAN_BTR_BRP); // 清除原有分频
    CAN1->BTR |=  (3 << 0);       // BRP = Prescaler - 1 = 3
    CAN1->BTR |=  (3 << 16);      // TS1 = 4 Tq (值=3)
    CAN1->BTR |=  (2 << 20);      // TS2 = 3 Tq (值=2)
    CAN1->BTR |=  (1 << 24);      // SJW = 1 Tq

5. 使用标准库/HAL库配置

(1) 标准库(StdLib)

CAN_InitTypeDef CAN_InitStruct;
CAN_StructInit(&CAN_InitStruct);

CAN_InitStruct.CAN_Prescaler = 4;           // 分频器=4
CAN_InitStruct.CAN_SJW = CAN_SJW_1tq;       // SJW=1 Tq
CAN_InitStruct.CAN_BS1 = CAN_BS1_4tq;       // BS1=4 Tq
CAN_InitStruct.CAN_BS2 = CAN_BS2_3tq;       // BS2=3 Tq
CAN_Init(CAN1, &CAN_InitStruct);

(2) HAL库

hcan.Instance = CAN1;
hcan.Init.Prescaler = 4;
hcan.Init.SyncJumpWidth = CAN_SJW_1TQ;
hcan.Init.TimeSeg1 = CAN_BS1_4TQ;
hcan.Init.TimeSeg2 = CAN_BS2_3TQ;
HAL_CAN_Init(&hcan);

6. 注意事项

通过合理分配分频器和位时序参数,即可实现稳定的CAN通信。

基于STM32103和ULN2003的步进电机控制

本实验是基于STM32103芯片和ULN2003进行对步进电机的控制。

2023-03-01 15:26:08

如何通过STM32103实现呼吸灯的亮灭

的,所以只要脉冲的宽度越宽,可以看到的灯也就越亮。下面就是通过STM32103这块板子的代码实现。先写关于点灯的c文件#include "led.h"#include "stm32f10

2022-02-21 06:10:16

基于STM32103主控板的娃娃机该如何去设计呢

基于STM32103主控板的娃娃机的硬件该如何去设计呢?基于STM32103主控板的娃娃机的软件该如何去设计呢?

2021-12-21 07:38:21

stm32103模拟0.96寸OLED驱动

电子发烧友网站提供《stm32103模拟0.96寸OLED驱动.rar》资料免费下载

资料下载 乐侨珂 2023-10-07 14:26:28

基于STM32103和QT的智能交通系统案例

  主要实现:  1 根据光电传感器模拟获取当前车流量  2 STM32端可以根据周期内车流量大小调整红绿灯的时间  3 红绿灯时间和倒计时会在STM32端的显示屏上显示  4 红灯和绿灯在最后五秒

资料下载 香香技术员 2023-07-18 11:51:36

基于STM32单片机和MCP2515的CAN通讯

基于STM32单片机和MCP2515的CAN通讯

资料下载 楊yang 2021-07-18 10:52:23

理解STM32系统时钟和分频资料下载

电子发烧友网为你提供理解STM32系统时钟和分频资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。

资料下载 贾伟刚 2021-04-20 08:43:42

STM32103ZET6工控版的电路原理图免费下载

本文档的主要内容详细介绍的是STM32103ZET6工控版的电路原理图免费下载。

资料下载 ah此生不换 2020-10-27 08:00:00

如何去实现STM32103定时器3输出四路PWM呢

如何去实现STM32103定时器3输出四路PWM呢?怎样通过串口去控制四个舵机呢?

2021-12-13 08:01:21

JSON在STM32103平台上的使用

这几天使用了一下JSON在STM32103平台上的使用,还是很好用的,在此记录下。JSON是啥我也不总结了,就是直观的看起来是一个有格式的字符串,看起来非常清楚明白,有点像Python中

2021-08-23 08:31:14

STM32 CAN如果想实现多个地址可以添加多个过滤器组

组 //stm32103 有0-13共14个过滤器 在32位模式下可以过滤14个地址 //16为模式下可以过滤28个地址 // 如果需要更多 那就要用屏蔽位模式,用屏蔽位模式就需要通过软件来判断一下地址 CAN_Fi

2021-08-19 09:16:03

使用CAN总线控制整车电机

用CAN卡的时候,没有出现过这种情况。后来找到问题的解决方法,在每条CAN指令的语句后面,添加500us至1ms的延时程序,收发过程中,没有出现丢包的问题。这里分析可能的原因:1、

2021-08-19 08:19:22

HSE时钟

HSE时钟:高速外部时钟在STM32103一般使用8MHzRRC_CR时钟控制寄存器LSE时钟:高速内部HSI时钟

2021-08-12 06:11:40

UCOSII移植出现以下的错误该怎么办?

我现在想把探索者STM32F4光盘里的UCOSII源码移植到我的以前STM32103的程序里,怎么出现“Unknow opcode 'VSTMDBEQ',Maybe wrong target CPU?"的错

2019-08-14 22:27:14

如何在STM32103的芯片上移植uC/OS-III系统?

目的:在STM32103的芯片上移植uC/OS-III系统,并外加蓝牙模块、wifi模块。结果:现在uC/OS-III移植成功了,但是关于它们之间的多任务处理却出现问题了。我选定3个任务,LED灯

2019-07-12 04:36:12
7天热门专题 换一换
相关标签