This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

LDC1000的SPI读取时 读取Device ID时 读出的数据有时候是0x80 有时候是0xff

Other Parts Discussed in Thread: LDC1314

LDC1000读取数据时 spi模式需要改变吗(LDC1000数据手册中 写入上升沿 读取下降沿)

有些例程中

1.先写入(0x80+寄存器地址)

2.读取

3.接着写入(0xff)

4.最后读取数据

写入0xff是为了什么

  • 建议楼主提供下例程或者例程的名称

  • 因为SPI是个主从结构的总线,所有CLK信号都是由主机发出的。写入1个FF是为了让主机产生读数据的8个CLK,让主能读到从机发过来的数据。这个FF可以是任意值,没有具体含义。

  • 已结解决了
    你知道LDC1314的寄存器配置我 我读取的数据一直是0X00FF
    iic协议是对的 器件的id也读对了

    default_addr = 0X2A;//0X2A

    smbus_writeWord(default_addr,LDC13xx16xx_CMD_RESET_DEVICE,0x8000);

    retVal &= smbus_writeWord(default_addr,LDC13xx16xx_CMD_REF_COUNT_CH0,0xFFFF); //0x08 4 clock periods
    retVal &= smbus_writeWord(default_addr,LDC13xx16xx_CMD_REF_COUNT_CH1,0xFFFF); //Time (tC0) =(CH0_RCOUNT*16)/fREF0
    retVal &= smbus_writeWord(default_addr,LDC13xx16xx_CMD_REF_COUNT_CH2,0xFFFF);
    retVal &= smbus_writeWord(default_addr,LDC13xx16xx_CMD_REF_COUNT_CH3,0xFFFF);
    retVal &= smbus_writeWord(default_addr,LDC13xx16xx_CMD_OFFSET_CH0,0x0000); //0x0c fOFFSET_0 =(CH0_OFFSET/216)*fREF0
    retVal &= smbus_writeWord(default_addr,LDC13xx16xx_CMD_OFFSET_CH1,0x0000);
    retVal &= smbus_writeWord(default_addr,LDC13xx16xx_CMD_OFFSET_CH2,0x0000);
    retVal &= smbus_writeWord(default_addr,LDC13xx16xx_CMD_OFFSET_CH3,0x0000);
    retVal &= smbus_writeWord(default_addr,LDC13xx16xx_CMD_SETTLE_COUNT_CH0,0x0400); //0x10 1 clock period
    retVal &= smbus_writeWord(default_addr,LDC13xx16xx_CMD_SETTLE_COUNT_CH1,0x0400); //(tS0)= (CH0_SETTLECOUNT?16) ÷ fREF0
    retVal &= smbus_writeWord(default_addr,LDC13xx16xx_CMD_SETTLE_COUNT_CH2,0x0400);
    retVal &= smbus_writeWord(default_addr,LDC13xx16xx_CMD_SETTLE_COUNT_CH3,0x0400);
    retVal &= smbus_writeWord(default_addr,LDC13xx16xx_CMD_CLOCK_DIVIDERS_CH0,0x0000); // bypass dividers
    retVal &= smbus_writeWord(default_addr,LDC13xx16xx_CMD_CLOCK_DIVIDERS_CH1,0x0000);
    retVal &= smbus_writeWord(default_addr,LDC13xx16xx_CMD_CLOCK_DIVIDERS_CH2,0x0000);
    retVal &= smbus_writeWord(default_addr,LDC13xx16xx_CMD_CLOCK_DIVIDERS_CH3,0x0000);
    retVal &= smbus_writeWord(default_addr,LDC13xx16xx_CMD_STATUS,0x0001); // report only DRDYs to INT
    retVal &= smbus_writeWord(default_addr,LDC13xx16xx_CMD_CONFIG,0x0200); //0x1a CLKIN pin

    retVal &= smbus_writeWord(default_addr,LDC13xx16xx_CMD_MUX_CONFIG,0xC20F); // ch0, ch1,ch2,ch3-> Wipro for 4 ch

    //retVal &= smbus_writeWord(default_addr,LDC13xx16xx_CMD_MUX_CONFIG,0x820F); // ch0, ch1
    retVal &= smbus_writeWord(default_addr,LDC13xx16xx_CMD_SYSTEM_CLOCK_CONFIG,0x0200); // default, divide by 2
    retVal &= smbus_writeWord(default_addr,LDC13xx16xx_CMD_DRIVE_CURRENT_CH0,0x0000); //
    retVal &= smbus_writeWord(default_addr,LDC13xx16xx_CMD_DRIVE_CURRENT_CH1,0x0000); //
    retVal &= smbus_writeWord(default_addr,LDC13xx16xx_CMD_DRIVE_CURRENT_CH2,0x0000); //
    retVal &= smbus_writeWord(default_addr,LDC13xx16xx_CMD_DRIVE_CURRENT_CH3,0x0000); //

     

  • 您好,问一下您当时解决时发现根本原因是什么?我这边遇到同样问题, 很着急