stm32103 can分频
在STM32F103系列微控制器中,配置CAN总线波特率时,需要通过分频器(Prescaler)和位时序参数共同调整。以下是配置步骤及关键要点:
1. CAN总线时钟源
- STM32F103的CAN外设挂载在APB1总线上,默认时钟频率为 36 MHz(需根据系统时钟配置确认实际值)。
2. 波特率计算公式
波特率 = CAN时钟源 / (Prescaler × 总时间量子数)
其中:
- 总时间量子数 = 同步段(Sync_Seg) + 传播段(Prop_Seg) + 相位缓冲段1(BS1) + 相位缓冲段2(BS2)
- 同步段固定为 1个时间量子(Tq)。
- 传播段和相位缓冲段需根据总线延迟和时钟容差调整。
3. 配置步骤
(1) 确定分频器(Prescaler)
根据目标波特率和APB1时钟计算分频值:
Prescaler = CAN时钟源 / (目标波特率 × 总时间量子数)
(2) 设置位时序寄存器(CAN_BTR)
- BS1 (TS1): 相位缓冲段1,范围1~16个Tq。
- BS2 (TS2): 相位缓冲段2,范围1~8个Tq。
- SJW: 同步跳转宽度,通常设为1~4个Tq。
4. 示例:配置1 Mbps波特率
假设APB1时钟为36 MHz,目标波特率1 Mbps:
- 选择总时间量子数:通常设置为 9 Tq(典型值)。
- Sync_Seg = 1 Tq
- BS1 = 4 Tq(TS1[3:0] = 0x3)
- BS2 = 3 Tq(TS2[2:0] = 0x2)
- 计算Prescaler:
Prescaler = 36 MHz / (1 Mbps × 9) = 4 - 配置寄存器:
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. 注意事项
- 采样点:建议位于总位时间的75%~80%,如示例中采样点在(1+4)/9 ≈ 55.6%,可能需要调整BS1/BS2。
- 终端电阻:确保CAN总线两端有120Ω电阻匹配。
- 调试工具:使用CAN分析仪或示波器验证实际波形。
通过合理分配分频器和位时序参数,即可实现稳定的CAN通信。
如何通过STM32103实现呼吸灯的亮灭
的,所以只要脉冲的宽度越宽,可以看到的灯也就越亮。下面就是通过STM32103这块板子的代码实现。先写关于点灯的c文件#include "led.h"#include "stm32f10
基于STM32103主控板的娃娃机该如何去设计呢
基于STM32103主控板的娃娃机的硬件该如何去设计呢?基于STM32103主控板的娃娃机的软件该如何去设计呢?
基于STM32103和QT的智能交通系统案例
主要实现: 1 根据光电传感器模拟获取当前车流量 2 STM32端可以根据周期内车流量大小调整红绿灯的时间 3 红绿灯时间和倒计时会在STM32端的显示屏上显示 4 红灯和绿灯在最后五秒
资料下载
香香技术员
2023-07-18 11:51:36
理解STM32系统时钟和分频资料下载
电子发烧友网为你提供理解STM32系统时钟和分频资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。
资料下载
贾伟刚
2021-04-20 08:43:42
JSON在STM32103平台上的使用
这几天使用了一下JSON在STM32103平台上的使用,还是很好用的,在此记录下。JSON是啥我也不总结了,就是直观的看起来是一个有格式的字符串,看起来非常清楚明白,有点像Python中
STM32 CAN如果想实现多个地址可以添加多个过滤器组
组 //stm32103 有0-13共14个过滤器 在32位模式下可以过滤14个地址 //16为模式下可以过滤28个地址 // 如果需要更多 那就要用屏蔽位模式,用屏蔽位模式就需要通过软件来判断一下地址 CAN_Fi
使用CAN总线控制整车电机
用CAN卡的时候,没有出现过这种情况。后来找到问题的解决方法,在每条CAN指令的语句后面,添加500us至1ms的延时程序,收发过程中,没有出现丢包的问题。这里分析可能的原因:1、
UCOSII移植出现以下的错误该怎么办?
我现在想把探索者STM32F4光盘里的UCOSII源码移植到我的以前STM32103的程序里,怎么出现“Unknow opcode 'VSTMDBEQ',Maybe wrong target CPU?"的错
如何在STM32103的芯片上移植uC/OS-III系统?
目的:在STM32103的芯片上移植uC/OS-III系统,并外加蓝牙模块、wifi模块。结果:现在uC/OS-III移植成功了,但是关于它们之间的多任务处理却出现问题了。我选定3个任务,LED灯
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- amoled屏幕和oled区别
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机
- 元宇宙概念龙头股一览