根据标准的3行 SPI 读取方法,我尝试读取 LMK04821的版本值0x006,但在发送0x8006后,最后8个 CLKS 没有收到我需要的 SDI 数据。 我已经验证了寄存器是否可以成功写入(打开时钟后,将0x01发现时钟关闭发送至0x002)。 系统启动后,我尝试不初始化时钟,然后执行读取操作,但它不起作用。 读取操作是否与寄存器配置相关? 下面是我读取寄存器代码的用户层。
为了简化我的问题:如何读取寄存器值,忽略以前可能的寄存器配置操作对其的影响?
/* set spi mode, bits and speed */
SPI_set_mode(MODE_0);
SPI_set_bits(8_BITS);
SPI_set_speed(1000000);
/* data to be send */
unsigned char tx_buf[] = {0x80, 0x06, 0x00};
unsigned char rx_buf[3] = {0, };
struct spi_ioc_transfer tr = {
.tx_buf = (unsigned long)tx_buf,
.rx_buf = (unsigned long)rx_buf,
.len = 3,
.delay_usecs = 0
};
ioctl(fd, SPI_IOC_MESSAGE(1), &tr);
