CH582使用USB和2.4RF同时使用时候存在问题

我把CH582的接收模拟成一个USB 的HID设备,当接收到2.4G的信号后,通过USB上传到主机,现在在无线接收的位置将数据发送出去代码如下,这样USB主机无法接收到数据:

        case RX_MODE_RX_DATA:

        {

            if(crc == 1)

            {

                PRINT("crc error\n");

            }

            else if(crc == 2)

            {

                PRINT("match type error\n");

            }

            else

            {

                  //DevEP2_OUT_Deal(16);//

                  for (int  i = 0; i < 16; i++ )

                  {

                    pEP2_IN_DataBuf[i] = rxBuf[i];

                  }

                  DevEP2_IN_Deal( 16);

                  GPIOB_InverseBits(GPIO_Pin_18);

然而:

修改为如下代码片段则能够接收到数据:

        case RX_MODE_RX_DATA:

        {

            if(crc == 1)

            {

                PRINT("crc error\n");

            }

            else if(crc == 2)

            {

                PRINT("match type error\n");

            }

            else

            {

                  DevEP2_OUT_Deal(16);//

//                  for (int  i = 0; i < 16; i++ )

//                  {

//                    pEP2_IN_DataBuf[i] = rxBuf[i];

//                  }

//                  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[i] = 0x05;//pEP2_OUT_DataBuf[i]+1;

  }

  DevEP2_IN_Deal( l );

}


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

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


moundriver不知道怎么调试,但是是进入了的,因为明显LED闪烁很快,表明有数据接收。 另外我感觉就是把USB的发送函数拷贝过来了,为啥效果会不一样?如何可行我把对应的工程文件给一份,帮我看看哈


另外感觉ch582太好用了,短短几条语句就能实现USB和RF等功能,就是文档太少,建议各位大佬加大力度完善文档。谢谢


你的两种方式其实还是有区别的,一种是赋值缓冲区的值,一种是直接赋值,这边建议你在我们最初的工程的基础上,确保2.4g接收到打印出来,再去使用usb发送。


楼主后面成功了吗?两个设备互相通讯是不是使用同一个例程就可以互相收发了,是否需要修改程序?


我也遇到这样的问题不知道怎么处理呀


只有登录才能回复,可以选择微信账号登录