1、/* 文 件 名:nRF905.c* 功 能:nRF905 的接收与发送* 说 明:包含发送与接收的所有函数。* 作 者:TANK * 邮 箱:* 完成时间:2007 年 5 月 25 日*/#include “config.h“/*-引脚连接预定义区-*/ #define PWR 10; dly-); /* 名 称:nRF905_init()* 功 能:905 各控制、信号线引脚初始化* 入口参数:无* 出口参数:无*/void nRF905_init(void) PINSEL0 |= 0x00000005; / 设置 I/O 连接到 UART0PINSEL1 = 0x00000000;IO
2、0DIR = 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 接口
3、,设置为主机。* 入口参数:无* 出口参数:无* 说 明:传输格式必须对照 905 的 SPI 总线传输方式设置*/void SpiInit(void) PINSEL0 |= 0x00005500;S0PCCR = 0x52; / 设置 SPI 时钟分频S0PCR = (0 32 ) j = 32; / 保证发送字节数不多于 32 个IO0CLR = CSN ; / 从机使能data = SendData(0x20); / 写发送数据命令字for(i=0;i32 ) j = 32; / 保证发送字节数不多于 32 个IO0CLR = CSN ; / 使能从机data = SendData(0x
4、21); / 写读发送数据命令for(i=0;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 *
5、txbuf,uint8 datno) WaitMode(); / 进入等待模式,准备配置。WTxAddr(txaddr,adrno); / 写 发送地址 Delay(1); / 延时WTxData(txbuf,datno); / 写发送数据 发送个数为配置字 4字节,即发送数据长度Delay(1);TxMode(); / 发射模式设置,启动发射while(0=(IO0PIN / 等待 RD(ready)发送完信号WaitMode(); / 数据发送完毕,进入等待模式。/* 名 称:RxPacket()* 功 能:接收数据包。* 入口参数:无* 出口参数:无*/void RxPacket(uint8 * rxbuf,uint8 datno) RxMode();while(0=(IO0PIN / 等待接受 到 数据信号WaitMode(); / 等待模式RRxData(rxbuf,datno); / 接收数据 接收字节数为接收配置3 字节while(0!=(IO0PIN / 等待接收 完 数据信号 必要时再加