小学生
最后登录1970-1-1
在线时间 小时
注册时间2013-8-29
|
楼主 |
发表于 2013-8-31 12:28:08
|
显示全部楼层
小栋 发表于 2013-8-31 10:09
你测一下NRF 的IRQ 管脚接哪个单片机IO口嘛……然后对那个IO口输出 0、1 ,检测 是否输出正常,这样就能验 ...
u8 NRF_Tx_Dat(u8 *txbuf)
{
u8 state;
/*ce为低,进入待机模式1*/
NRF_CE_LOW();
/*写数据到TX BUF 最大 32个字节*/
SPI_NRF_WriteBuf(WR_TX_PLOAD,txbuf,TX_PLOAD_WIDTH);
/*CE为高,txbuf非空,发送数据包 */
NRF_CE_HIGH();
/*等待发送完成中断 */
while(NRF_Read_IRQ()!=0); 这句换成delay,IRQ就有高低电平变化
/*读取状态寄存器的值 */
state = SPI_NRF_ReadReg(STATUS);
/*清除TX_DS或MAX_RT中断标志*/
SPI_NRF_WriteReg(NRF_WRITE_REG+STATUS,state);
SPI_NRF_WriteReg(FLUSH_TX,NOP); //清除TX FIFO寄存器
/*判断中断类型*/
if(state&MAX_RT) //达到最大重发次数
return MAX_RT;
else if(state&TX_DS) //发送完成
return TX_DS;
else
return ERROR; //其他原因发送失败
} |
|