CH573的手册中提到:
当?MASK_UIS_TOKEN?非空闲、并且?RB_UIS_SETUP_ACT?也为?1?时,必须先处理前者,处理完前者后 清零一次?RB_UIF_TRANSFER?使前者进入空闲状态,再处理后者,最后再清零一次?RB_UIF_TRANSFER。
CH32X035和CH32L103的USB外设和CH573非常相似,是不是也要这么处理?谢谢。
CH573的手册中提到:
当?MASK_UIS_TOKEN?非空闲、并且?RB_UIS_SETUP_ACT?也为?1?时,必须先处理前者,处理完前者后 清零一次?RB_UIF_TRANSFER?使前者进入空闲状态,再处理后者,最后再清零一次?RB_UIF_TRANSFER。
CH32X035和CH32L103的USB外设和CH573非常相似,是不是也要这么处理?谢谢。
您好,基本都是差不多的,在CH32X035和CH32L103的EVT中都有对应的USB例程,里面有关于USB中断的处理,可以看一下。关于EVT,可直接在官网搜索MCU型号下载。
麻烦正面回复一下问题,谢谢。
X035和L103我都实现了USB应用没有问题,只是想知道CH573的这种处理方式是不是CH573特有的?X035和L103手册中没有这个要求。
我会下载EVT,也会看例程,而且给你们EVT例程代码提过不少建议了。
蓝牙系列CH57x、58x、59x这里的处理比较特殊,确实是有别于CH32系列。
蓝牙系列最新EVT代码中已有参考处理,有两次清RB_UIF_TRANSFER的过程,您参考例程即可。
@TECH_JW,感谢提供信息。这几个蓝牙芯片这里要特殊处理一下,感觉是硬件USBIP的小Bug,通过软件来规避。
类似的还有CH552的USBIP在数据不到64字节时会多接收2个字节,要求软件中接收数据的缓冲区的长度 >= min(可能接收到的最大数据包长度 + 2 字节,64 字节)
这些小问题无伤大雅,可以通过软件可以规避,建议芯片勘误表(errata)记录一下这些问题。