打印
[STM8]

分享stm8l驱动nrf24l01,像串口一样使用24l01进行数据收发

[复制链接]
737|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cry1109|  楼主 | 2020-1-19 10:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 cry1109 于 2020-1-19 10:46 编辑

函数的封装比较全面,初始化配置、收/发模式的切换、数据的收发等等,使用起来就像串口一样简单。下面是部分代码:
/*-----------------------------------------------------------------------------
* 函 数 名         : Nrf_SendData()
* 函数功能                           : 开启NRF发送一次数据
* 输    入         : txbuff:指向待发送的数据   
                                                                                 length: 发送数据长度
* 输    出         : TX_OK :发送成功
                                                                                 0xff  :发送失败
-----------------------------------------------------------------------------*/
uint8_t Nrf_SendData(uint8_t *txbuff,uint8_t length)
{
                uint8_t status;
               
                Nrf_CE(0);
                Nrf_WriteBuff(WR_TX_PLOAD,txbuff,length);
                Nrf_CE(1);
               
                while(GPIO_ReadInputDataBit(NRF_IRQ_PORT, NRF_IRQ_PIN)!=0);//等待发送完成
                status=Nrf_ReadReg(STATUS);                                                          
                Nrf_WriteReg(NRF_WRITE_REG+STATUS,status); //清除TX_DS或MAX_RT中断标志
               
                if(status&MAX_TX)//达到最大重发次数
                {
                                Nrf_WriteReg(FLUSH_TX,0xff);//清除TX FIFO寄存器
                                return MAX_TX;
                }
               
                if(status&TX_OK)//发送完成
                {
                                Nrf.TxOK = 1;
                                Nrf.LED = 1;
                                return TX_OK;
                }
                else
                {
                                Nrf.TxOK = 0;
                                return TX_FAIL;//发送失败
                }
}

/*-----------------------------------------------------------------------------
* 函 数 名         : Nrf_ReceiveData()
* 函数功能                           : 读取NRF接收的数据
* 输    入         : rxbuff:缓存读取的数据
                                                                                 length: 读取的数据长度
* 输    出         : 1:接收到数据   0:无接收数据
-----------------------------------------------------------------------------*/
uint8_t Nrf_ReceiveData(uint8_t *rxbuff,uint8_t length)
{
                uint8_t status;                                                                                 
                status=Nrf_ReadReg(STATUS);           
                Nrf_WriteReg(NRF_WRITE_REG+STATUS,status);         //清除TX_DS或MAX_RT中断标志
                if(status&RX_OK)                                       
                {
                                Nrf_ReadBuff(RD_RX_PLOAD,rxbuff,length);        //读取数据
                                Nrf_WriteReg(FLUSH_RX,0xff);                                                        //清除RX FIFO寄存器
                                Nrf.RxOK = 1;
                                Nrf.LED = 1;
                                return 1;
                }
                else
                {
                                Nrf.RxOK = 0;
                                return 0;                //没收到任何数据
                }
}

马上就要过年啦,祝大家新年快乐,工作顺利!


NRF24L01.rar

3.88 KB

使用特权

评论回复
沙发
mmuuss586| | 2020-1-19 11:20 | 只看该作者
不错,感谢分享

使用特权

评论回复
板凳
guanjiaer| | 2020-2-5 17:50 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
地板
heimaojingzhang| | 2020-2-5 17:52 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
5
keaibukelian| | 2020-2-5 17:54 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
6
labasi| | 2020-2-5 17:56 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
7
paotangsan| | 2020-2-5 17:57 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
8
renzheshengui| | 2020-2-5 18:01 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
9
wakayi| | 2020-2-5 18:03 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
10
wowu| | 2020-2-5 18:05 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
11
xiaoqizi| | 2020-2-5 18:07 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
12
木木guainv| | 2020-2-5 18:10 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

172

帖子

4

粉丝