说说自己在项目中遇到的情况,大伙看看这到底是谁的锅。
刚做项目的时候,get到了下面两条:
第一,STM32(或其他单片机)内部只带12位ADC进行采样,教科书上都说单次采样是没有价值的,所以要多次采样并进行滤波。
第二,STM32的数字地、模拟地要单点相接,数字电源和模拟电源也要单点相接。模拟信号要近,走线要粗。
早先的时候,PCB是自己绘制,程序也是自己写,没有出问题。后来到了一家公司里面,PCB是同事绘制,程序还是我写,出问题了。
问题产生的原因是:这家公司的模拟信号线走线不讲究,当功率器件启停的时候会让模拟信号产生尖峰,而我的软件没能过滤掉这个尖峰。
我早先ADC DMA是启动后循环采样,需要数据的时候,停止采样,把连续采样的20个数据进行滤波。得到的值来使用。这就导致有可能这20个值全部在这个尖峰之中。控制系统在现场出状况后,我改为ADC DMA分时采样5组,对5组数据进行处理,就没问题了。
这到底是谁的锅呢
|