32F429IDISCOVERY SPI로 자이로 MEMS ID 읽기

2019. 7. 15. 22:34임베디드/32F429IDISCOVERY

32F429IDISCOVERY에서 자이로 MEMS 회로도는 다음과 같다. SPI를 통해서 데이터를 주고받고, 채널 5번을 이용한다는 점을 알 수 있다. NCS_MEMS_SPI는 PC1번에 연결되어 있고 소프트웨어적으로 제어할 것이니 GPIO_OUTPUT으로 설정한다

 

다음은 SPI5와 USART1에 대한 CubeMX 설정이다

 

 

 

자이로 MEMS의 장치 ID를 읽으려고 한다. 데이터시트를 들어가보면,

https://www.pololu.com/file/0J563/L3GD20.pdf

 

SPI 인터페이스는 RW + MS + AD(5) 이후에 데이터를 읽어오는 구성으로 되어있다

 

우리가 읽으려는 장치 ID의 주소는 0x0F이며, 실제 제대로 읽힌다면 0xD4를 출력하게 된다

 

 

따라서 MEMS에 전달하는 명령어는 읽기 모드 + 장치 주소로 0x8F가 된다

 

다음은 소스코드다. SPI 인터페이스에 맞춰서 먼저 해당 SS핀은 LOW로 연 다음, 동기 방식을 통해서 데이터를 전송하게 되고, 이후 dummy 값을 던지면서 장치 주소를 읽게 된다