杰发科技AC7840——CAN通信简介(8)_通过波特率和时钟计算SEG_1/SEG_2/SJW/PRESC

通过公式计算

cpp 复制代码
 *  波特率和采样点计算公式:
 *  tSeg1 = (S_SEG_1 + 2); tSeg2 = (S_SEG_2 + 1).
 *  BandRate = (SCR_CLK / (S_PRESC + 1) / ((S_SEG_1 + 2) + (S_SEG_2 + 1))), SCR_CLK 为CAN 模块源时钟
 *  SamplePoint = (tSeg1 / (tSeg1 + tSeg2)).
cpp 复制代码
{0x0D, 0x04, 0x04, 0x3B},  // SEG_1, SEG_2, SJW, PRESC  50K, 75%  
{0x0D, 0x04, 0x04, 0x1D},  // SEG_1, SEG_2, SJW, PRESC 100K, 75%  
{0x0D, 0x04, 0x04, 0x02},  // SEG_1, SEG_2, SJW, PRESC   1M, 75%  
{0x15, 0x06, 0x06, 0x00},  // SEG_1, SEG_2, SJW, PRESC   2M, 77%  
{0x09, 0x03, 0x03, 0x00},  // SEG_1, SEG_2, SJW, PRESC   4M, 73%  
{0x05, 0x02, 0x02, 0x00},  // SEG_1, SEG_2, SJW, PRESC   6M, 70%  
{0x04, 0x01, 0x01, 0x00},  // SEG_1, SEG_2, SJW, PRESC 7.5M, 75%

把公式给文心一言

用文心一言验证50K配置

用文心一言验证100K配置

用文心一言验证7.5M配置

上述验证全部正确,计算60Mhz 5M 75%配置

cpp 复制代码
60Mhz 5M 75%
{0x07, 0x02, 0x01, 0x00}

测试OK

上述验证全部正确,计算60Mhz 500K 80%配置

因为1M的分频在2,

并且普通CAN的分频也是2,

因此设置预分频2来计算配置(之前默认0计算结果都错的)

cpp 复制代码
60Mhz 500K 80%
{0x1E, 0x07, 0x01, 0x02}

测试OK

相关推荐
蜀黍@猿14 小时前
ARM 汇编入门(十二):MMU、页表与虚拟内存全解析
汇编·arm开发·stm32·mcu
wuyk5551 天前
嵌入式故障诊断-Bug002-局部大数组压栈高温必死机
stm32·单片机·嵌入式硬件·mcu·物联网·51单片机·嵌入式实时数据库
蜀黍@猿2 天前
ARM 汇编入门(十):标量浮点与 VFP 指令全解析
汇编·arm开发·stm32·mcu
La Pulga5 天前
【FreeRTOS源码学习笔记】任务延时列表
笔记·mcu·学习·嵌入式·freertos·实时操作系统
星野云联AIoT技术洞察6 天前
传统设备接入 Tuya:从 DP、串口联调到样机与 OTA 验收
mcu·智能家居·涂鸦智能·涂鸦开发·tuya生态接入·tuya开发·mcu sdk
意法半导体STM327 天前
【官方原创】LAT1717 STM32N6 如何使用单个XSPI驱动双片相同HyperRAM
stm32·单片机·嵌入式硬件·mcu·stm32n6·hyperram
La Pulga8 天前
【FreeRTOS源码学习笔记】空闲任务与阻塞延时
笔记·mcu·学习·嵌入式·freertos·实时操作系统
La Pulga9 天前
【FreeRTOS源码学习笔记】任务切换
单片机·mcu·学习·嵌入式·freertos·实时操作系统
La Pulga11 天前
【FreeRTOS源码学习笔记】链表的实现
数据结构·笔记·stm32·mcu·链表·嵌入式·freertos
La Pulga11 天前
【FreeRTOS源码学习笔记】任务创建
笔记·stm32·mcu·学习·嵌入式·freertos·实时操作系统