C51- NRF24L01 无线串口模块
生活随笔
收集整理的這篇文章主要介紹了
C51- NRF24L01 无线串口模块
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.硬件知識
1.1 nRF24L01的引腳功能
(IO方向是相對模塊而言的)
CE:Chip Enable,芯片使能,在發(fā)送和接收過程中都要將這個引腳拉高。
IRQ: 低電平觸發(fā),當狀態(tài)寄存器中 TX_DS、RX_DR 或 MAX_RT 為高時觸發(fā)中斷,當 MCU 給中斷源寫 1 時,中斷引腳被禁止。默認狀態(tài)下所有的中斷源是被禁止的。
1.2 通信條件
兩個NRF24L01,收發(fā)雙方需要滿足4個條件:
1.發(fā)射接收頻道相同(設置頻道寄存器RF_CH 0-125)
2.發(fā)射接收地址相同(設置TX_ADDR和RX_ADDR_P0相同 5個8位地址 )
3.發(fā)射接收數(shù)據(jù)寬度相同(n<=32)
4.發(fā)射接收速率相同(250K 1M 2M)
1.2.1 傳輸協(xié)議如下
2.代碼塊
/********************************************************************************************************* function:nRF24L01_TxPacket(unsigned char* rx_buf) Description:發(fā)送 tx_buf 中數(shù)據(jù),盡量配置一下TX_PLOAD_WIDTH,發(fā)送的長度,最高32字節(jié),設置太高沒必要后面都是0無效數(shù)據(jù) Input:unsigned char* rx_buf 要發(fā)送的數(shù)據(jù) Output:返回0x10 說明達到最發(fā)重發(fā)次數(shù),返回0x20說明發(fā)送成功,返回0xFF說明發(fā)送錯誤 Return: *********************************************************************************************************/ unsigned char NRF24L01_TxPacket(u8 *tx_buf) {u8 sta; EXTI->IMR&=~(EXTI_Line8);//關閉中斷NRF2401_CE_LOW; //只有在 CE=0 時才能對NRF24L01進行設置,否則易出現(xiàn)問題 SPI_Write_Buf(NRF24L01_WRITE_REG + RX_ADDR_P0,(uint8_t*)TX_ADDRESS,TX_ADR_WIDTH); //裝載接收端地址SPI_Write_Buf(WR_TX_PLOAD,tx_buf,TX_PLOAD_WIDTH); //裝載數(shù)據(jù),以及發(fā)送數(shù)據(jù)的長度//SPI_RW_Reg(NRF24L01_WRITE_REG + CONFIG, 0x0e); //IRQ收發(fā)完成中斷響應,16位CRC,主發(fā)送NRF2401_CE_HIGH; //置高CE,激發(fā)數(shù)據(jù)發(fā)送Delay_us(10); //CE拉高后必須有一個10us以上的延時while(GPIO_ReadInputDataBit(NRF2401_IRQ_PORT,NRF2401_IRQ_PIN)); //發(fā)送完成IRQ會拉低,自動置高sta = SPI_Read(STATUS);SPI_RW_Reg(FLUSH_TX,0xff); //把TX_FIFO清空,就發(fā)一次SPI_RW_Reg(NRF24L01_WRITE_REG + STATUS, sta);if(sta&STATUS_MAX) //判斷是否達到最大重發(fā)次數(shù){SPI_RW_Reg(FLUSH_TX,0xff); //清除TX FIFO寄存器 EXTI->IMR|=EXTI_Line8;//打開中斷return STATUS_MAX; //返回0x10}if(sta&STATUS_TX) //判斷是否發(fā)送完成{EXTI->IMR|=EXTI_Line8;return STATUS_TX; //返回0x20 }EXTI->IMR|=EXTI_Line8;return 0xff; //發(fā)送失敗,返回0xFF }總結
以上是生活随笔為你收集整理的C51- NRF24L01 无线串口模块的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三极管参数应用大全(转载)
- 下一篇: winform小程序-随机抽奖软件