从GPIO读取噪声数据

时间:2016-05-23 06:15:18

标签: embedded gpio noise-reduction

在FreeRTOS / ARM的嵌入式编程项目中,我尝试在噪声GPIO信号上读取24位数据。闲置时,信号有很多随机噪声;在实际数据期间,噪声被抑制,只有信号数据被读取。数据信号由300us HIGH(1)和31x300us LOW(0)的前同步码组成,然后每个位1为900us HIGH和300us LOW,位0为300us LOW,接着是900us HIGH。

我使用一个简单的紧密GPIO读取循环进行了测量,该循环显示300us中平均388个读数。

所以我试图计算我的读数,读数为+/- 15,读数为HIGH和LOW,并确定我是否使用状态机读取前导码或后续位。但我无法检测到任何序言或数据。我怀疑实际阅读代码中的附加代码即使不太复杂,与简单的测量循环相比也会导致不同的读取频率。阅读此类数据的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

我发现了。方法很健全。问题是

  1. 即使是RTOS,在I / O循环期间尝试在控制台上打印调试信息也是禁忌,即使打印的数据非常少;它会很快打扰时机。一旦我在循环中删除了调试输出,它就能正常工作。
  2. 短信号和长信号之间的相对时序是正确的,但确切的时序仍然可以变化很大(即使在删除调试输出后也是如此。)在我的情况下,短时间跨度的范围可以从180到288次。