




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/* 文 件 名:nRF905.c* 功 能:nRF905的接收与发送* 说 明:包含发送与接收的所有函数。* 作 者:TANK * 邮 箱:* 完成时间:2007年5月25日*/#include config.h/*- 引脚连接预定义区-*/ #define PWR 116 / P1.16 掉电控制#define EN 117 / P1.17 收发选择#define CE118/ P1.18 收发启动#define TEST1 119 / P1.19 测试引脚1#define TEST2 120 / P1.20 测试引脚2#define CD 023/ P0.23 载波检测#define AM025/ P0.25 地址匹配#define DR 024 / P0.24 数据完毕#define RD 124 / P0.24 ready信号。 #define CSN 10; dly-); /* 名 称:nRF905_init()* 功 能:905各控制、信号线引脚初始化* 入口参数:无* 出口参数:无*/void nRF905_init(void) PINSEL0 |= 0x00000005; / 设置I/O连接到UART0PINSEL1 = 0x00000000;IO0DIR = CSN | / CSN P0.20 片选输出线 CD | / CD P0.23 CD 信号线 AM | / AM P0.24 AM 信号线 DR ; / DR P0.25 DR 信号线 IO1DIR = PWR | / PWR 控制线 CE | / CE 控制线 EN | / EN 控制线 TEST1 | / test1 测试线 TEST2 ; / test2 测试线/*- 初始化函数 包括 SpiInit() SPI接口初始化及连接设置 Init() LPC2200 引脚方向初始化 SendData() SPI发送接收数据函数-*/ /* 名 称:SpiInit()* 功 能:初始化SPI接口,设置为主机。* 入口参数:无* 出口参数:无* 说 明:传输格式必须对照905的SPI总线传输方式设置*/void SpiInit(void) PINSEL0 |= 0x00005500; S0PCCR = 0x52; / 设置SPI时钟分频 S0PCR = (0 3) |/ CPHA = 0, 数据在SCK 的第一个时钟沿采样 (0 4) |/ CPOL = 1, SCK 为低有效 (1 5) |/ MSTR = 1, SPI 处于主模式 (0 6) |/ LSBF = 0, SPI 数据传输MSB (位7)在先 (0 7);/ SPIE = 0, SPI 中断被禁止 /* 名 称:Magic905_Init(void)* 功 能:SPI初始化、905各引脚初始化* 入口参数:无* 出口参数:无*/void Magic905_Init(void) SpiInit(); nRF905_init();/* 名 称:SendData()* 功 能:向SPI总线“发送”或“接收”数据,并接收从机发回的数据。* 入口参数:data 待发送的数据* 出口参数:返回值为接收到的数据*/uint8 SendData(uint8 data) S0PDR = data; while( 0=(S0PSR&0x80) );/ 等待SPIF置位,即等待数据发送完毕 return(S0PDR);/*- nRF905状态改变函数 包括 OFFMode 掉电模式 WaitMode 等待模式 TxMode 发送模式 RxMode 接收模式-*/ /* 名 称:OFFMode() * 功 能:关机/掉电模式 PWR=0 时,nRF905处于掉电模式* 入 口:无* 出 口:无*/void OFFMode(void) IO1CLR = PWR ; / PWR = 0 Delay(1);/* 名 称:WaitMode() 空闲/等待模式 10X* 功 能:空闲等待电模式 PWR=1,CE=0 时,nRF905处于空闲等待模式* 入 口:无* 出 口:无*/void WaitMode(void) IO1SET = PWR ; / PWR = 1 IO1CLR = CE ; / CE = 0 Delay(1);/* 名 称:RxMode() 射频接收模式 110* 功 能:接收模式 PWR=1,CE=1,EN=0 时,nRF905处于接收模式* 入 口:无* 出 口:无*/void RxMode(void) IO1SET = ( PWR | CE ); / PWR=1 CE=1 IO1CLR = EN ; / EN=0 Delay(1);/* 名 称:TxMode() 射频发送模式 111* 功 能:发送模式 PWR=1,CE=1,EN=1 时,nRF905处于发射模式* 入 口:无* 出 口:无*/void TxMode(void) IO1SET = ( PWR | EN | CE ); / PWR=1,CE=1,EN=1 Delay(1);/* 名 称:nRFconfig() 射频配置函数 命令 00H* 功 能:通过SPI总线对905进行射频配置字设置。* 入口参数:rfcon 配置字数组* 出口参数:无*/void nRFconfig(uint8 * rfcon) uint8 i; uint8 data; WaitMode(); / 空闲模式 IO0CLR = CSN; / 使能从机 data = SendData(0x00); / 发送配置命令 for(i=0;i10;i+) data = SendData(rfconi); / 写配置字 IO0SET = CSN ; / 关闭使能 /* 名 称:RDnRFconfig() 读射频配置函数 命令 10H* 功 能:通过SPI总线从905读出射频配置字。* 入口参数:tempbuf 配置字数组* 出口参数:无*/void RDnRFconfig(uint8 * tempbuf) uint8 i; WaitMode(); / 空闲模式 IO0CLR = CSN; / 使能从机 tempbuf0 = SendData(0x10); / 发送读配置命令 for(i=0;i10;i+) tempbufi = SendData(0xAA); / 读配置字 IO0SET = CSN ; / 关闭使能 /* 名 称:WTxData() 写发送数据 命令 20H* 功 能:通过SPI总线向905写入要发送的数据。* 入口参数:txbuf 发送数据变量 no 数据发送数(需根据配置字设置,不能随意更改)* 出口参数:无*/void WTxData(uint8 * txbuf,uint8 datno) uint8 i; uint8 j; uint8 data; j = datno ; if( i32 ) j = 32; / 保证发送字节数不多于32个 IO0CLR = CSN ; / 从机使能 data = SendData(0x20); / 写发送数据命令字 for(i=0;ij;i+) data = SendData(txbufi); / 读发送数据 IO0SET = CSN ; / 关闭使能 /* 名 称:RTxData() 读发送数据 命令 21H* 功 能:通过SPI总线从905读出发送的数据。* 入口参数:no 读出的数据个数(需要结合配置字,不能随意更改)* 出口参数:无* 说 明:读出的数据写入 temp变量中*/void RTxData(uint8 * tempbuf,uint8 datno) uint8 i; uint8 data; uint8 j; j = datno ; if( i32 ) j = 32; / 保证发送字节数不多于32个 IO0CLR = CSN ; / 使能从机 data = SendData(0x21); / 写读发送数据命令 for(i=0;ij;i+) tempbufi = SendData(0xAA); / 写发送数据 IO0SET = CSN ; / 关闭使能/* 名 称:WTxAddr() 写发送地址 命令 22H* 功 能:通过SPI总线向905写入要发送的地址。* 入口参数:txaddr 地址变量* 出口参数:无*/void WTxAddr(uint8 * txaddr,uint8 adrno) uint8 i; uint8 data; IO0CLR = CSN ; / 使能从机 data = SendData(0x22); / 写发送地址命令 for(i=0;iadrno;i+) data = SendData(txaddri); / 写发送地址 IO0SET = CSN ; / 关闭使能/* 名 称:RTxAddr() 读发送地址 命令 23H* 功 能:通过SPI总线从905读出发送地址。* 入口参数:tempbuf 一般数据缓冲区变量* 出口参数:无* 说 明:读出的发送地址写到 temp变量中*/void RTxAddr(uint8 * tempbuf,uint8 adrno) uint8 i; uint8 data; IO0CLR = CSN ; / 从机使能 data = SendData(0x23); / 写读发送地址命令 for(i=0;iadrno;i+) tempbufi = SendData(0xAA); / 读发送地址 IO0SET = CSN ; / 关闭使能 /* 名 称:RRxData() 读接收数据 命令 24H* 功 能:通过SPI总线从905读出接收到的数据。* 入口参数:no 读出的数据数(需要结合配置字不能随意更改) tempbuf 数据读出位置* 出口参数:无*/void RRxData(uint8 * tempbuf,uint8 datno) uint8 i; uint8 data; uint8 j; j = datno ; if( i32 ) j = 32; / 保证发送字节数不多于32个 IO0CLR = CSN ; / 从机使能 data = SendData(0x24); / 写读接收数据命令 for(i=0;ij;i+) tempbufi = SendData(0xAA); / 读接收数据 IO0SET = CSN ; / 关闭使能/* 名 称:TxPacket()* 功 能:发送数据包据。* 入口参数:txaddr 发送地址变量 txbuf 发送数据缓冲区* 出口参数:无*/void TxPacket(uint8 * txaddr,uint8 adrno,uint8 * txbuf,uint8 datno) WaitMode(); / 进入等待模式,准备配置。 WTxAddr(txaddr,adrno); / 写 发送地址 Delay(1); / 延时 WTxData(txbuf,datno); / 写发送数据 发送个数为配置字4字节,即发送数据长度 Delay(1); TxMode(); / 发射模式设置,启动发射 while(0=(IO0PIN&RD); / 等待RD(ready)发送完信号 WaitMode(); / 数据发送
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 遵义职业技术学院《土木工程材料B》2023-2024学年第二学期期末试卷
- 濮阳职业技术学院《服装工业版型设计》2023-2024学年第二学期期末试卷
- 东莞职业技术学院《非织造学》2023-2024学年第二学期期末试卷
- 济南大学《英语教材教法与课程标准》2023-2024学年第二学期期末试卷
- 2024年搪瓷制品相关日用品生产设备项目资金筹措计划书代可行性研究报告
- 大学生寝室安全教育
- 室内设计师的设计理念
- 中医特色规培课件
- 2025年安徽阜阳颍东区东兴建设投资有限责任公司招聘笔试参考题库含答案解析
- 财政学教学课件
- 季节性防雷防汛防台风安全检查表
- 归档文件目录
- 2022年四川省绵阳市中考英语试题及参考答案
- 防疫小组人员名单
- 眼部健康检测与分析课件
- 偏心块振动式土壤夯实机的结构设计说明
- 苏州市建设工程造价计价解释
- 主题班会《坚定信念--放飞理想》
- 煤矿机电设备春季预防性检修计划
- S771(一) 水力循环澄清池
- 高密度电法探测及数据处理解释--答辩
评论
0/150
提交评论