HAL庫的SPI 發送16位

配置

配置爲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;
}
  1. 參數用16位
  2. 給函數調用時,強制改爲8位指針,
  3. 數據長度爲1,因爲我們發送一個16位的數據
    舉例:16位的變量,被8位指針指向時,指針指向低8位,地址+1,指向高8位
  4. HAL庫函數 HAL_SPI_TransmitReceive 可以正常收發,HAL_SPI_Transmit 會發送兩次,而且只有第一次發送的正確,這個BUG 知道就行,我也懶得去研究
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章