嗨,您寫入應該要包含Address資訊,如果不包含的話,這樣是傳送和接收一個Byte沒錯唷
這行應該是
HAL_SPI_Receive(&hspi3,&RxData, 1, 0xffff);
另外給您參考MPU9255的寫法
//SPI写寄存器
//reg:指定的寄存器地址
//value:写入的值
uint8_t MPU9255_Write_Reg(uint8_t reg,uint8_t value)
{
uint8_t status;
SPI_MPU9255_CS_L; //使能SPI传输
status = HAL_SPI_Transmit(&hspi1, ®, 1, 0xFFFF);
status = HAL_SPI_Transmit(&hspi1, &value, 1, 0xFFFF);
SPI_MPU9255_CS_H; //禁止MPU9255
Delay(0xFFF);
return(status); //返回状态值
}
//SPI读取指定寄存器
//reg:指定寄存器的地址
uint8_t MPU9255_Read_Reg(uint8_t reg)
{
uint8_t reg_val;
SPI_MPU9255_CS_L;
reg = reg|0x80;
HAL_SPI_Transmit(&hspi1, ®, 1, 0xFFFF); //发送读命令+寄存器号
HAL_SPI_Receive(&hspi1, ®_val, 1, 0xFFFF); //读取寄存器值
SPI_MPU9255_CS_H; //禁止SPI传输
Delay(0xFFF);
return(reg_val);
}
其中SPI_MPU9255_CS是片選,以上供參考