TI论坛
直播中

李娓仑

8年用户 1440经验值
私信 关注
[问答]

ads1158读取数据,得到的数据格式是什么样的啊?


  • 啃了两天数据手册,加上看了别人的例程有些问题不是很明白
    命令字节
    [tr]C2C1C0MULA3A2A1A0

    [/tr][/table]  位C [2:0] - 命令位
    C [2:0]描述注释[table]
    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;
    }
    想请教一下,其他两种读数据,得到的数据格式是什么样的啊?

                                                                   

回帖(2)

马舒滟

2024-12-24 09:59:09
   010寄存器读命令
假设读下这个寄存器
MUXDIF:多路复用器差分输入选择寄存器(地址= 03h) Default = 0X00.  这里是8位数的寄存器
DIFF7  DIFF6  DIFF5  DIFF4 DIFF3 DIFF2   DIFF1 DIFF0
那是不是读,只会读到一个字节
举报

李勇

2024-12-25 16:45:27
ADS1158 是一款 24 位模数转换器(ADC),用于测量多达 8 个差分输入通道的模拟信号。它支持 SPI 通信协议,用于与微控制器或其他数字系统进行数据交换。

根据您的描述,您正在尝试使用 ADS1158 的直接通道数据读取模式(命令位 C[2:0] = 000)。在这种模式下,您将直接读取通道数据,而不包含任何命令或状态字节。

以下是您需要了解的关键点:

1. 数据格式:在直接通道数据读取模式下,您将读取 3 个字节的数据,分别是:
   - STATUS(状态字节)
   - MSB(数据字节高)
   - LSB(数据字节低)

2. 读取过程:您需要连续读取 3 个字节,如下所示:
   ```
   for (r=0; r<3; r++) {
       // 读取一个字节
   }
   ```

3. 数据解释:将读取的 3 个字节组合成一个 24 位的整数。具体步骤如下:
   - 将 STATUS 字节左移 16 位(因为它是最高位)
   - 将 MSB 字节左移 8 位(因为它是次高位)
   - 将 LSB 字节保持不变(因为它是最低位)
   - 将这三个值相加,得到一个 24 位的整数

以下是一个示例代码,展示如何读取 ADS1158 的数据:

```c
uint32_t readADS1158Data() {
    uint8_t status, msb, lsb;
    uint32_t data = 0;

    // 读取 STATUS 字节
    status = spi_read_byte();
    // 读取 MSB 字节
    msb = spi_read_byte();
    // 读取 LSB 字节
    lsb = spi_read_byte();

    // 组合数据
    data = (status << 16) | (msb << 8) | lsb;

    return data;
}
```

请注意,您需要根据您的硬件和 SPI 库实现 `spi_read_byte()` 函数。这个函数应该从 SPI 总线上读取一个字节的数据。

希望这能帮助您理解 ADS1158 的数据读取过程。如果您有任何其他问题,请随时提问。
举报

更多回帖

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