关于32G12K128芯片外部晶振选择问题 | 串口通信,建议用STC高稳定的内部时钟
前期一直在用32G12K128开发工业表头(电流表/电压表/多功能表头),用的是IRC内部时钟/选择24MHZ,产品两路485串口用的是9600波特率,用ISP计算波特率误差0.00%-即特意选24MHZ, 现在有个问题,就是产品在做高低温试验时通讯经常挂断,研发老大说用了内部IRC时钟就会这样/极限高低温时波特率跑偏了,请问大家一般开发带通讯串口的产品,一定要用外部晶振吗?另外请教一下:如果选用外部晶振,推荐选多大晶振合适,也是选用24MHZ的吗?用了外部晶振,ISP下载软件上选择的时钟频率还有效吗?是否启动时跑的是ISP选的频率,到设置后开始跑外置晶振频率呀! 外部晶振可以选择11.0592MHz,22.1184MHz和33.1176MHz,常用的一些波特率比较准确 波特率9600建议选择22.1184M主频工规1.3%都不行吗,1.3%应该不至于影响串口通信,串口通信是每个字节都同步一次的,字节内不出错就行
晶振也是,波特率9600建议用11.0592M或22.1184M的晶振,要低温漂耐高温的
上电默认内部时钟,使用晶振需要软件切换
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]