ADI 技术
直播中

张楠

7年用户 135经验值
私信 关注
[问答]

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    读数据寄存器

回帖(10)

张楠

2019-1-8 11:26:47
现在改成只读取第一路数据,问题依旧。
主循环里,SPI发送数据依次为:
1,通过SPI写ADG738寄存器,打开ADG738通道一;
2,通过SPI读AD7193配置寄存器,并修改读取的数据;
3,将修改后的数据通过SPI写AD7193配置急寄存器;
4,通过SPI写AD7193模式寄存器,开始单次转换;
5,等待MISO变低,然后通过SPI读AD7193数据寄存器;
依次循环...
 
按以上步骤的话,每次加电,读取的通道一的ADC值,可能是正常的,也可能是被放大了一倍,并且会一直保持下去。
 
偶然间将步骤1的写ADG738寄存器屏蔽掉,放在了初始化里,结果数据正常了。但我看不出问题所在。
举报

张楠

2019-1-8 11:40:34
以下为读取正常数据时的波形图。
因为显示宽度有限,只截取了后3个字节的波形,第一个字节为通讯命令,未显示。
 
1.读取AD7193配置寄存器时MISO引脚波形图:

 
2.写入AD7193配置寄存器时MOSI波形图:

 
3.写AD7193模式寄存器时MOSI引脚波形图:

 
4.读AD7193数据寄存器时MISO引脚波形图:
举报

孙秀英

2019-1-8 11:55:21
查查时序吧,别是向前错了一位造成的。
举报

张楠

2019-1-8 12:08:32
引用: tyh_candy 发表于 2019-1-8 15:05
查查时序吧,别是向前错了一位造成的。

对比读数据时MISO引脚波形, 错误时确实是向前错了一位。
但读取寄存器数据时,MISO引脚电平是AD7193控制的。
也看了对应的SCLK波形,确实是4组,没有多产生一个上升沿。
也许数据时序是对的,而是增益被写错了,本来应该是8倍增益,写成16倍增益。但我看配置寄存器波形,也发现不了错误。
 
正常时读取数据寄存器MISO波形图:

 
数据被放大时读取数据寄存器MISO波形图:
举报

更多回帖

发帖
×
20
完善资料,
赚取积分