unsigned char hal_nrf_rw(unsigned char value) {
SPIRDAT = value;
while (!(SPIRSTAT & 0x02))
; // wait for byte transfer finished
;
return SPIRDAT; // return SPI read value
}
unsigned char hal_nrf_read_reg(unsigned char reg) {
unsigned char temp;
CSN_LOW();
hal_nrf_rw(reg);
temp = hal_nrf_rw(0);
CSN_HIGH();
return temp;
}
上面的代码有个地方看不懂(红色字体),hal_nrf_read_reg猜测应该是读寄存器的函数,但是它是怎么读得呢,红色字体的两行是什么意思呢?
------解决方案--------------------------------------------------------
CSN_LOW();
hal_nrf_rw(reg);
temp = hal_nrf_rw(0);
CSN_HIGH();
==================================================
hal_nrf_rw(//参数);
1.这个是NRF写数据的函数,用SPI完成,看看你的芯片有没有SPI,没有的话,要模拟SPI来实现;
2.hal_nrf_rw(reg);先将寄存器地址写入NRF
3.因为SPI以循环移位实现,这一步hal_nrf_rw(0)在写入0的同时,读出了上一步reg寄存器的值