imdx 发表于 2022-1-22 09:05

感觉CH32系列的USB规划得相当混乱

本帖最后由 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

WCHTech2 发表于 2022-1-23 11:49

本帖最后由 WCHTech2 于 2022-1-23 11:51 编辑

您好,感谢您提出来的建议,我们会综合考虑的。后续针对我们芯片有其他好的想法和建议也可以继续沟通。我们的usbd在设计时,在考虑用户使用习惯的前提下也做了一些优化。
首先,我们的usbd和can是可以公用的。usb和can同时使用时,访问的共享sram是有硬件仲裁机制的,usb的数据可以从零开始放,而can的过滤器放在了RAM的高字节部分,需要通过软件去管理,只要不公用同样的地址空间就行。
其次我们内置了上下拉电阻,可以通过软件开启。这样在设计时就无需在外接电阻了。

imdx 发表于 2022-1-23 14:49

WCHTech2 发表于 2022-1-23 11:49
您好,感谢您提出来的建议,我们会综合考虑的。后续针对我们芯片有其他好的想法和建议也可以继续沟通。我们 ...

注:USBD和CAN控制器在设计中共享了一个专用的512字节 SRAM区域用于数据的发送和接收,因此
同时使用 USBD和CAN 功能时,需要合理分配此共享区域,防止出现数据冲突。
也就是512字节数据USBD和CAN公用?512字节公用少了点,本来地址空间是1024字节的,像STM32F072那样配置成1024字节,后面256字节给CAN来用就比较充裕了。即使两路CAN也能保证USBD有512字节可用。
内置上拉在EXTEN_CTR这个单独的寄存器里,看到了,这个好评。

zljiu 发表于 2022-2-6 19:37

熟悉了就能好点了

tfqi 发表于 2022-2-6 19:50

估计后续会有好转的

nawu 发表于 2022-2-6 20:07

是不是还没有自成系统啊

gwsan 发表于 2022-2-6 20:21

可能开始就没有一个太好的定位

aoyi 发表于 2022-2-6 20:37

不知道以后会不会有所改善

天意无罪 发表于 2022-2-7 16:49

楼主看来对CH32的USB应用的很熟悉了啊

kjkujkj21 发表于 2022-2-9 11:50

有需要直接找技术支持就可以了。不错的。
页: [1]
查看完整版本: 感觉CH32系列的USB规划得相当混乱