CH582的USB2接口调用CHRV3文件库的实现方法
参考代码:https://pan.baidu.com/s/1CV4lm7DDP0nJ7PlA468pXQ?pwd=wch6 提取码: wch6
CH582有两路USB接口,均支持USB主机/设备功能,两个USB接口分别使用两套不同的寄存器进行配置,可以独立工作。
当涉及到USB+文件系统的场景时,如CH582的USB口作为USB主机操作U盘,EVT例程中提供了支持USB1接口的demo。
但当希望使用USB2接口外接U盘时:
由于CHRV3库中直接使用了USB1接口的USB主机函数名,且CHRV3库不开源,用户无法直接修改库中调用的函数名,故建议是尽量使用USB1接口来外接U盘。
如果一定需要USB2接口也能配置上文件系统,可以自行移植FATFS库来实现。
若一定需要USB2接口来对接U盘,且USB1接口不运行USB主机功能,那么可以
①用户可见的代码中,将使用原USB1的寄存器改为USB2的相关寄存器。可以比对“HostEnum”和“HostU2Enum”,查看需要修改的寄存器名。
②重新定义下方四个USB接口函数使其指向USB2接口,如此来实现“USB2接口调用CHRV3库”的功能。
但USB1接口不可再同时使用EVT中的驱动函数,运行USB主机功能了。
uint8_t HostCtrlTransfer(uint8_t *DataBuf, uint8_t *RetLen) { return U2HostCtrlTransfer(DataBuf, RetLen); } uint8_t USBHostTransact(uint8_t endp_pid, uint8_t tog, uint32_t timeout) { return USB2HostTransact(endp_pid, tog, timeout); } uint8_t CtrlSetUsbConfig(uint8_t cfg) { return CtrlSetUsb2Config(cfg); } uint8_t CtrlClearEndpStall(uint8_t endp) { return CtrlClearU2EndpStall(endp); }
                    
                
                
            
        
浙公网安备 33010602011771号