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

请教关于ads1158的读取数据

啃了两天数据手册,加上看了别人的例程有些问题不是很明白

命令字节

C2 C1 C0 MUL A3 A2 A1 A0

  位C [2:0] – 命令位

C [2:0] 描述 注释
000 通道数据直接读取(无命令) 在发送命令之前切换CS或允许SPI超时

001 通道数据读取命令(寄存器格式) 设MUL = 1; 状态字节始终包含在数据中
010 寄存器读命令

一共有三种读命令

通道数据格为3个字节

1 STATUS  状态字节   2 MSB  数据字节高   3 LSB   数据字节低

以下是我看的例程,采用的是000第一种读法,连续读三字节

for (r=0;r<3;r++) //读取16位数据 前8位是通道信息,后16位是转换数据结果
{
a=ads_senddata(0x00); //发送读取数据命令,读取数据,先高位,后低位  
sum|=a;
sum=sum<<8;
}
sum=sum>>8;      这里得到了sum为32位的数,低24位为我们需要的

unsigned char ads_senddata(unsigned char data) //SPI发送数据,要在外部保证SS = 0 
{
SPDR = data; //启动数据传输 
while((SPSR & 0x80) == 0); // 等待传输结束 
data = SPDR; 
return data; 
}

想请教一下,其他两种读数据,得到的数据格式是什么样的啊?

Zhong JianFu:

010寄存器读命令

假设读下这个寄存器

MUXDIF:多路复用器差分输入选择寄存器(地址= 03h) Default = 0X00.  这里是8位数的寄存器 DIFF7  DIFF6  DIFF5  DIFF4 DIFF3 DIFF2   DIFF1 DIFF0

那是不是读,只会读到一个字节

赞(0)
未经允许不得转载:TI中文支持网 » 请教关于ads1158的读取数据
分享到: 更多 (0)