关于USB通信的疑问

疑问1:
以前接触过一款叫CH340的芯片,它的作用是将UART转为USB信号,是不是可以理解为和485、232芯片是同一类型的,而我们实际编程还是UART编程?(CH340的芯片作用大概类似于里面有一个控制器,从UART接收到数据,然后转成USB虚拟串口信号发送出,可以这样理解吗?)

疑问2:
课程上讲的虚拟串口是USB device 控制器驱动层更上的软件层面,那么是不是还可以虚拟其他通信端口,只要实现了对应的上层协议?

疑问3:
从硬件上就能确认低速、全速,加上握手信号就能确认高速,在不同的工作速率下传输bps都是有约定好的,为什么还需要传输同步信号(对方通过同步信号从而算出传输的速率)?

答1:访问过程是这样的:APP->CH340驱动程序->CH340->UART,在APP的角度,它访问的是串口。为何能能像访问串口一样访问CH340?就是CH340的固件把它模拟成了一个串口。

答2:课程里使用STM32H5模拟USB串口,就相当于使用STM32H5做了一个CH340这样的芯片。当然可以模拟其他设备,比如鼠标、硬盘。在课程里,USB协议栈分为3层:
image
只要使用其他class layer,就可模拟其他设备

答3:好问题,同步信号的主要作用是“提醒“”:“”准备开始传输了”