TI中文支持网
TI专业的中文技术问题搜集分享网站

关于ads1222使用的问题

您好,我在使用贵司的ads1222芯片时,通过stm32f103rct6给ads1222的clk脚发2mhz的pwm,通过拉高拉低管脚的方式给sclk管脚发脉冲,我参照数据手册上的说明来编写程序,DRDY/DOUT 出来的数据是否是补码的形式,我是通过手册图25来计算高低电平持续时间的,高低电平都是172us,但是出来的数据我不知道正不正确,我把我的代码贴在下面,还有,我接的是传感器的正负信号,范围是0-10mv,电桥输出,s型压力传感器,麻烦帮忙看一下有什么错误之处。

void ADS_Res24Bit(void)
{
extern u32 resdata;
extern unsigned char resch[3];
extern int cont_i;

while(DR_DOUT);//等待drdy/dout管脚拉低

for(cont_i=0;cont_i<24;cont_i++)//
{
SCLK=1; delay_us(172);//delay_us(723);
SCLK=0;
delay_us(172);//elay_us(723);//发一个脉冲

if(DR_DOUT==1)//判断drdy/dout管脚电平
{
resdata|=(0x00800000>>cont_i);//电平的值给resdata
}
else if(DR_DOUT==0)
{
resdata&=(0xFF7FFFFF>>cont_i);
}

}

printf("%u\r\n",resdata);//发完24个脉冲后串口输出数据
resdata&=0x00000000; while(DR_DOUT);//等待管脚拉低,第二次数据转换

}

输出的数据如下

256

32

8388607

32

0

285868031

8

50303

256

17

8

12415

480

32

391

16

16

0

272

0

102399

32

0

32

32

3

480

7

24

36863

136

24

193

40959

64

66559

0

15487

64

0

225

25151

64

267263

256

7

384

136

224

65535

136

7

120

16

384

3

32

0

195

4159

96

58367

120

7

256

7

448

32

392

3

448

16

16777215

128

17

224

32

99

0

17891327

8

6271

128

7

32

275455

96

0

411697151

64

0

16

0

0

280

7711

128

8

1991

8

4718591

8

1151

264

7

384

7

64

50175

64

0

264

32319

264

24

48

0

8

67

0

15

504

81919

504

3

224

33

56

0

63

384

Amy Luo:

您好,

是的,ads1222输出的24bit数据是补码形式。ads1222输出代码与输入信号的关系如Table2所示。

单片机输出信号波形是否为期望波形,可以用示波器捕获进行查看。

user5352588:

回复 Amy Luo:

您好,我示波器测量过,输出有波形,但是我得出的数据并不稳定,变化很大,从几百到几万都有,不知这个是什么原因,是程序不对还是其它别的原因,我是在每个sclk脉冲发完后才检测DRDY/DOUT管脚,这样有问题吗?

Amy Luo:

回复 user5352588:

您好,
DRDY/DOUT管脚有两个用途。首先,它通过变低来指示新数据准备就绪。然后,在SCLK的第一个上升沿上,DRDY/DOUT管脚改变功能并开始输出转换数据,最有效位(msb)优先。在随后的每个SCLK上升沿上,数据被移出。在所有24位都被输出之后,可以通过sclk将此管脚强制拉高。然后它将一直保持高位,直到新转换数据准备就绪。

输出数据不稳定,可能存在以下一个或多个问题。
首先,在模拟输入端混入了其他干扰信号,导致ADC采集到了干扰信号。
其次,是参考电压。如果参考电压(电源)有噪声,结果也会有噪声。建议电源和参考电压做好滤波处理。
再就是PCB布局。将模拟信号和数字信号分开布局布线,避免相互干扰。

赞(0)
未经允许不得转载:TI中文支持网 » 关于ads1222使用的问题
分享到: 更多 (0)