HAL 라이브러리의 SPI 16비트 전송

2289 단어 STM32HALSPI
프로비저닝
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 라이브러리 함수 HALSPI_TransmitReceive는 정상적으로 수신할 수 있습니다.HALSPI_Transmit은 두 번 보낼 거예요. 그리고 처음 보낸 것만 정확해요. 이 BUG만 알면 돼요. 저도 연구하기 귀찮아요
  • 좋은 웹페이지 즐겨찾기