stm32 can波特率计算
来源:互联网 发布:javascript var obj 编辑:程序博客网 时间:2024/05/18 03:07
1.首先要确定can时钟,即
/* CAN1 Periph clock enable */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);
该时钟为pclk1 ,我们去system_stm32f10x.c或system_stm32f4xx.c文件里确认pclk1是主时钟的多少分频
/* PCLK1 = HCLK */
RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2;//主时钟2分频,若主时钟为72M则pclk1=36M,
或者
/* PCLK1 = HCLK / 4*/
RCC->CFGR |= RCC_CFGR_PPRE1_DIV4;//主时钟4分频,若主时钟为180M则pclk1=45M,
2.由can的配置计算当前的波特率:
如: ca时钟为36M,
CAN_InitStructure.CAN_SJW = CAN_SJW_1tq;
CAN_InitStructure.CAN_BS1 = CAN_BS1_12tq;CAN_InitStructure.CAN_BS2 = CAN_BS2_5tq;
CAN_InitStructure.CAN_Prescaler = 2;
则can的波特率为:36M/((1+12+5)*2)=1M
3.采样点问题(该问题有人设计了专门的软件计算,以下内容取自其他博客,暂未验证)
另外尽可能的把采样点设置为 CiA 推荐的值:
75% when 波特率 > 800K
80% when 波特率 > 500K
87.5% when 波特率 <= 500K
80% when 波特率 > 500K
87.5% when 波特率 <= 500K
所以对于 100K 的波特率(假定使用 8MHz 时钟)
可以修改该BS1 BS2 为:
可以修改该BS1 BS2 为:
CAN_InitStructure.CAN_Prescaler=5;
CAN_InitStructure.CAN_BS1=CAN_BS1_13tq;
CAN_InitStructure.CAN_BS2=CAN_BS2_2tq;
CAN_InitStructure.CAN_BS1=CAN_BS1_13tq;
CAN_InitStructure.CAN_BS2=CAN_BS2_2tq;
(1+13) / (1+13+2) = 87.5%
0 0
- stm32 can波特率计算
- STM32 CAN 波特率的计算
- STM32的CAN波特率计算
- STM32的CAN波特率计算
- stm32 can波特率
- stm32波特率计算
- CAN波特率计算
- CAN波特率计算
- CAN波特率的计算
- CAN波特率计算
- STM32之CAN---配置波特率
- STM32之CAN---配置波特率
- STM32之CAN---配置波特率
- STM32之CAN---配置波特率
- STM32之CAN---配置波特率
- STM32之CAN---配置波特率
- STM32之CAN---配置波特率
- STM32中如何计算波特率
- 前端开发者应该知道的 CSS 小技巧
- Android获取当前时间
- 项目管理利器--Maven
- PAT甲级1121
- CentOs6.5安装高版本git
- stm32 can波特率计算
- 6、Power Map—实例:柱状图按月展示数据变动
- 半原生APP解决方案
- modbus tcp数据报文结构
- RedHat 自定义Jenkins Slaver Service,并开机自启动
- 使用Junit4对web项目进行测试(一)Junit初配置
- Python random模块打乱数组顺序
- 利用Hibernate框架将类与表映射
- windows如何运行.bat文件且设置为开机启动,不显示窗口