本帖最后由 imdx 于 2022-1-22 09:06 编辑
CH32的USB外设有两种,一种是沁恒私有的IP,文档里叫做USBHD,另外一种是STM32上的那种,叫做USBD。 这个USBD来自于STM32F103,设计的并不好,最大问题是和CAN公用512B SRAM导致无法同时使用,ST自己在14年推出的STM32F072已经改进,缓存增加到1024B,最后面256B可以分配给CAN,USBD和CAN也可以共存。 WCH完全没有必要照搬STM32F103的这个USBD,全部用USBHD这个IP,或者如果要照搬那就照搬STM32F072那个更完善的USBD。 对于带两个USB IP的CH32F103,CH32V203 - 兼容STM32的USBD,管脚为PA11=DM,PA12=DP
- 另外一个USBHD是映射到PB6=DM,PB7=DP
WCHISPTool使用的是USBHD这个接口,这就带来一个问题,绝大多数兼容STM32芯片管脚排列的USB接口都在PA11和PA12上,导致很多现成的USB应用无法使用USB来完成固件升级。
其实完全可以和CH32V103一样,只保留一个USBHD,把管脚放到PA11和PA12。本身USBHD这个IP比USBD要更完善,这样做更合理一些。
总结一下就是:
1)USBD这个IP设计并不好,尤其是和CAN互斥问题,不要重复ST在14年就解决了的问题
2)不管是哪个IP,USB接口要从PA11和PA12两个管脚引出,兼容性才好
3)即使要同时内置USBD和USBHD,建议增加一个管脚映射,将USBHD的管脚映射到PA11和PA12,ISP工具始终使用PA11和PA12
|