您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > nrf2401编程指南
COPYRIGHT©2005ALLRIGHTSRESERVED迅通科技TEL:(010)64390486http://:口直接连接或SPI接口两种方式1I/O口直接连接方式这种方式的特点是可以方便地与各种高低速单片机接口方便简单I/O直接接口方式图软件编程上电设置CS低CE低PWR_UP高延时3ms后nRF2401完成上电进入待机模式配置nRF2401设置CS高CE低进入配置模式延时5µs以上单片机将配置数据通过I/O口写入nRF2401参考下面的子程序设置CS为低完成配置主机通过nRF2401发送数据先配置nRF2401为ShockBurst™TX模式设置CE为高使2401进入TX模式延时5µs以上单片机将待发送的数据通过I/O口写入nRF2401的FIFO缓冲区中参考下面的WRITE子程序设置CE为低开始ShockBurst™模式发送主机通过nRF2401接收数据先配置nRF2401为ShockBurst™RX模式设置CE为高202µs后2401进入RX模式当DR1引脚变为高电平时表明nRF2401的FIFO缓冲区已经收到有效数据主机可以通过查询或者中断方式进入读数据子程序将nRF2401中的数据读出参考下面的程序全部数据读完后DR1变为低电平COPYRIGHT©2005ALLRIGHTSRESERVED迅通科技TEL:(010)64390486http://:子程序供参考/********************************************************/名称WRITE功能通过I/O接口方式写1字节数据C语言子程序入口参数unsignedcharbyte待送出的数据出口参数无影响资源ACC/********************************************************/#includeintrins.hsbitBIT7=ACC^7;sbitDATA=P1.0;/*DATA定义为与nRF2401DATA引脚相连的I/O脚*/sbitCLK1=P1.1;/*CLK1定义为与nRF2401CLK1引脚相连的I/O脚*/voidWRITE(unsignedcharbyte){unsignedchari;ACC=byte;/*待发送的数据送到ACC*/i=8;/*共8位*/while(i){DATA=BIT7;/*送出ACC最高位到DATA脚*/CLK1=1;/*将时钟信号置高*/_nop_;/*需要根据CPU运行速度调整NOP指令的数量*/_nop_;ACC=1;/*ACC左移一次*/CLK1=0;/*将时钟信号置低*/i--;/*送下一位*/}}/********************************************************//********************************************************/名称READ功能通过I/O接口方式读1字节数据C语言子程序入口参数无出口参数unsignedchar读回的数据影响资源ACC/********************************************************/#includeintrins.hsbitBIT0=ACC^0;sbitDATA=P1^0;/*DATA定义为与nRF2401DATA引脚相连的I/O脚*/sbitCLK1=P1^1;/*CLK1定义为与nRF2401CLK1引脚相连的I/O脚*/unsignedcharREAD(void){unsignedchari;i=8;/*共8位*/while(i){CLK1=1;/*将时钟信号置高*/_nop_;/*需要根据CPU运行速度调整NOP指令的数量*/ACC=1;/*ACC左移一位*/BIT0=DATA;/*从DATA脚读取一位数据到ACC最低位*/CLK1=0;/*将时钟信号置低*/i--;/*读取下一位*/}returnACC;/*返回数据*/}COPYRIGHT©2005ALLRIGHTSRESERVED迅通科技TEL:(010)64390486http://:********************************************************//********************************************************/名称WRITE功能通过I/O接口方式写1字节数据汇编子程序入口参数ACC待送出的数据出口参数无影响资源R2ACC/********************************************************/DATAEQUP1.0;DATA定义为与nRF2401DATA引脚相连的I/O脚CLK1EQUP1.1;CLK1定义为与nRF2401CLK1引脚相连的I/O脚WRITE:MOVR2,#08WRITE1:RLCA;ACC左移一位,最高位进入CYMOVDATA,C;将CY送到DATA引脚SETBCLK1;将时钟信号置高NOP;需要根据CPU运行速度调整NOP指令的数量NOPCLRCLK1;将时钟信号置低DJNZR2,WRITE1RET/********************************************************//********************************************************/名称READ功能通过I/O接口方式读1字节数据汇编子程序入口参数无出口参数ACC读回的数据影响资源R2ACC/********************************************************/DATAEQUP1.0;DATA定义为与nRF2401DATA引脚相连的I/O脚CLK1EQUP1.1;CLK1定义为与nRF2401CLK1引脚相连的I/O脚READ:SETBDATAMOVR2,#08READ1:SETBCLK1;将时钟信号置高NOP;需要根据CPU运行速度调整NOP指令的数量RLCA;ACC左移一位,CY进入最低位MOVC,DATA;从DATA脚读取一位数据到CYCLRCLK1;将时钟信号置低DJNZR2,READ1RET/********************************************************/COPYRIGHT©2005ALLRIGHTSRESERVED迅通科技TEL:(010)64390486http://:直接连接方式相同读写nRF2401子程序下面给出带51内核的P89LPC913单片机的SPI读写子程序供参考/********************************************************/名称Spi_Init功能P89LPC913单片机SPI接口初始化C语言子程序入口参数无出口参数无影响资源无/********************************************************/sfrSPSTAT=0xE1;sfrSPCTL=0xE2;sfrSPDAT=0xE3;sfrIEN1=0xE8;sbitESPI=IEN1^3;voidSpi_Init(void){SPCTL=0xd1;//bit7:SSIG=1忽略SS信号//bit6:SPEN=1,允许SPI//bit5:DROD=0高位在前//bit4:MASTER=1主模式//bit3:CPOL=0,SPI_CLK空闲时为低电平//bit2:CPHA=0,前时钟上升沿驱动输出及采样方式//bit1~0:01CCLK/16SPI时钟频率1MHzmaxCOPYRIGHT©2005ALLRIGHTSRESERVED迅通科技TEL:(010)64390486http://:=0;//禁止SPI中断SPSTAT=0xc0;//清除SPI传输完成标志及写冲突标志}/********************************************************//********************************************************/名称Spi_Init功能P89LPC913单片机SPI接口初始化汇编子程序入口参数无出口参数无影响资源无/********************************************************/SPSTATEQU0xE1;SPCTLEQU0xE2;SPDATEQU0xE3;IEN1EQU0xE8;ESPIEQUIEN1.3;Spi_Init:MOVSPCTL,#0d1H;bit7:SSIG=1忽略SS信号;bit6:SPEN=1,允许SPI;bit5:DROD=0高位在前;bit4:MASTER=1主模式;bit3:CPOL=0,SPI_CLK空闲时为低电平;bit2:CPHA=0,前时钟上升沿驱动输出及采样方式;bit1~0:01CCLK/16SPI时钟频率1MHzmaxCLRESPI;禁止SPI中断MOVSPSTAT,#0c0H;清除SPI传输完成标志及写冲突标志/********************************************************//********************************************************/名称Spi_Read_Write功能通过SPI接口方式读/写1字节数据C语言子程序入口参数unsignedcharbyte待送出的数据出口参数unsignedchar读回的数据影响资源/********************************************************/sfrSPSTAT=0xE1;sfrSPCTL=0xE2;sfrSPDAT=0xE3;sfrIEN1=0xE8;sbitESPI=IEN1^3;unsignedcharSpi_Read_Write(unsignedcharbyte){SPSTAT=0xc0;//清除SPI中断标志及写冲突标志SPDAT=byte;//将数据写入SPI数据寄存器while((SPSTAT&0x80)==0);//等待SPI结束传送returnSPDAT;//将从SPI读到的数据返回调用程序}/********************************************************//********************************************************/名称Spi_Read_Write功能通过SPI接口方式读/写1字节数据汇编子程序入口参数ACC待送出的数据出口参数ACC读回的数据COPYRIGHT©2005ALLRIGHTSRESERVED迅通科技TEL:(010)64390486http://:*************************************
本文标题:nrf2401编程指南
链接地址:https://www.777doc.com/doc-6887927 .html