本文中使用的芯片为 华大 HC32L110C4,adc精度为12位
在做一个电流采样计算时发现adc数据一直有偏差,经过查找后,发现问题出在串口的电平匹配上,因为串口 RX 收到的电压信号过高,导致adc的电源基准变化,导致问题出现。
目录
一、出现的问题
adc读取数据有偏差,经过查找发现,芯片串口的RX接上就会出现问题,不接就不会出现问题。
用示波器查发现rx不接时各个adc通道的电压位0v,但是接上之后,adc 2通道和3通道的电压分别为0.2v和0.1v,这个时候去采集adc信号就必然会出现问题。
感觉出现这种问题比较疑惑,去量了一下串口的TX信号为4.9v,而芯片的供电为3.3v,确定是串口过来的电压信号太高导致的问题。
二、解决方案
给芯片串口RX上增加电平转换电路解决问题。
原来外部串口的信号是直接给芯片的,现在先经过转换电路到3.3v再给mcu,解决问题
三、问题的根源
令人疑惑的是该串口传输电路在stm8和stm32的平台也有批量出货,都没有问题,为什么在华大的芯片上会有问题呢。
查手册后发现
stm8使用的串口引脚,没有特殊的说明
stm32使用的串口引脚,有做特殊的说明,该引脚可以兼容5v
华大的芯片和stm8一样也没有特殊的说明
可以看出手册里同样的数据,但是华大芯片的adc受到了外部信号的干扰,而st的芯片没有受到干扰
四、最终解决
所以相比较而言,华大芯片较St系列的芯片输入抗干扰能力较弱,之后使用要注意信号匹配问题