|
Wireless Mouse.rar
(72.51 KB, 下载次数: 27)
两个24l01都能读写寄存器,发射端用mega16,已经产生了发射中断,应该是有信号发出。可是接收端就是没有收到任何信号,本人实在不明白哪里问题。下面是接收端部分程序。附件是全部程序。
void main()
{
uchar i,receive;
uchar RxBuf[32];
init_NRF24L01() ;
init(); //12864的初始化
delayMs(100);
//开始显示各种文字
setPosition(0, 0);
writeString(datas1);
setPosition(1, 0);
writeString(datas2);
SetRX_Mode();//接收模式
Delay(10000);
Delay(5000);
while(1)
{
if(nRF24L01_RxPacket(RxBuf))
{
setPosition(3,4);
writeString(datas1);
}
receive=SPI_Read(STATUS);
setPosition(3, 0); //把读到的寄存器值用液晶屏显示出
writeData(receive/100+48);
writeData((receive%100)/10+48);
writeData(receive%10+48);
}
}
/****************************************************************************************************/
/*函数:void SetRX_Mode(void)
/*功能:数据接收配置 0000000
/****************************************************************************************************/
void SetRX_Mode(void)
{
CE=0;
SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f); // IRQ收发完成中断响应,16位CRC ,主接收0000000
CE = 1;
inerDelay_us(130);
}
/******************************************************************************************************/
/*函数:unsigned char nRF24L01_RxPacket(unsigned char* rx_buf)
/*功能:数据读取后放如rx_buf接收缓冲区中00000000000
/******************************************************************************************************/
uchar nRF24L01_RxPacket(uchar* rx_buf)
{
uchar revale=0;
sta=SPI_Read(STATUS); // 读取状态寄存其来判断数据接收状况00000000000
if(0x40 & SPI_Read(STATUS)) // 判断是否接收到数据
{
// CE=0;
CSN=0; //SPI使能000000
SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);// read receive payload from RX_FIFO buffer
revale =1; //读取数据完成标志0000000
}
SPI_RW_Reg(WRITE_REG+STATUS,sta); //接收到数据后RX_DR,TX_DS,MAX_PT都置高为1,通过写1来清楚中断标志00000000000
return revale;
}
|
|