资源简介
通过TTL门电路转换电平,硬件SPI不同于IO的模拟速度更快更稳定。可采用中断触发方式
代码片段和文件信息
#include“Includes.h“
INT8U T_Address[5]={0x340x430x100x100x01};
INT8U R_Address[5]={0x340x430x100x100x01};
/******************************************************************************************/
/*硬件SPI寄存器配置
void SPI_Init(void)
{
DDRS=0xe0;
SPI0CR1=0x50; //01010010 0x52 CPHA一定是零
//SPI0CR2=0x10;
SPI0BR=0x42; //40/80=0.5MHZ;
}*/
/******************************************************************************************/
/*延时函数*/
/******************************************************************************************/
void inerDelay_us(unsigned char n)
{
for(;n>0;n--) {}
}
//****************************************************************************************/
/*NRF24L01初始化*/
//***************************************************************************************/
void init_NRF24L01(void)
{
inerDelay_us(100);
CE=0; // chip enable
CSN=1; // Spi disable 24l01初始化之前片选一定要拉高!!!!!!!!!!!!!!!!!!!!
//SCK=0; // Spi clock line init high
SPI_Write_Buf(WRITE_REG + TX_ADDR T_Address TX_ADR_WIDTH); // 写本地地址
SPI_Write_Buf(WRITE_REG + RX_ADDR_P0 R_Address RX_ADR_WIDTH); // 写接收端地址
SPI_RW_Reg(WRITE_REG + EN_AA 0x01); // 频道0自动 ACK应答允许
SPI_RW_Reg(WRITE_REG + EN_RXADDR 0x01); // 允许接收地址只有频道0,如果需要多频道可以参考Page21
SPI_RW_Reg(WRITE_REG + SETUP_RETR 0x1a);
SPI_RW_Reg(WRITE_REG + RF_CH40); // 设置信道工作为2.4GHZ,收发必须一致
SPI_RW_Reg(WRITE_REG + RX_PW_P0 RX_PLOAD_WIDTH); //设置接收数据长度,本次设置为32字节
SPI_RW_Reg(WRITE_REG + RF_SETUP 0x07); //设置发射速率为1MHZ,发射功率为最大值0dB
SPI_RW_Reg(WRITE_REG + CONFIG 0x3f); // IRQ收发完成中断响应,16位CRC,主发送
}
/****************************************************************************************************/
/*函数:uint SPI_RW(uint uchar)*/
/*功能:NRF24L01的SPI写时序*/
/****************************************************************************************************/
INT8U SPI_RW(INT8U data)
{
while (!SPI0SR_SPTEF);
SPI0DRL = data;
while(!(SPI0SR_SPIF));
return SPI0DRL;
}
/****************************************************************************************************/
/*函数:uchar SPI_Read(uchar reg)*/
/*功能:NRF24L01的SPI时序*/
/****************************************************************************************************/
uchar SPI_Read(uchar reg)
{
uchar reg_val;
CSN = 0; // CSN low initialize SPI communication...
SPI_RW(reg); // Select register to read from..
reg_val =~SPI_RW(0); // ..then read registervalue
CSN = 1; // CSN high terminate SPI communication
return(reg_val); // return register value
}
/****************************************************************************************************/
/*功能:NRF24L01读写寄存器函数*/
/****************************************************************************************************/
uint SPI_RW_Reg(uchar reg uchar value)
{
uint status;
CSN = 0; // CSN low
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6372 2013-06-04 00:12 NRF24L01-SPI\NRF24L01_SPI.c
文件 3514 2013-06-03 23:52 NRF24L01-SPI\NRF24L01_SPI.h
目录 0 2013-06-11 12:38 NRF24L01-SPI
----------- --------- ---------- ----- ----
9886 3
- 上一篇:VNCX
- 下一篇:TCL-S1916 ,1924交换机管理程序
相关资源
- TCL-S1916 ,1924交换机管理程序
- VNCX
- 多窗口后台鼠标连点器
- jstl-api-1.2和jstl-impl-1.2
- 精美千年登陆器(自动更新).rar
- Crystal Impact Match!2.1.3 试用延长
- CASS9.1最新S4数据及驱动+ET199数据及驱
- 使用选择性重传协议实现UDP可靠通信
- 一个超简单的企业管理系统(带ACCE
- 实现小波变换例子 upcoef 函数
- 类pascal语言编译器(编译原理实验)
- DELPHI与西门子200PLC的串口通信实例
- mybatis连接oracle实例
- 单片机和adc0809数字电压表
- 信号估计DOAmusicespritcapon
- PIC单片机完成的电子密码锁
- B/S 网上订餐系统
- BCG帮助手册,完整版_修正
- Labview与CH372CH375的通信测试
- 基于MFC扩展CListCtrl子项显示图片并叠
- VMware65_SLP_DeLLSLIC2.1
- 单片机、ADC0808809设计简易数字电压表
- 基于MIPS指令集的32位CPU设计与Verilog语
- 28335CAN调试程序
- NE555电路应用原理图及PCB
- 通信软件的具体实例──基于Socket的
- Windows异步套接字网络编程
- 黑白棋(带简单AI)
- Packet Tracer 5.2.1
- 编程实现二维DCT变换
评论
共有 条评论