配置
配置爲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 知道就行,我也懶得去研究