GPIO_WriteLow(NRF24L01_CE_PORT,NRF24L01_CE_PIN);
NRF24L01_write_register_some(WR_TX_PLOAD,data,TX_DATA_WITDH);
GPIO_WriteHigh(NRF24L01_CE_PORT,NRF24L01_CE_PIN);
这程序是24L01发送数据时用到的程序,我用的是STM8,参考风驰的例程,可有点不明白的是为什么要拉低CE引脚??
u8 NRF24L01_check_ack()
{
u8 sta;
sta=NRF24L01_read_register_single(STATUS); //读取状态寄存器
//判断是否产生发送完毕中断或者重复触发中断
if((sta&0x20)||(sta&0x10))
{
NRF24L01_write_register_single(W_REGISTER+STATUS,0xff); //清除TX_DS或者MAX_RT中断标志
GPIO_WriteLow(NRF24L01_CSN_PORT,NRF24L01_CSN_PIN);
NRF24L01_SPI_RW(FLUSH_TX); //清空FIFO
GPIO_WriteHigh(NRF24L01_CSN_PORT,NRF24L01_CSN_PIN);
return 0;
}
else
return 1;
}
这个程序是检测发送是否成功的程序,我的疑问是 清除TX_DS或者MAX_RT中断标志这句用到了 W_REGISTER命令,不是应该先拉低CE引脚才可以么? 我实测的结果是没有拉低CE引脚可也清除了相应标志。
大家都来说说哈!
|