找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 864|回复: 0
打印 上一主题 下一主题
收起左侧

nrf905头文件

[复制链接]
跳转到指定楼层
楼主
ID:431226 发表于 2019-4-18 22:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#ifndef _NRF905_H_
#define _NRF905_H_

#define WC                0x00        // Write configuration register command
                                                // 编写配置寄存器命令
#define RC                0x10         // Read  configuration register command
                                                // 读取配置寄存器命令
#define WTP                0x20         // Write TX Payload  command
                                                // 写TX 有效数据1-32 字节写操作全部从字节0 开始
#define RTP                0x21        // Read  TX Payload  command
                                                // 读TX 有效数据1-32 字节读操作全部从字节0 开始
#define WTA                0x22        // Write TX Address  command
                                                // 写TX地址命令
#define RTA                0x23        // Read  TX Address  command
                                                // 读TX 地址1-4 字节读操作全部从字节0 开始
#define RRP                0x24        // Read  RX Payload  command
                        // 读RX 有效数据1-32 字节读操作全部从字节0 开始
/*******************************************************************************************/
typedef struct RFConfig1
{
        uchar n;
        uchar buf[10];
}RFConfig;

code RFConfig RxTxConf =   //参看
{
        10,
        0x01, 0x0c, 0x44, 0x20, 0x20, 0xcc, 0xcc, 0xcc,0xc0, 0x58       
};

//内容的struct是nRF905的初始化数据。初始化数据
// ch没有= 1;433 mhz;正常施工,没有Retrans;RX,TX地址是4个字节
// RX TX负载宽度是32字节;禁用走读生时钟;Fosc = 16 mhz
// 8位CRC和启用
/*******************************************************************************************/
uchar data TxBuf[32];
uchar data RxBuf[32];
uchar key,rsbrf,delayf,tf;
/*******************************************************************************************/
uchar bdata DATA_BUF;
sbit        flag        = DATA_BUF^7;
sbit        flag1        = DATA_BUF^0;
/*******************************************************************************************/
sbit        SCK                = P2^0;
sbit        MISO        = P2^1;
sbit        AM                = P2^2;
sbit        TRX_CE        = P2^3;
sbit        TX_EN        = P2^4;
sbit        PWR_UP        = P2^5;
sbit        DR                = P1^7;
sbit        MOSI        = P1^6;
sbit        CSN                = P1^5;

/*******************************************************************************************/
void Config905(void);                        // Config nRF905 module配置NRF905模式
void SetTxMode(void);                        // Set nRF905 in Tx mode
void SetRxMode(void);                        // Set nRF905 in Rx mode
void TxPacket(void);                        // Send data by nRF905        由nRF905发送数据
void RxPacket(void);                        // Recive data by nRF905
void SpiWrite(uchar);                        // Write data to nRF905
uchar SpiRead(void);                        // Read data to nRF905
void Delay(uchar n);                        // Delay 100us
/*******************************************************************************************/
void Delay(uchar n)
{
        uint i;
        while(n--)
        for(i=0;i<80;i++);       
}


/*******************************************************************************************/
/*******************************************************************************************/
//function Config905();         配置
/*******************************************************************************************/
void Config905(void)
{
        uchar i;                                       
        CSN=0;                                                // Spi enable for write a spi command
        SpiWrite(WC);                                // Write config command写放配置命令
        for (i=0;i<RxTxConf.n;i++)        // Write configration words  写放配置字
        {
                SpiWrite(RxTxConf.buf[i]);
        }
        CSN=1;                                                // Disable Spi
}
/*******************************************************************************************/
//function SpiWrite();
/*******************************************************************************************/
void SpiWrite(uchar  byte)
{
        uchar i;       
        DATA_BUF=byte;                                // Put function's parameter into a bdata variable               
        for (i=0;i<8;i++)                        // Setup byte circulation bits
        {                       
                if (flag)                                // Put DATA_BUF.7 on data line
                        MOSI=1;
                else
                        MOSI=0;
                SCK=1;                                        // Set clock line high
                DATA_BUF=DATA_BUF<<1;        // Shift DATA_BUF
                SCK=0;                                        // Set clock line low
        }       
}

/*******************************************************************************************/
//function TxPacket();
/*******************************************************************************************/
void TxPacket(void)
{
        uchar i;
        //Config905();                               
        CSN=0;                                                // Spi enable for write a spi command       
        SpiWrite(WTP);                                // Write payload command
        for (i=0;i<32;i++)
        {
                SpiWrite(TxBuf[i]);                // Write 32 bytes Tx data
        }
        CSN=1;                                                // Spi disable                                               
        Delay(1);
        CSN=0;                                                // Spi enable for write a spi command       
        SpiWrite(WTA);                                // Write address command
        for (i=0;i<4;i++)                        // Write 4 bytes address
        {
                SpiWrite(RxTxConf.buf[i+5]);
        }       
        CSN=1;                                                // Spi disable
        TRX_CE=1;                                        // Set TRX_CE high,start Tx data transmission
        Delay(1);                                        // while (DR!=1);
        TRX_CE=0;                                        // Set TRX_CE low
}

/*******************************************************************************************/
//function SetTxMode();
/*******************************************************************************************/
void SetTxMode(void)                               
{       
        TX_EN=1;
        TRX_CE=0;
        Delay(1);                                         // delay for mode change(>=650us)
}                               
/*******************************************************************************************/
//function SetRxMode();
/*******************************************************************************************/
void SetRxMode(void)
{
        TX_EN=0;
        TRX_CE=1;
        Delay(1);                                         // delay for mode change(>=650us)                               
}

void init_nrf905()
{
        //    //================NRF905初始化
        CSN=1;                                                // Spi         disable        Spi禁用                                       
        DR=1;                                                // Init DR for input
        AM=1;                                                // Init AM for input
        PWR_UP=1;                                        // nRF905 power on
        //================
        Config905();                                // Config nRF905 module 配置模块nRF905                                        // led close
        SetRxMode();                                // Set nRF905 in Rx mode
               
}


#endif

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表