查看: 776|回复: 0

在很多单片机调试通过的 NRF24L01库

[复制链接]
  • TA的每日心情

    2023-7-25 22:49
  • 签到天数: 385 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2016-2-18 10:25:00 | 显示全部楼层 |阅读模式
    分享到:
    最近看到一些论坛里,有些人调试这个,很多的时候都不成功。所以共享一个自己使用的在很多MCU上调试通过的NRF24L01库。这个库是从mbed上移植过来的,相当的稳定。而且对于开发者来说使用起来也很简单。
    先看下这个库的目录结构:
    NRF240L01_LIB

    ├─Driver
    │          NRF24L01P.c
    │         NRF24L01P.h
    │     
    └─Hal
               │ i2c_api.h
               │
               └─Target
                        └─GD32F150R
                                    gd32f1x0_i2c_api.c
    其中Drvier是nRF24L01P是基于HAL下的i2c_api.h实现的驱动,这个我们是不用管。我们需要做的就是实现特定平台下 i2c_api.h定义的函数。例如上面代码实现了GD32F105系统MCU的i2c_api接口。那么i2c_api.h有些什么东西呢,其实也很简 单,只需要实现5个函数,看代码就知道了:
    /** **************************************************************************************** * * @file i2c_api.h * * @brief Header file of i2c hardware abstract layer api. * * Copyright (C) sunsjw 2012-2020 * * $Rev: 5444 $ * **************************************************************************************** */#ifndef _I2C_API_H#define _I2C_API_H#include <stdint.h>//**************************************//向I2C设备写入一个字节数据//**************************************void i2c_init(void);//**************************************//向I2C设备写入一个字节数据//**************************************void i2c_WriteByte(uint8_t SlaveAddr,uint8_t REG_Address,uint8_t REG_data);//**************************************//从I2C设备读取一个字节数据//**************************************uint8_t i2c_ReadByte(uint8_t SlaveAddr,uint8_t REG_Address);//**************************************//从I2C设备读取指定长度字节数据//**************************************int i2c_ReadBytes(int dev_address,int reg_address,char* buffer,int length);//**************************************//向I2C设备写入多字节数据//**************************************int i2c_WriteBytes(int dev_address,int reg_address,char* buffer,int length);#endif就是I2C的初始化,读写操作。每个MCU不尽相同,大家去实现自己所用MCU的就可以了。
    主程序调用就更简单了,首先声名一个全局的nRF24L01的实例 extern NRF_Class_cb_TypeDef nrf_obj;然后在main函数里调用初始化,上电,设置等一些函数,就可以了。还是发代码给大家看比较清楚:
    extern NRF_Class_cb_TypeDef nrf_obj;char txbuf[20];int main(){        nrf_obj.initialize();                nrf_obj.powerUp();        //        nrf_obj.setAirDataRate(NRF24L01P_DATARATE_2_MBPS);        //设置传输大小        nrf_obj.setTransferSize(sizeof(txbuf),NRF24L01P_PIPE_P0);        //设置为发送模式 如果是接收则调用 nrf_obj.setReceiveMode        nrf_obj.setTransmitMode();        nrf_obj.enable();                while(1)        {                result = nrf_obj.write(NRF24L01P_PIPE_P0,(char*)&txbuf,sizeof(txbuf));                if( result == -1)                {                        wait_us(100);                }        }}OK,搞定,希望对大家有用。
    下载地址:
    nRF240L01_lib.rar
    热门推荐:
    手把手带你玩NRF24L01
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-4-19 06:28 , Processed in 0.102386 second(s), 14 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.