打印
[运放]

读出数据失真问题

[复制链接]
295|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cxc168|  楼主 | 2025-1-3 11:24 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

[i=s] 本帖最后由 cxc168 于 2025-1-3 11:30 编辑 [/i]<br /> <br />

之前一直以为是运放或者ADC电路问题,但随着分析发现并不是,因此开新贴讨论。

原贴:https://bbs.21ic.com/icview-3424214-3-1.html?#pid14410842


环境:

使用的ADC芯片:AD7685BRM

同总线挂载的SPI芯片:AD7685BRM、TPL0501-100DCNR

总线上拉电压:5V

总线从器件到MCU:15cm

其他:总线使用2x5p的线,此外有vcc/gnd/片选信号同属一条线缆(双排母)。


现象:

输入ADC的波形正常,但是MCU从SPI读回的数据有问题,曲线显示异常。


图一:输入ADC的波形

进入ADC的波形.PNG


图二:MCU从SPI读出的数据

从SPI读出的波形.png


图三:SDIO波形1

SDIO波形.PNG


图三:SDIO波形2

SDIO波形2.PNG


图四:SDIO波形3

SDIO波形放大3.PNG

问题似乎出现在SPI总线上,只要合适的晃动或者摆放SPI线,就有几率得到平滑的双峰曲线,另外,使输入的ADC波形幅值减小,100%能够得到光滑的双峰曲线。

图六:光滑曲线

微信截图_20250103112103.png

想不明白的是:

1.为什么输入信号变小了反而不会出现曲线异常,但大信号的时候ADC输入波形没有问题,那么是触发了ADC的什么问题呢?

2.SDIO的波形为什么在1V左右出现了方波突然升到5V左右又有方波?SPI总线是上拉5V了。

3.SDIO的这种有干扰的方波滤除后是否能解决?

使用特权

评论回复

相关帖子

沙发
cxc168|  楼主 | 2025-1-3 11:26 | 只看该作者

[i=s] 本帖最后由 cxc168 于 2025-1-3 11:28 编辑 [/i]<br /> <br />

void AD7685_GetSSP0Data(uint32_t *Data)
{
    // 连续采集SSP0_CYCLE_NUM=8次,将8次相加作为最终的采集值
    uint8_t i;
    *Data = 0;
    for (i = 0; i < SSP0_CYCLE_NUM; i++)
    {
        /* 启动转换 */
        SSP0_SSEL = 1;
        Timer1_us(5);
        SSP0_SSEL = 0;
        *Data += AD7685_SendSSP0Data();
        Timer1_us(5);
    }

    //  *Data >>= 1;
    *Data = (*Data > 0) ? *Data : 1;
}

补充代码,按照芯片要求给足了转换时间和采集间隔。

当然AD7685_SendSSP0Data函数返回类型是uint16_t,是符合16位返回数据大小的。

使用特权

评论回复
板凳
xionghaoyun| | 2025-1-4 08:42 | 只看该作者
学习一下

使用特权

评论回复
地板
zyj9490| | 2025-1-4 10:29 | 只看该作者
串扰这么严重,每个信号线用地线进行隔离。

使用特权

评论回复
5
sandseas| | 2025-1-4 14:08 | 只看该作者
SPI总线一般不需要上下拉啊,你还是上个数字电路图吧,你这信号质量有点不忍直视,串扰太严重

使用特权

评论回复
6
sandseas| | 2025-1-4 14:16 | 只看该作者
你的数字电源和模拟电源网络也可能有问题

使用特权

评论回复
7
cxc168|  楼主 | 2025-1-4 21:07 | 只看该作者
zyj9490 发表于 2025-1-4 10:29
串扰这么严重,每个信号线用地线进行隔离。

是的,现在基本上可以确认是串扰导致的采集问题。目前尝试的办法确实都能解决。改电路板的话,要对走线有更多的要求了。目前的想法是增加RC滤波,以及信号线包地处理,因为这一路径只有DIO和CLK是方波信号,其他信号线都是片选用的。

使用特权

评论回复
8
cxc168|  楼主 | 2025-1-4 21:12 | 只看该作者
sandseas 发表于 2025-1-4 14:08
SPI总线一般不需要上下拉啊,你还是上个数字电路图吧,你这信号质量有点不忍直视,串扰太严重 ...

这是电路原理图,两个SPI挂在同一个总线上,由于ADC是只读,数字电位器是只写,我把MOSI和MISO共用了,在逻辑上它们不会同时启用。即先写数字电位器,然后才读ADC。另外SPI线共计5条,其中2条片选,5条线附近没有其他信号线,只有电源和地,然后直连MCU,距离有15cm长,通过端子线连接的。我看了下以前的设计,我在SPI端子线两边都加了GND,这次没有做这个,即FPC两个GND中间走CLK和SDI线,【GND、CLK、SDI、GND】这样,没有问题,波形正常。

现在不改电路板情况下,只能外加RC滤波,或者用GND线包裹一下。后续改版的话,在电路上增加RC滤波,以及走线上加入GND包裹,应该可以解决。

005242hnvxevbzyvssx3nh.png.thumb.jpg (407.64 KB )

005242hnvxevbzyvssx3nh.png.thumb.jpg

使用特权

评论回复
9
cxc168|  楼主 | 2025-1-4 21:16 | 只看该作者
sandseas 发表于 2025-1-4 14:16
你的数字电源和模拟电源网络也可能有问题

模拟电源和数字电源是隔离的,GND也是,在ADC芯片下方做了分割。目前确定是SPI串扰问题,而且非常严重。那边的应该没什么问题,因为ADC得到的信号曲线重复性很好,至于输入ADC的波形有尖峰,这个想了挺多办法效果都不太好,只能是数字滤波了,这是光电二极管出来的信号。

使用特权

评论回复
10
cxc168|  楼主 | 2025-1-4 21:33 | 只看该作者
zyj9490 发表于 2025-1-4 10:29
串扰这么严重,每个信号线用地线进行隔离。

这是PCB层面的走线

s.png (235.19 KB )

s.png

使用特权

评论回复
11
Siderlee| | 2025-1-4 23:53 | 只看该作者
两层的板子?没有专门的地层?

使用特权

评论回复
12
Jack315| | 2025-1-5 07:26 | 只看该作者
【建议】
1. ADC 前应有专门设计的抗混叠滤波器。
2. 数字信号的 PCB 走线尽可能短,必要时可能还需要改善 EMC 效果的设计。
3. 数字电路电源 (VDD, DGND) 和模拟电路电源 (VCC, AGND) 在 PCB 上全部分开、单独走线,在电源的输出端处合并。

(高频的)数字信号是强烈的干扰源,在 PCB 上应尽可能缩小散布范围。

使用特权

评论回复
13
zyj9490| | 2025-1-5 08:51 | 只看该作者
本帖最后由 zyj9490 于 2025-1-5 08:57 编辑
cxc168 发表于 2025-1-4 21:33
这是PCB层面的走线

发现严重的问题,SPI线夸层布线,本来分开GND与AGND二个地平面。因此高频回流要流进大环路啊,大忌。SPI作为数字信号,下层作为回流信GND地平面,怎么大部分都在AGND平面呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

37

帖子

0

粉丝