chint2012 发表于 2025-8-8 10:55:24

关于32G12K128芯片外部晶振选择问题 | 串口通信,建议用STC高稳定的内部时钟

前期一直在用32G12K128开发工业表头(电流表/电压表/多功能表头),用的是IRC内部时钟/选择24MHZ,产品两路485串口用的是9600波特率,用ISP计算波特率误差0.00%-即特意选24MHZ, 现在有个问题,就是产品在做高低温试验时通讯经常挂断,研发老大说用了内部IRC时钟就会这样/极限高低温时波特率跑偏了,请问大家一般开发带通讯串口的产品,一定要用外部晶振吗?另外请教一下:如果选用外部晶振,推荐选多大晶振合适,也是选用24MHZ的吗?用了外部晶振,ISP下载软件上选择的时钟频率还有效吗?是否启动时跑的是ISP选的频率,到设置后开始跑外置晶振频率呀!

小飞侠 发表于 2025-8-8 11:17:13

外部晶振可以选择11.0592MHz,22.1184MHz和33.1176MHz,常用的一些波特率比较准确

DebugLab 发表于 2025-8-8 11:17:54

波特率9600建议选择22.1184M主频
工规1.3%都不行吗,1.3%应该不至于影响串口通信,串口通信是每个字节都同步一次的,字节内不出错就行
晶振也是,波特率9600建议用11.0592M或22.1184M的晶振,要低温漂耐高温的
上电默认内部时钟,使用晶振需要软件切换


神农鼎 发表于 2025-8-8 12:00:53





void Uart1_Isr(void) interrupt 4
{
        if (TI)                                //检测串口1发送中断
        {
                TI = 0;                        //清除串口1发送中断请求位
        }
        if (RI)                                //检测串口1接收中断
        {
                RI = 0;                        //清除串口1接收中断请求位
        }
}

void Uart1_Init(void)        //9600bps@24.000MHz
{
        SCON = 0x50;                //8位数据,可变波特率
        AUXR |= 0x40;                //定时器时钟1T模式
        AUXR &= 0xFE;                //串口1选择定时器1为波特率发生器
        TMOD &= 0x0F;                //设置定时器模式
        TL1 = 0x8F;                        //设置定时初始值
        TH1 = 0xFD;                        //设置定时初始值
        ET1 = 0;                        //禁止定时器中断
        TR1 = 1;                        //定时器1开始计时
        ES = 1;                                //使能串口1中断
}


页: [1]
查看完整版本: 关于32G12K128芯片外部晶振选择问题 | 串口通信,建议用STC高稳定的内部时钟