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

相关推荐
2401_859049081 天前
MSPM0--Timer(一口一口喂版)
arm开发·单片机·mcu·算法
小_楠_天_问2 天前
第二课:ESP32 使用 PWM 渐变控制——实现模拟呼吸灯或音调变化
c语言·嵌入式硬件·mcu·esp32·arduino·pwm·esp32-s3
阿川!3 天前
嵌入式软件--stm32 DAY7 I2C通讯上
stm32·单片机·嵌入式硬件·mcu
公子无缘3 天前
【嵌入式】记一次解决VScode+PlatformIO安装卡死的经历
vscode·stm32·单片机·mcu·platformio
全栈小54 天前
【文心智能体】使用文心一言来给智能体设计一段稳定调用工作流的提示词
文心一言·智能体·文心智能体
zhangzuying10264 天前
在uni-app中实现类似文心一言的流式对话功能:从fetch到websocket的实践
websocket·uni-app·文心一言
光芒Shine5 天前
【嵌入式开发-SPI】
mcu
YHPsophie7 天前
MCU存储系统架构解析
mcu·存储器·亿胜盈科
昊昊该干饭了8 天前
拆解 Prompt 工程:五大场景驱动 DeepSeek 超越 ChatGPT
人工智能·自然语言处理·chatgpt·ai作画·gpt-3·文心一言
时光の尘12 天前
FreeRTOS菜鸟入门(十)·消息队列
c语言·stm32·单片机·嵌入式硬件·mcu·物联网·嵌入式实时数据库