ARM和WinCE6.0下nRF24L01的驅動(dòng)設計

為了方便映射虛擬地址,在本驅動(dòng)中將所用到的特殊功能寄存器的虛擬地址由自定義類(lèi)CS3c2440SFR來(lái)進(jìn)行組織。其中“sfr”是類(lèi)CS3c2440SFR的實(shí)例,D()是一個(gè)自定義宏,其源碼為“#define D(v_add)(*(volatile unsigned long*)v_add)”。
(2)NRF_Open()函數
NRF Open()函數主要實(shí)現了對初始化是否成功的判斷及對nRF24L01進(jìn)行初始配制。核心代碼如下:
SPI_Write_Bur(WRITE REG+TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH); //寫(xiě)本地默認地址
SPI_Write_Buf(WRITE_REG+RX_ADDR_P0,RX_ADDRESS,RX_ADR_WIDTH); //寫(xiě)接收端默認地址
SPI_RW_Reg(WRITE_REG+EN_AA,0x01);
SPI_RW_Reg(WRITE_REG+EN_RXADDR,0x01);
SPI_RW_Reg(WRITE_REG+RF_CH,0);//設置信道工作為2.4 GHz,收發(fā)必須一致
SPI_RW_Reg(WRITE_REG+RX_PW_P0,RX_PLOADWIDTH); //設置接收數據長(cháng)度
SPI_RW_Reg(WRITE_REG+RF_SETUP,0x07);//設置發(fā)射速率為1 MHz,發(fā)射功率為最大值0 dB
(3)NRF_Read()函數
NRE_Read()函數實(shí)現了對接收緩沖區的讀取并傳送至應用程序。由于nRF24L01一次最多能接收32個(gè)字節的信息,所以該函數一次最多能傳送32字節的信息。主要核心代碼如下:
(4)NRF_Write()函數
NRE_Write()函數主要實(shí)現發(fā)送數據寫(xiě)入發(fā)送緩沖區并發(fā)送的功能。主要核心代碼如下:
評論