配置
配置为16位数据位
发送与读取
以下面代码为例说明
void Adxl_Read(uint16_t code,uint16_t * value)
{
uint16_t pdata;
pdata = (code | 0x0080) << 8;
ADXLCS_L;
// HAL_SPI_Transmit(&ADXLSPI,(uint8_t*)&pdata,1,ADXL345_FLAG_TIMEOUT);
// HAL_SPI_Receive(&ADXLSPI,(uint8_t*)value,1,ADXL345_FLAG_TIMEOUT);
HAL_SPI_TransmitReceive(&ADXLSPI,(uint8_t*)&pdata,(uint8_t*)value,1,ADXL345_FLAG_TIMEOUT); // HAL_SPI_TransmitReceive 能发送16位
ADXLCS_H;
}
- 参数用16位
- 给函数调用时,强制改为8位指针,
- 数据长度为1,因为我们发送一个16位的数据
举例:16位的变量,被8位指针指向时,指针指向低8位,地址+1,指向高8位 - HAL库函数 HAL_SPI_TransmitReceive 可以正常收发,HAL_SPI_Transmit 会发送两次,而且只有第一次发送的正确,这个BUG 知道就行,我也懒得去研究