用GPIO1/2进行检测,
GPIO1用于WTR(等待TX/RX完毕),GPIO2 用于接收的FSYNC(RF ID同步)检测
发送和接收时GPIO1和2都有脉冲,说明数据已经发送出去,接收已经成功了的。
但是FIFO读写不正常,都是0,有高手知道什么原因吗?
这个是FIFO TX的写函数:// TX 读 FIFO
void write_data_to_fifo(U8 send_cnt)
{
U8 i = 0;
if(send_cnt > RF_FIFO_LEN)
{
send_cnt = RF_FIFO_LEN;
} // A7105_write_command(RF_CMD_TX_FIFO_RESET); RF_SCS_LOW();
SPI_RWbyte(RF_REG_FIFO_DATA);
for(i=0; i<send_cnt; i++) // 这里固定写RF_FIFO_LEN个字节
{
SPI_RWbyte(i);//(Rf_Send_Buf);
}
RF_SCS_HIGH();
}
// RX 读FIFO
void read_data_from_fifo(void)
{
U8 i = 0;
// A7105_write_command(RF_CMD_RX_FIFO_RESET);
RF_SCS_LOW();
SPI_RWbyte(RF_REG_FIFO_DATA|0x40);
for(i=0; i<RF_FIFO_LEN; i++) // 这里是固定读RF_FIFO_LEN个字节
{
Rf_Rec_Buf = SPI_RWbyte(0);
}
RF_SCS_HIGH();
}
// TX 发送数据
void send_data_by_RF(unsigned char send_byte_cnt)
{
if(send_byte_cnt)
{
A7105ProcessOK=OFF;// TX完毕之后,在中断中置1
write_data_to_fifo(send_byte_cnt); // 写数据到fifo
A7105_entry_tx(); // 进入发送状态发送数据
Delay(150); // 从通过软件命令让RF进入发送状态到开始发送,这中间有140us的延时 // 因此这里要经过>=140us 的延时后在中断中再读GPIO1的状态
while(A7105ProcessOK==OFF); // 等待TX完毕
}
} |