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.

ADS131M06: 读取寄存器,发送指令后需要延时才能读到正确的寄存器值

Part Number: ADS131M06

主设备为280049

通过下方代码读取寄存器值,总是会读到0x7FFF的值,

但是如果在第25行    return sendCommand(OPCODE_NULL); 添加断点,则程序能正常读到寄存器值

请问是否在发送Command后需要等待一段时间才可以指定的应答数据?

uint16_t readSingleRegister(uint8_t address)
{
	/* Check that the register address is in range */
	assert(address < NUM_REGISTERS);

// Build TX and RX byte array
#ifdef ENABLE_CRC_IN
    uint8_t dataTx[8] = { 0 };      // 2 words, up to 4 bytes each = 8 bytes maximum
    uint8_t dataRx[8] = { 0 };
#else
    uint8_t dataTx[4] = { 0 };      // 1 word, up to 4 bytes long = 4 bytes maximum
    uint8_t dataRx[4] = { 0 };
#endif
    uint16_t opcode = OPCODE_RREG | (((uint16_t) address) << 7);
    uint8_t numberOfBytes = buildSPIarray(&opcode, 1, dataTx);

	// [FRAME 1] Send RREG command
	spiSendReceiveArrays(dataTx, dataRx, numberOfBytes);

	// // [FRAME 2] Send NULL command to retrieve the register data
	// registerMap[address] = sendCommand(OPCODE_NULL);

	// return registerMap[address];

    return sendCommand(OPCODE_NULL);
}