ad7193读取数据感觉被放大了一倍

用stm32和ad7193通讯,电路参考CN0287.

读取四路Pt100对应的电阻值。四路之间是轮流切换。

原来用IO口模拟SPI和ad7193通讯。

现在改为stm32的硬件SPI,结果读取第一路电阻值时,偶尔出现阻值被放大一倍的情况,其他三路则正常。

程序流程基本是这样的:

1通过SPI发送数据,控制ADG738的第一路导通;

2通过SPI读取AD7193配置寄存器数据,

  清掉通道选择对应位的数据,

  然后将对应位写入相应通道号,

  通过SPI写入AD7193配置寄存器,

  通过SPI写入AD7139模式寄存器,设置单次转换;

3等待MISO电平被拉低,然后通过SPI读取AD7193数据寄存器值;

  开始下一个通道...

用示波器测量了SCLK和MOSI波形,对应的部分数据位:

010000000

01011000    读数据寄存器

Parents
  • 现在改成只读取第一路数据,问题依旧。

    主循环里,SPI发送数据依次为:

    1,通过SPI写ADG738寄存器,打开ADG738通道一;

    2,通过SPI读AD7193配置寄存器,并修改读取的数据;

    3,将修改后的数据通过SPI写AD7193配置急寄存器;

    4,通过SPI写AD7193模式寄存器,开始单次转换;

    5,等待MISO变低,然后通过SPI读AD7193数据寄存器;

    依次循环...

    按以上步骤的话,每次加电,读取的通道一的ADC值,可能是正常的,也可能是被放大了一倍,并且会一直保持下去。

    偶然间将步骤1的写ADG738寄存器屏蔽掉,放在了初始化里,结果数据正常了。但我看不出问题所在。

Reply
  • 现在改成只读取第一路数据,问题依旧。

    主循环里,SPI发送数据依次为:

    1,通过SPI写ADG738寄存器,打开ADG738通道一;

    2,通过SPI读AD7193配置寄存器,并修改读取的数据;

    3,将修改后的数据通过SPI写AD7193配置急寄存器;

    4,通过SPI写AD7193模式寄存器,开始单次转换;

    5,等待MISO变低,然后通过SPI读AD7193数据寄存器;

    依次循环...

    按以上步骤的话,每次加电,读取的通道一的ADC值,可能是正常的,也可能是被放大了一倍,并且会一直保持下去。

    偶然间将步骤1的写ADG738寄存器屏蔽掉,放在了初始化里,结果数据正常了。但我看不出问题所在。

Children
No Data