WCH沁恒单片机
直播中

悬崖勒马2

8年用户 883经验值
擅长:EMC/EMI设计
私信 关注
[问答]

CH582使用USB和2.4RF同时使用无法接收数据怎么处理?

我把CH582的接收模拟成一个USB 的HID设备,当接收到2.4G的信号后,通过USB上传到主机,现在在无线接收的位置将数据发送出去代码如下,这样USB主机无法接收到数据:
        case RX_MODE_RX_DATA:
        {
            if(crc == 1)
            {
                PRINT("crc errorn");
            }
            else if(crc == 2)
            {
                PRINT("match type errorn");
            }
            else
            {
                  //DevEP2_OUT_Deal(16);//
                  for (int  i = 0; i < 16; i++ )
                  {
                    pEP2_IN_DataBuf = rxBuf;
                  }
                  DevEP2_IN_Deal( 16);
                  GPIOB_InverseBits(GPIO_Pin_18);

然而:
修改为如下代码片段则能够接收到数据:
        case RX_MODE_RX_DATA:
        {
            if(crc == 1)
            {
                PRINT("crc errorn");
            }
            else if(crc == 2)
            {
                PRINT("match type errorn");
            }
            else
            {
                  DevEP2_OUT_Deal(16);//
//                  for (int  i = 0; i < 16; i++ )
//                  {
//                    pEP2_IN_DataBuf = rxBuf;
//                  }
//                  DevEP2_IN_Deal( 16);
//                  GPIOB_InverseBits(GPIO_Pin_18);



已知我的DevEP2_OUT_Deal函数如下,我感觉没什么区别,不知道为什么不能接收?
void DevEP2_OUT_Deal( UINT8 l )
{ /* 用户可自定义 */
  UINT8 i;


  for ( i = 0; i < l; i++ )
  {
    pEP2_IN_DataBuf = 0x05;//pEP2_OUT_DataBuf+1;
  }
  DevEP2_IN_Deal( l );
}


  
  

回帖(1)

刘华

2022-8-3 11:28:03

第一个监控下,有没有进入这个判断。

其实理论上不建议这样操作,建议操作是保留原来的PHY的CB函数不变,收到RX的数据后,置标志位,另开任务启动USB——IN上传的动作。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分