收藏 分享(赏)

STM32_CAN波特率计算.doc

上传人:fmgc7290 文档编号:12419929 上传时间:2021-12-12 格式:DOC 页数:8 大小:148KB
下载 相关 举报
STM32_CAN波特率计算.doc_第1页
第1页 / 共8页
STM32_CAN波特率计算.doc_第2页
第2页 / 共8页
STM32_CAN波特率计算.doc_第3页
第3页 / 共8页
STM32_CAN波特率计算.doc_第4页
第4页 / 共8页
STM32_CAN波特率计算.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

1、一般设置 CAN_SJW = 1,总结程序发现!can 时钟是 RCC_APB1PeriphClock(APB1 从 APB2 而来,分频系数不同,导致 APB1 不同,mini 版中一般是 APB2 为 72Mhz,APB1是 36MHz),你要注意 CAN 时钟频率 CAN 波特率 = RCC_APB1PeriphClock/(1+CAN_BS1+CAN_BS2)/CAN_Prescaler; 另外尽可能的把采样点设置为 CiA 推荐的值:75% when 波特率 800K80% when 波特率 500K87.5% when 波特率 BTR = (u32)(u32)CAN_InitStr

2、uct-CAN_Mode CAN_SJW CAN_BS1 CAN_BS2 CAN_Prescaler - 1); 总结一下 Fpclk=36M 时 can 波特率为 250k 的配置为 /* CAN cell init */ CAN_InitStructure.CAN_TTCM=DISABLE; CAN_InitStructure.CAN_ABOM=DISABLE; CAN_InitStructure.CAN_AWUM=DISABLE; CAN_InitStructure.CAN_NART=DISABLE; CAN_InitStructure.CAN_RFLM=DISABLE; CAN_Ini

3、tStructure.CAN_TXFP=DISABLE; CAN_InitStructure.CAN_Mode=CAN_Mode_LoopBack; CAN_InitStructure.CAN_SJW=CAN_SJW_1tq; CAN_InitStructure.CAN_BS1=CAN_BS1_8tq; CAN_InitStructure.CAN_BS2=CAN_BS2_7tq; CAN_InitStructure.CAN_Prescaler=9; CAN_Init( 250k =的:将 can 总线波特率设置为 250k 在官方的 can 例程上 给出了 100k 查询 和 500k 中断方

4、式的例子 分别设置如下: CAN_Polling: /* CAN cell init */ CAN_InitStructure.CAN_TTCM=DISABLE; CAN_InitStructure.CAN_ABOM=DISABLE; CAN_InitStructure.CAN_AWUM=DISABLE; CAN_InitStructure.CAN_NART=DISABLE; CAN_InitStructure.CAN_RFLM=DISABLE; CAN_InitStructure.CAN_TXFP=DISABLE; CAN_InitStructure.CAN_Mode=CAN_Mode_Lo

5、opBack; CAN_InitStructure.CAN_SJW=CAN_SJW_1tq; CAN_InitStructure.CAN_BS1=CAN_BS1_8tq; CAN_InitStructure.CAN_BS2=CAN_BS2_7tq; CAN_InitStructure.CAN_Prescaler=5; CAN_Init( 100k /* CAN cell init */ CAN_Interrupt CAN_InitStructure.CAN_TTCM=DISABLE; CAN_InitStructure.CAN_ABOM=DISABLE; CAN_InitStructure.C

6、AN_AWUM=DISABLE; CAN_InitStructure.CAN_NART=DISABLE; CAN_InitStructure.CAN_RFLM=DISABLE; CAN_InitStructure.CAN_TXFP=DISABLE; CAN_InitStructure.CAN_Mode=CAN_Mode_LoopBack; CAN_InitStructure.CAN_SJW=CAN_SJW_1tq; CAN_InitStructure.CAN_BS1=CAN_BS1_8tq; CAN_InitStructure.CAN_BS2=CAN_BS2_7tq; CAN_InitStru

7、cture.CAN_Prescaler=1; CAN_Init( /500k 一般设置 CAN_SJW = 1,总结程序发现!can 时钟是 RCC_APB1PeriphClock(APB1 从 APB2 而来,分频系数不同,导致 APB1 不同,mini 版中一般是 APB2 为 72Mhz,APB1是 36MHz),你要注意 CAN 时钟频率 CAN 波特率 = RCC_APB1PeriphClock/(1+CAN_BS1+CAN_BS2)/CAN_Prescaler; 如果 CAN 时钟为 8M, CAN_SJW = 1,CAN_BS1 = 8,CAN_BS2 = 7, CAN_Pres

8、caler = 2 那么波特率就是=8M/(1+8+7)/2=250K =得到 500Kb/s 的波特率CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;CAN_InitStructure.CAN_BS1=CAN_BS1_8tq;CAN_InitStructure.CAN_BS2=CAN_BS2_7tq;CAN_InitStructure.CAN_Prescaler=1;每一位的 Tq 数目 = 1 (固定 SYNC_SEG) + 8 (BS1) + 7 (BS2) = 16如果 CAN 时钟是 8 MHz : (8M / 1 ) / 16 = 500K其中:1 为分

9、频系数16 为每一位的 Tq 数目为了设置为 100K, 把分频系数改为 5 即可, BS1 BS2 不变每一位的 Tq 数目 = 1 (固定) + 8 (BS1) + 7 (BS2) = 16如果 CAN 时钟是 8 MHz : (8M / 5 ) / 16 = 100K如果想得到 1M 的波特率, CAN 时钟仍然是 8 MHz 的情况下, 分频系数不变应该改变 BS1 BS2CAN_InitStructure.CAN_BS1=CAN_BS1_5tq;CAN_InitStructure.CAN_BS2=CAN_BS2_2tq;每一位的 Tq 数目 = 1 (固定) + 5 (BS1) +

10、2 (BS2) = 8如果 CAN 时钟是 8 MHz : (8M / 1 ) / 8 = 1000K另外尽可能的把采样点设置为 CiA 推荐的值:75% when 波特率 800K80% when 波特率 500K87.5% when 波特率 = 500K所以对于 100K 的波特率(假定使用 8MHz 时钟) 可以修改该 BS1 BS2 为:CAN_InitStructure.CAN_Prescaler=5;CAN_InitStructure.CAN_BS1=CAN_BS1_13tq;CAN_InitStructure.CAN_BS2=CAN_BS2_2tq;(1+13) / (1+13+

11、2) = 87.5%所以对于 500K 的波特率(假定使用 8MHz 时钟) 可以修改该 BS1 BS2 为:CAN_InitStructure.CAN_Prescaler=1;CAN_InitStructure.CAN_BS1=CAN_BS1_13tq;CAN_InitStructure.CAN_BS2=CAN_BS2_2tq;(1+13) / (1+13+2) = 87.5%所以对于 1000K 的波特率(假定使用 8MHz 时钟) 可以修改该 BS1 BS2 为:CAN_InitStructure.CAN_Prescaler=1;CAN_InitStructure.CAN_BS1=CAN_BS1_5tq;CAN_InitStructure.CAN_BS2=CAN_BS2_2tq;(1+5) / (1+5+2) = 75%个人见解, 仅供参考。 上边这个公式算出来的就是 CAN 的速率了

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报