关于nRF905收发程序问题

2019-07-16 05:07发布

单独的一个模块发送数据,另一个接收数据,是没有问题的。但是要是在同一个模块上先发送数据,再接收数据,返回来的数据就是错误的,已经求证过另一个模块发送过来的数据是正确的。是我在接收数据包的时候时间上有问题吗?求高手指点?这是主函数程序
int main(void)
{
  /************************
        发送一次收一次
  ***********************/
        
unsigned char i = 0;
        unsigned int checkright = 0;   //接收正确标志
__disable_interrupt();
               uart_init();
        
        __enable_interrupt();
SPI_Init();
nRF905_Init(TX_ADDRESS);
        nRF905_Init(RX_ADDRESS);


while(1)
        {
          if( rxBuf[0] == 0xaa)//串口接收一个正确数据包
          {
            if( rxBuf[1] == 0xbb)
            {

              for(i=0;i<16;i++)
                SendBuffer[i] = rxBuf[i];//将接收到数据写入发送寄存器
              _delay_ms(100);
              nRF905_SendPacket(RX_ADDRESS);//射频发送数据包            
              
              rxBuf[0] = 0x00;
              rxBuf[1] = 0x00;            
            }              
          }
          if(flag_send_over == 1)
          {
              nRF905_ReceivePacket();   //接收返回的数据包            
              
            if(flag_rece_over == 1)//接收完成后串口发送数据到PC机
            {
            
              flag_send_over = 0;
              
              for(i=0; i<ReceiveCount; i++)
                 txtBuf[i] = ReceiveBuffer[i];
               txCount =  ReceiveCount;
              
               beginSend();
              flag_rece_over = 0;         
            }            
          }
        }            
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
lstcspring
1楼-- · 2019-07-16 07:38
自发自收作什么用?你还是用两个模块,互相同时发数据,看是什么效果
maimihexiong
2楼-- · 2019-07-16 08:28
 精彩回答 2  元偷偷看……
lovezjf234
3楼-- · 2019-07-16 12:01
增加中间延时时间试试,如果单向都ok的话,那很可能就是在发送数据的时候出现占位现象,就是一个发送还没完全结束,另一个开始启动了
kuge995
4楼-- · 2019-07-16 14:02
加我Q吧,我会NRF24L01,应该差不多
kuge995
5楼-- · 2019-07-16 18:06
QQ 278137116
月光之子
6楼-- · 2019-07-16 23:19
不知楼主的做法用意,是不是专门调试NRF905的。本人将持续关注。

一周热门 更多>