设备是ads1261+STM32F429ZI开发板
使用CubeMX配置的SPI5。
使用HAL_TransmitReceive(&hspi5,TxBuffer,RxBuffer,1000)进行SPI通讯。
根据手册,ads1261在power_on的时候会RESET。
第一个操作就是读取这个AD的STATUS寄存器(地址为01h),CRC关闭时RREG命令格式如下:
byte1____________byte2__________byte3
发送 0x20+addr Arbitary 00h
接收 FFh Echo byte1 Register data
执行 以下代码:
TxBuffer [3]={0x21,0x00,0x00};
RxBuffer[3];
HAL_TransmitReceive(&hspi5,TxBuffer,RxBuffer,1000)
完毕后RxBuffer={0xFF,0xA1,0xFF};
如果我继续在读一次该寄存器,则RxBuffer ={0x80,0xFF,0x80};
如果不停读下去,RxBuffer 会在{0x80,0xFF,0x80};和{0xFF,0xB0,0xFF};之间交替
结果显然是错误的!
问题:
1.Echo byte1 字面意思是字节1的回声,是不是应该是 0x20+addr ?我试了很多命令,收到的Echo byte1 都是发送命令的第一字节的高位bit置1,就像上面的0xA1
2.无论读哪个寄存器,读到的寄存器数据都是0xFF;这是为什么?
3.我认为SPI应该正常。大家是否另有见解? |