This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP-EXP430FR5969:显示的值似乎会在屏幕上漂移

Guru**** 1624230 points
Other Parts Discussed in Thread: MSP-EXP430FR5969, BOOSTXL-SHARP128
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1175017/msp-exp430fr5969-displayed-values-seem-to-drift-down-the-screen

器件型号:MSP-EXP430FR5969
主题中讨论的其他器件: BOOSTXL-SHARP128

您好、E2E 专家、

你好。

我正在使用连接 BOOSTXL-SHARP128 LCD 的 MSP-EXP430FR5969 LaunchPad。  我引入一个模拟波形(ECG、无论其值是多少)、通过板载 A/D 转换器上的 ADC12运行该波形、然后在 SHARP128 LCD 上显示波形。  模拟 ECG 波形以256Hz 的频率进行采样、每4个样本显示一次、以便在128像素宽的显示屏上显示大约2秒的波形。  我将保存30秒的数据(7680值)到 FRAM 中、并通过 JSON 通信发送到外部器件。  我还在控制一些连接到 MSP430上特定输出端口的 LED 灯。  首先、我在屏幕上展示了 Loyola University 标识。  在输入并显示波形时、我还将计算波形的心率并将其显示在屏幕上。

这意味着我将运行多个 TI 代码片段、所有这些代码片段都整合到一个可执行文件中:

  • GPIO 代码、用于运行 LED 灯;
  • 用于运行模数转换器的 ADC12代码;
  • GRLIB 代码,用于显示徽标并将文本放在屏幕上;
  • 将256Hz 采样率计时到 ADC 的计时器代码;
  • JSON 通信代码、用于处理与外部器件的 JSON 通信。

我已将我的所有"全局"变量移入 FRAM、以尝试减少使用的 RAM 量。  我还尝试增加堆大小(我目前为384)和堆栈大小(我目前为180)。  不过、不确定它们是否一定会有所帮助。  当所有内容都在代码中时、该编译告诉我我我正在使用38596 FRAM 和1830 RAM。   

出于传统目的、显示屏使用"上下颠倒"、因此您会注意到显示屏的"顶部"实际上是底部。  也就是说、"顶部"是最靠近带状连接器的边缘。  故事很长、但这就是它的样子。  因此原点位于"右上"显示屏的顶部、左角-和显示屏的底部、右角、如图所示。

我已经附加了两张 JPEG 图片。  

e2e.ti.com/.../Image.zip

开始 Waveform.jpg 会显示首次显示的波形。  请注意、波形的"基线"大约是屏幕"向上"方向的1/4 -略高于屏幕"右侧"的"GND"标签。  随着时间的推移、波形往往会在屏幕上"向上"漂移、即使显示值没有向上漂移。  随着时间的推移、波形开始看起来与后续 Waveform.jpg 图片中的波形类似。 大多数显示屏使用 GrLineDrawV 函 数从之前的 ADC 输出值到当前值绘制一条垂直线、以获得连续波形的外观。  我已经使用调试器来检查实际发送到 GrLineDrawV 函数以显示在屏幕上的 X 和 Y 值、对于两个波形实例、它们处于同一范围内。  但出于某种原因、GRLIB 函数会在屏幕上"向上"显示显示的值(增加 Y)。   

真正有趣的是、如果我只是注释掉用于初始化 JSON 组件的函数调用、代码大小会降至36154 RAM 和1738 RAM。  此外、波形看起来不会"在屏幕上走动"。  我不确定根本不会发生这种情况、但"步行"肯定会延迟。  在构建中使用 JSON 代码时、"步行"会在前5分钟内发生。  如果没有 JSON 代码、我已经运行了20分钟、波形仅略有漂移。  它仍在上升、但速度显著降低。

我唯一能弄清楚的是、这些行上有某种堆或堆栈溢出或者其他一些最终会影响 GRLIB 代码或显示缓冲区或其他内容的东西。  增加堆和堆栈大小似乎有所帮助、但它不能解决问题。

如果有任何关于尝试的想法、我们将不胜感激!  堆和堆栈的大小有多大?  其他什么可能导致这种情况发生?  我不是说我的代码中没有任何可能导致这种情况的错误、但我肯定不知道这会是什么、我真的不知道如何解决问题。

BTW -在我将"全局"变量移入 FRAM 之前、如果我在其中包含 JSON 初始化代码、则波形根本不会显示。  代码似乎被调用-它实际上没有显示任何内容。  取出指示到所显示波形的 JSON 初始化代码。  同样、将所有"全局变量"移动到 FRAM 也会导致显示波形、即使其中包含 JSON 代码也是如此。  因此、这似乎与代码的整体大小有关。

提前感谢您。

此致、

CSC