请教工程师2.4g和usb host同时使用问题

老师您好,现在遇到这样一个问题,我用2.4g通讯,同时使用usb host,

注册了一个单独的usb taskid,并且usb taskid任务里面有一个事件,注册的时候先注册的2.4g任务,后注册的usb任务。

在没有插入usb设备的时候,2.4g通讯很正常,但是插入usb以后2.4g就断了,进入不停的跳频状态,并且不能正常接收数据了,通过在usb任务加入print函数来看,usb不插入的时候,usb事件执行间隔很短,不影响2.4g通讯,但是插入usb设备以后,usb事件就变成差不多不到1秒才能执行一次,感觉是usb识别设备以后拖累了2.4g的任务,请问老师这个要怎么办

因为2.4g通讯的数据间隔要小于100ms,所以只能修改usb相关部分,麻烦老师给个思路,谢谢


可以瞅瞅USB host的底层库,非常扯淡,设备枚举过程中的复位过程有个至少200ms的软件延时,那USB device一出现,蓝牙不掉才怪呢,你可以照着底层库的操作过程重新写写枚举流程在usb task里面注册一些event,把延时使用tmos的定时器替代了。


您好,没有无线通信与USBHost共用的例程。您可以功能替代和拆分USB的TMOS事件,让2.4G的事件能够穿插执行。


感谢楼上两位老师解答,我试一下,感谢感谢!


请问工程师,基于592f usb 从+2.4g的双向通信,usb一下发数据,2.4g通信就容易中断,传输距离明显减小,2.4g发送代码产生的cnt值,传输距离和稳定性远远高于usb下发转2.4g,请问是什么原因?怎么解决?


2.4G代码是基于RF_PHY_HOP例程修改的吗?针对“中断”问题,可以加大HeartPeriod、HopPeriod来提高容错率。

针对吞吐量问题,查看USB部分做了哪些功能,评估一下处理USB数据的时间开销多大。USB数据处理的时间越短越好,以释放MCU多交互2.4G包。实际案例中的CH592是可以实现8K上报率的鼠标的。如果USB数据处理时间/串口打印时间等的开销过大,影响到了2.4G包的发包逻辑,是很有可能影响RF通信的。如果排查到确实是USB的问题,可以在USB处理函数上添加HIGHCODE修饰一下,以提高运行速度,


是基于2.4g跳频历程改的,tx_hopping和rx_hopping传参分别代表什么意思,改了这个传参后,发送次数和接收窗口时间就固定是配置的值吗?还是说只是在发送失败和接收失败后的最大尝试次数和时间?

历程中USB只是用来转发,几乎不处理,不占额外时间,串口打印可以通过宏统一取消吧,命令是什么?


tx_hopping:跳频后发送数据,没有接收到返回值,则持续发送传入的参数的次数。如果一直没有收到数据,会过一段时间(例程是100个单位时间)再次重复该流程;

rx_hopping:跳频后参数时间没有接收到数据,则过一段时间再次进行接收(例程是400个单位时间)。

删除打印信息,将初始化删除,debug宏删除,打印信息也删除。


跳频2.4g改的usb从+2.4g双机透传没问题了,稳定性和速度都还可以。有个问题,2.4g一旦断开难以重新建立连接,需要把设备放的很近才可以重新连上,而且时间很长10s,怎么实现快速自动重连?


距离远且丢包严重可能出现无法通信,在这种环境下尝试再次通讯可能需要收发比较多的包才能再次通讯成功。

因此出现远距离断开,然后需要靠近才能建立连接的情况。

一般断开通讯重新建立连接是一瞬间完成的,即调用RF_INIT即可。

有效传输的距离,在开发板测试空阔环境可以做到100m。如果通讯困难,烧录RF_PHY_HOPdemo,将发射功率增大,或者查看硬件的天线绘制,注意点:

CH57x/CH58x原理图与PCB绘制 - SweetTea_lllpc - 博客园 (cnblogs.com)


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