앞의 글에서 설명한 대로 송신 기능을 구현하여 동작시켜 놓은 상태이므로, 송신기에서는 주기적으로 16비트 카운트 값을 내 보내주고 있다.이번에는 이 데이터를 수신하여 콘솔창에 출력함으로써 데이터 송신과 수신 과정이 정상적으로 수행되고 있음을 확인해 보도록 하겠다. static uint8_t tranceiver_addr[ADDR_WIDTH] = {0x12, 0x34, 0x56, 0x78, 0x90}; void nrf24_init(void) { ce_low(); cs_high(); _delay_ms(10); nrf24_close_pipe(NRF_ALL); nrf24_open_pipe(NRF_PIPE0); nrf24_crc_mode(NRF_CRC_16BIT); nrf24_auto_retr(15, 500); n..
nRF24L01을 이용한 무선 통신nRF24L01 register 읽어보기 nRF24L01의 내부 레지스터들을 정상적으로 읽어 오는 것을 확인하였으면 다음 과정으로 송신 기능을 구현해 보도록 하겠다.static uint8_t tranceiver_addr[ADDR_WIDTH] = {0x12, 0x34, 0x56, 0x78, 0x90}; void nrf24_init(void) { ce_low(); cs_high(); _delay_ms(10); nrf24_close_pipe(NRF_ALL); nrf24_open_pipe(NRF_PIPE0); nrf24_crc_mode(NRF_CRC_16BIT); nrf24_auto_retr(15, 500); nrf24_addr_width(NRF_AW_5BYTES); nrf24..
지금까지는 OLED 디스플레이 모듈과의 통신을 위하여 SPI버스를 이용하였지만, 이번에는 I2C 버스를 이용하여 원하는 데이터를 출력하는 방법에 대해서 설명하도록 하겠다.SPI 버스 방식은 모두 7개의 연결이 필요하였지만, I2C버스의 경우 전원 포함 4개의 연결만 필요하므로 훨씬 단순한 연결방식이라고 할 수 있겠다.SSD1306 datasheet 문서에서 I2C 버스의 경우에 어떻게 데이터를 보내야하는지는 위의 그림과 같이 설명되어 있다.I2C의 경우 device address가 필요한데 SSD1306의 경우에는 0x3C의 값을 가진다. 필요한 경우 칩의 D/C# 핀을 1로 연결하면 device address가 0x3D로 변경할 수 있다. 이번 프로젝트에서 사용하는 모듈은 0x3C의 주소를 가지고 있다..