您好,
我的AFE4300遇到一个奇怪的问题。 我可以将值写入寄存器,但有时无法正确读取它们。 我确实是在阅读后立即将所需的值或上一个值写回登记册。 我处于SPI_MODE_1 (CPHA = 1)。
重置AFE4300后,我的当前程序在TI BeagleBone Black上运行:
1)从MISC_REG1读取0x8000并将0x0000写回
2)从MISC_REG2读取0x7FFF并将0xFFFF写回
3)从MISC_REG3读取0x0000并向其写入0x0000
4)从device_control1读取0x0000并向其写入0x6006
5)如果我检查VREF针脚,它确实激活至1.7V
6)从device_control1读取0xFFFF (而不是预期的0x6006)并向其写入0x6005
7)如果我检查VLDO引脚,它确实激活至1.7V,并且不再激活VREF引脚。
8)此后的任何读取都会导致0xFFFF (在SDOUT线路上,没有任何变化,但所有其他信号都正确)。
我很困惑为什么AFE4300似乎有时会发送正确的数据(最初),然后几乎停止发送数据。
这是我的读取功能:
uINT16_t __transferRead (const uint8_t& address,const uint16_t& value,bool use_value = false){
const uint16_t upperbyte = 0xFF00;
const uint16_lowert byte = 0x00FF;
const uint8_readaddr = 0x20;//uint16_t upperbyte = 0xFF00;
{)
uINT8_t send[3]={(readaddr |地址),0x00,0x00};
uint8_t recv[3];
usleep(2);
__spidev.transfer_block (send,recv,3);
uint16_t reteval =(recv[1]<<8)| recv[2];
if (use_value == true){
__transferWrite (address, value);
} else {__transferWrite (address,returnval);}
return returnval;
}