티스토리 뷰
앞의 글에서 설명한 대로 송신 기능을 구현하여 동작시켜 놓은 상태이므로, 송신기에서는 주기적으로 16비트 카운트 값을 내 보내주고 있다.
이번에는 이 데이터를 수신하여 콘솔창에 출력함으로써 데이터 송신과 수신 과정이 정상적으로 수행되고 있음을 확인해 보도록 하겠다.
역시 nrf24_init() 함수에서 초기화 과정을 수행하는데 보면 알겠지만 송신기에서 사용하였던 코드와 매우 유사한 것을 알 수 있다.
단지 다른점은, 17, 18번 줄이다.
17번 줄은 수신 모드로 설정해 주는 코드이고,
18번 줄은 무선으로 날아오는 데이터를 몇 바이트 수신하였으면 수신이 완료되었는지 알 수 있도록 데이터의 크기를 알려주는 코드이다. 이 프로젝트에서는 32바이트 크기로 고정시켜서 사용하는것으로 하였다.
nrf24_receive() 함수를 이용하여 데이터를 수신한다.
nRF24L01의 status regiter안에서 Data Ready 신호가 발생할 때까지 기다린다.
정상적으로 데이터 수신이 완료되면 Rx FIFO에서 데이터를 읽어 nrf24_receive()의 인자로 알려준 buf 포인터 주소에 복사해 준다.
눈여겨 볼 점은 초기화 과정 수행후 13번 줄에 보이는 것처럼 CE 신호를 high로 만들어 nRF24L01이 Rx mode로 동작되도록 만들어 주어야 한다는 것이다.
위 그림은 수신기로 동작되도록 만든 다음 nRF24L01 내부 레지스터를 덤프하여 확인하고, 마지막 줄에 데이터를 수신하면 그 값을 계속 출력되도록 한 것이다.
'프로젝트 > nRF24L01' 카테고리의 다른 글
nRF24L01 - Transmitter (10) | 2018.03.31 |
---|---|
nRF24L01 register 읽어보기 (13) | 2017.02.04 |
nRF24L01을 이용한 무선 통신 (2) | 2017.02.04 |