微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > 请教关于ads1158的读取数据

请教关于ads1158的读取数据

时间:10-02 整理:3721RD 点击:

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

命令字节

C2C1C0MULA3A2A1A0

  位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; 
}

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

010寄存器读命令

假设读下这个寄存器

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

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top