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);
}

 

posted @ 2025-05-10 14:03  JayWell  阅读(124)  评论(0)    收藏  举报