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


8

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

随着这个冬天的来临,寒冷的天气中出现的故障率(百分之几)令人无法接受。调查发现与无线电的串行通信失败。串行端口的波特率发生器由SMCLK馈送,SMCLK由MSP430的数字控制振荡器(DCO)分流。

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

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

Answers:


8

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

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

您是否有可以用作校准源的参考晶体振荡器?我将始终在32kHz晶体中进行设计,并将其用于ACLK。对于高达9600的波特率,可以直接使用。对于更高的波特率,您将不得不针对ACLK信号校准DCO。较新的部件具有硬件FLL,它将自动执行此操作。


7

所以这是答案:

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

不幸的是,我将初始校准插入了我的启动代码的错误部分,其中中断被关闭。因此,在首次使用串行端口之前就不会进行校准,并且初始化会挂起,等待串行端口上的响应。

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

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

首先,DCO温度曲线: 替代文字

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


1
好故事!修复花费很多吗?:D
tyblu

有趣的是,斜率从第一张图变为第二张图。有什么理论吗?将DCO调低频率是否会使温度系数变差?
W5VO 2010年

请注意,y轴在两个图形之间变化。而且一般来说,不要过多地阅读它们。该零件在家用冰箱中冷冻,在热至室温的过程中,用热电偶在便宜的MAS-345(elexp.com/tst_s345.htm)上测量温度,该温度仅读取整数度。然后,我在整度变化之间进行线性插值以绘制曲线。
markrages

5

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.