当前位置: 代码迷 >> Wireless >> nRF24LE1 读写寄存器的有关问题
  详细解决方案

nRF24LE1 读写寄存器的有关问题

热度:4548   发布时间:2013-02-26 00:00:00.0
nRF24LE1 读写寄存器的问题
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寄存器的值