杰发科技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

相关推荐
上层精灵的赞美诗9 分钟前
电子工程师转战汽车OEM主机厂之路
单片机·嵌入式硬件·mcu·eclipse·汽车
猫猫的小茶馆4 小时前
【PCB工艺】基础:电子元器件
stm32·单片机·嵌入式硬件·mcu·51单片机·pcb工艺
阿巴~阿巴~4 小时前
STM32 —— MCU、MPU、ARM、FPGA、DSP
arm开发·stm32·单片机·mcu
未来智慧谷1 天前
百度文心大模型4.5与X1发布:开启AI深度思考与多模态时代
人工智能·百度·文心一言
猫猫的小茶馆2 天前
【STM32】从新建一个工程开始:STM32 新建工程的详细步骤
stm32·单片机·嵌入式硬件·mcu·51单片机
猫猫的小茶馆2 天前
【STM32】NVIC(嵌套向量中断控制器)
c语言·stm32·单片机·嵌入式硬件·mcu·51单片机
马浩同学4 天前
【ESP32】ESP-IDF开发 | 经典蓝牙开发 | 蓝牙串口协议(SPP) + 客户端和服务端例程
c语言·单片机·嵌入式硬件·mcu·物联网·iot
FreakStudio5 天前
三分钟教学:手把手教你实现Arduino发布第三方库
单片机·mcu·github·嵌入式·arduino·开发工具·电子diy·电子计算机
小麦嵌入式5 天前
Linux驱动开发实战(五):Qt应用程序点RGB灯(保姆级快速入门!)
linux·驱动开发·stm32·嵌入式硬件·mcu·qt·ubuntu
工程师平哥6 天前
【vscode-01】vscode不同项目不同语言扩展插件隔离方案
ide·笔记·vscode·嵌入式硬件·mcu·编辑器