关于时钟倍频分频的咨询,以及CAN速率咨询 | 已明白
你好,STC32G144K246, 场景汽车运用(温度可超过85摄氏度)
如果MCU不使用外部晶振情况下,使用内部IRC晶振,风险是很高的,对么? 因为我看数据手册有描述晶振的误差。
就算是使用 ENIRC48M 晶振(这个晶振,手册描述是很精确的),作为系统时钟以及倍频使用,也会出现同样高温误差大的情况么?
另外是否强烈推荐,在汽车场景(超过85摄氏度),都是应该使用外部晶振方式,至于系统频率,再内部倍频使用。如果是,那么是不是建议尾部晶振就是使用6MHZ的晶振(考虑HPLL的要求)。
关于CANFD的运用,我们在ISP软件中看到有CAN FD SLOW 和CAN FD Fast , 以及CAN 2.0的参数自动计算,
CAN 2.0--我理解为配置仲裁域或者是 STC32G12K系列的CAN2.0参数?
CAN FD SLOW 和 CAN FD Fast 自动匹配波特率计算出出来的参数,比如我都是1M波特率,但是这两个页面下的参数是不一样的,我应该如何理解 SLOW和Fast 的区别呢?
谢谢。
汽车上使用时出于安全考虑,车厂一般会要求使用外部晶振,只要晶振时钟精确,倍频后的时钟也会是精确的。
ISP软件的CAN波特率计算器里面,CAN2.0协议是用于STC32G12K,STC32G8K系列的标准CAN2.0模块使用。CAN-FD Slow 和 CAN-FD Fast 用于STC32G144K系列带CANFD模块的芯片。
条件相同情况下,CAN-FD Slow 和 CAN-FD Fast 计算出来的参数是一样的,建议选择采样点在 80% 左右的参数:
CAN-FD Slow 是仲裁域,用于低速握手;CAN-FD Fast 是数据域,用于高速传输数据。使用传统CAN2.0模式时,传输速率取决于仲裁域波特率的设置。
例如:
//传统CAN总线的位速率
//仲裁域波特率:Fclk/((SEG1+2)+(SEG2+1))/(Prescaler+1)=120M/120/1=1M
//设定规则:SEG1>=SEG2+1, SEG2>=SJW
stcInit.stcSBT.u8SEG1 = 94U;
stcInit.stcSBT.u8SEG2 = 23U;
stcInit.stcSBT.u8SJW= 23U;
stcInit.stcSBT.u8Prescaler = 0U;
//可变位速率
//数据域波特率:Fclk/((SEG1+2)+(SEG2+1))/(Prescaler+1)=120M/24/1=5M
//设定规则:SEG1>=SEG2, SEG2>=SJW
stcInit.stcFDCfg.stcFBT.u8SEG1 = 17U;
stcInit.stcFDCfg.stcFBT.u8SEG2 = 4U;
stcInit.stcFDCfg.stcFBT.u8SJW= 4U;
stcInit.stcFDCfg.stcFBT.u8Prescaler = 0U;
stcInit.stcFDCfg.u8CANFDMode = CAN_FD_MODE_ISO_11898; //CAN_FD_MODE_BOSCH, CAN_FD_MODE_ISO_11898
stcInit.stcFDCfg.u8TDCSSP = (stcInit.stcFDCfg.stcFBT.u8SEG1 + 2); //TDCSSP 建议设置与 (SEG1+2) 相同值 乘风飞扬 发表于 2026-4-9 17:52
汽车上使用时出于安全考虑,车厂一般会要求使用外部晶振,只要晶振时钟精确,倍频后的时钟也会是精确的。
I ...
好的,谢谢 另外,如果使用外部晶振,建议使用的晶振频率可以推荐么?6MHZ是否更加合适,通过内部倍频到48MHZ(或其它) ;还是直接使用48MHZ也可以。 外部晶振频率可选6M的整数倍
乘风飞扬 发表于 2026-4-10 11:04
外部晶振频率可选6M的整数倍
好的,感谢了。 分析了系统时钟框图,明白了。 Ths BR。
页:
[1]