学前班
最后登录1970-1-1
在线时间 小时
注册时间2014-11-20
|
楼主 |
发表于 2014-11-22 22:10:16
|
显示全部楼层
/*开始发送数据*/
status = NRF_Tx_Dat(txbuf);
/**
* @brief 用于向NRF的发送缓冲区中写入数据
* @param
* @arg txBuf:存储了将要发送的数据的数组,外部定义
* @retval 发送结果,成功返回TXDS,失败返回MAXRT或ERROR
*/
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);
/*读取状态寄存器的值 */
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; //其他原因发送失败
}
/**
* @brief 用于向NRF的寄存器中写入一串数据
* @param
* @arg reg : NRF的命令+寄存器地址
* @arg pBuf:存储了将要写入写寄存器数据的数组,外部定义
* @arg bytes: pBuf的数据长度
* @retval NRF的status寄存器的状态
*/
u8 SPI_NRF_WriteBuf(u8 reg ,u8 *pBuf,u8 bytes)
{
u8 status,byte_cnt;
NRF_CE_LOW();
/*置低CSN,使能SPI传输*/
NRF_CSN_LOW();
/*发送寄存器号*/
status = SPI_NRF_RW(reg);
/*向缓冲区写入数据*/
for(byte_cnt=0;byte_cnt<bytes;byte_cnt++)
SPI_NRF_RW(*pBuf++); //写数据到缓冲区
/*CSN拉高,完成*/
NRF_CSN_HIGH();
return (status); //返回NRF24L01的状态
}
是不是改这里 |
|