avr单片机无线收发模块控制.doc

上传人:飞*** 文档编号:45043457 上传时间:2018-06-14 格式:DOC 页数:6 大小:41KB
返回 下载 相关 举报
avr单片机无线收发模块控制.doc_第1页
第1页 / 共6页
avr单片机无线收发模块控制.doc_第2页
第2页 / 共6页
avr单片机无线收发模块控制.doc_第3页
第3页 / 共6页
avr单片机无线收发模块控制.doc_第4页
第4页 / 共6页
avr单片机无线收发模块控制.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《avr单片机无线收发模块控制.doc》由会员分享,可在线阅读,更多相关《avr单片机无线收发模块控制.doc(6页珍藏版)》请在金锄头文库上搜索。

1、NRF24l01 的与的与 AVR 的无线通信代码(接收端)(转载)的无线通信代码(接收端)(转载)默认分类 2009-10-08 15:18:06 阅读 241 评论 0 字号:大中小 /*nRF24L01 无线模块的头文件,包含各种操作函数*/*copyright (c) Liu.D.F RoboGmae2008.USTC* *author:,a member of team Blademaster* */#ifndef _NRF_H #define _NRF_H#include “funcs.h“/selfDefine in 0820 /以下定义是为了定义地址 /#define TX_A

2、DDRESS adress /#define RX_ADDRESS adress /unsigned char adress5=0xB3,0xB3,0xB3,0xB3,0xB3; #define TX_ADR_WIDTH 5 #define RX_ADR_WIDTH 5/以下定义是为了切换频道 #define D3_P (PIND /通过 SPI 读寄存器函数 unsigned char SPI_Write_Reg(unsigned char reg_addr,unsigned char reg_val);/通过 SPI 写寄存器函数 unsigned char SPI_Write_Comma

3、nd(unsigned char Command); /通过 SPI 写命令函 数 void SPI_Read_Buf(unsigned char reg, unsigned char *pBuf, unsigned char bytes);/ 通过 SPI 读缓冲区的函数 void SPI_Write_Buf(unsigned char reg, unsigned char *pBuf, unsigned char bytes); / 通过 SPI 写缓冲区函数 void PTX_Config(void); /PTX(发送模式)设置函数 void ConfigChk(void); /设置 C

4、HK 的函数 void ConfigChkAll(void); void PRX_Config(void); /PRX(接收模式)设置函数 /*/ /SPI_Read_Reg();SPI_Write_Reg();SPI_Write_Command(); /SPI_Read_Buf();SPI_Write_Buf(); /*/*SPI_Read_Reg*/ unsigned char SPI_Read_Reg(unsigned char reg_addr) unsigned char reg_val; CSN_0; SPI_MasterTransmit(reg_addr); / 先写入地址 re

5、g_val = SPI_MasterReceive(0x00); /再读出数据 CSN_1; return(reg_val); / /*SPI_Write_Reg*/ unsigned char SPI_Write_Reg(unsigned char reg_addr,unsigned char reg_val) unsigned char status;CSN_0; status=SPI_MasterTransmit(reg_addr); / 选择寄存器 SPI_MasterTransmit(reg_val); / 往里写数据 CSN_1; return(status); / 返回状态 /*

6、SPI_Write_Command()*/ unsigned char SPI_Write_Command(unsigned char Command) unsigned char status; CSN_0; status = SPI_MasterTransmit(Command); /写命令 CSN_1; return(status); / 返回状态 /*SPI_Read_Buf*/ void SPI_Read_Buf(unsigned char reg, unsigned char *pBuf, unsigned char bytes) unsigned char byte_ctr;SP

7、I_MasterTransmit(reg); for(byte_ctr=0;byte_ctrbytes;byte_ctr+) pBufbyte_ctr = SPI_MasterReceive(0x00); /*SPI_Write_Buf*/ void SPI_Write_Buf(unsigned char reg, unsigned char *pBuf, unsigned char bytes) unsigned char byte_ctr;SPI_MasterTransmit(reg); for(byte_ctr=0; byte_ctrbytes; byte_ctr+) SPI_Maste

8、rTransmit(*pBuf+); void PTX_Config() CE_0;SPI_Write_Command(FLUSH_TX);/清空发射寄存器/SPI_Write_Buf(WRITE_REG+TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH);/发送 端地址SPI_Write_Reg(WRITE_REG+SETUP_RETR,0x00);/禁用重发SPI_Write_Reg(WRITE_REG+EN_AA,0x00);/通道 05 自动应答-低 05 位SPI_Write_Reg(WRITE_REG+RF_CH,CH);/设置频率 2.4+0.(RF_CH)GHZS

9、PI_Write_Reg(WRITE_REG+RF_SETUP,0x07);/0x03,1M 速率最大功率SPI_Write_Reg(WRITE_REG+CONFIG,0x5A);/发送空闲模式一CE_1; void PRX_Config() CE_0; /SPI_Write_Buf(WRITE_REG+RX_ADDR_P0,TX_ADDRESS,TX_ADR_WIDTH);/接 收地址 SPI_Write_Command(FLUSH_RX); SPI_Write_Reg(WRITE_REG+RX_PW_P0,TX_PLOAD_WIDTH);/接收 SPI_Write_Reg(WRITE_RE

10、G+EN_AA,0x00);/通道 05 自动应答-低 05 位 SPI_Write_Reg(WRITE_REG+EN_RXADDR,0x01);/数据通道 05 使能-低 05 位 SPI_Write_Reg(WRITE_REG+RF_CH,CH);/设置频率 2.4+0.(RF_CH)GHZ SPI_Write_Reg(WRITE_REG+RF_SETUP,0x07);/ox03,1M 速率最大功率 SPI_Write_Reg(WRITE_REG+CONFIG,0x3B);/接收空闲模式一 CE_1; /检查关键寄存器设置 void ConfigChk(void) unsigned cha

11、r reg_val; reg_val=SPI_Read_Reg(CONFIG); while(!(UCSRAUDR=reg_val; reg_val=SPI_Read_Reg(EN_AA); while(!(UCSRAUDR=reg_val; reg_val=SPI_Read_Reg(EN_RXADDR);while(!(UCSRAUDR=reg_val ;reg_val=SPI_Read_Reg(RX_PW_P0); while(!(UCSRAUDR=reg_val; /检查所有寄存器(24 个)设置 void ConfigChkAll(void) unsigned char i=0,reg

12、_val=0; for(i=0;i24;i+) reg_val=SPI_Read_Reg(i); while(!(UCSRAUDR=reg_val; /*RF_Transmit*/ void RF_Transmit(unsigned char *TxDataBuf) unsigned char temp,i; SPI_Write_Command(FLUSH_TX); CSN_0; SPI_MasterTransmit(WR_TX_PLOAD); for(i=0;iTX_PLOAD_WIDTH;i+) SPI_MasterTransmit(TxDataBufi);CSN_1; CE_1; /使能

13、发送 Delayus(20); / CE_0; /返回空闲模式一 Delayus(180);/ /*RF_Receive()*/ void RF_Receive(unsigned char *RxDataBuf) unsigned char temp,i; CSN_0; SPI_MasterTransmit(RD_RX_PLOAD); for(i=0;iTX_PLOAD_WIDTH;i+) temp=SPI_MasterReceive(0x00); /while(!(UCSRA /UDR=temp;RxDataBufi = temp; CSN_1; SPI_Write_Reg(WRITE_REG+STATUS,0x40);/清 RX_DR 中断标志 SPI_Write_Command(FLUSH_RX); SPI_Write_Command(FLUSH_RX); #endif/* nRF24L01 over */

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号