MSP430 串行通信在寒冷天气下失败

电器工程 串行 温度 msp430 波特率
2022-01-12 21:43:40

我有一个使用 MSP430 微处理器的产品,它已经销售了几年。MSP430 的一项工作是通过异步串行与低功率无线电通信。

随着今年冬天的到来,在寒冷的温度下出现了不可接受的故障率(百分之几)。调查发现与无线电的串行通信失败。串行端口的波特率发生器由 SMCLK 供电,SMCLK 由 MSP430 的数控振荡器 (DCO) 分频。

为什么串行通信在低温下会失败?

(注意:我已经解决了这个问题,很快就会发布答案。提示:这是一个软件错误。)

3个回答

您使用的是哪种 MSP430?不同的系列具有不同的时钟结构和功能。

DCO 将随温度改变频率,导致 USART 波特率偏离规范。MSP 有一个温度传感器(不是很准确)。您可以更改 DCO 控制寄存器中的值以使 DCO 频率回到范围内,但这需要校准查找表,涵盖您期望看到的温度范围。一些 MSP 器件在制造时将 DCO 校准表编程到闪存扇区之一,但这些只有在它们覆盖您希望使用的频率时才有用,而且我认为它们没有温度补偿值。

您是否有可以用作校准源的参考晶体振荡器?我总是设计一个 32kHz 的晶体并在 ACLK 上使用它。对于高达 9600 的波特率,可以直接使用它。对于更高的波特率,您必须根据 ACLK 信号校准 DCO。较新的部件有一个硬件 FLL,可以自动执行此操作。

所以这是答案:

该产品有一个 32 kHz 的晶体,我编写了一个程序来调整 DCO 频率。频率调整使用了两个定时器,一个来自 DCO,一个来自 32kHz ACLK。它由捕获/比较系统的中断驱动,因此它可以在运行期间定期重新校准自身。

不幸的是,我在启动代码的错误部分插入了初始校准,中断被关闭。因此在第一次使用串口之前没有进行校准,初始化会挂起等待串口的响应。

DCO 频率从工厂校准值开始,这就是它在室温下工作的原因。

这些情节讲述了这个故事:

一、DCO-温度曲线: 替代文字

现在校准后的曲线实际上正在工作: 替代文字

低温导致 DCO 频率上升到足以导致 UART 波特率上升过高?您测量了温度,然后在软件中补偿了振荡器?