当前位置: 代码迷 >> 单片机 >> Atmel单片机串口速率与温度关系,该怎么解决
  详细解决方案

Atmel单片机串口速率与温度关系,该怎么解决

热度:76   发布时间:2016-04-28 15:00:36.0
Atmel单片机串口速率与温度关系
ATMEGA16A-AU的片子,采用内部RC时钟,8MHz,串口设置为:速率115200,1个起始位,无校验。
使用上述单片机进行串口通信,在温度达到70摄氏度时,发现串口通信异常,恢复常温通信又正常。使用9600波特率通信,在温度达到80摄氏度仍能正常通信。有没有哪位大虾有遇到相同的问题??
手册上给出此款单片机的工作温度上限可达85摄氏度,所以想请教各位大虾:此系列单片机最高稳定的串口通信速率与温度的关系?是否采用外部晶振有利于维持稳定?
------解决方案--------------------
可以考虑试试外部晶振 晶振一般的工作温度是+60度或者+70度
------解决方案--------------------

按理说,对于串口通讯这种低速通讯,对时钟的精度要求不是很高,理论上优于 5% 即可。但由于工艺偏差,片内的 RC 参数分散最大可能有 20%。也就是说,实际上在常温下,你的时钟很可能已经和标称值有误差。温升后越界的可能就大了。因此,厂商给你的建议是在代码中根据时钟进行调整。例如,你在 Timer 定时的时段内检测一个外部时钟的脉冲数,检测到的越多,说明你的时钟频率越低。通过这个结果,调整你对 UART 波特率寄存器的设置。一般不需要不停地调整,在初始化时做一次偏移调试可以了。

不同的外部时钟方案有不同的限制条件。外部 RC 可以选温度系数较小的元件来构成。晶振一般说来温度稳定性好,在要求高的地方推荐使用。