单片机USB2.0高速接口实现方案

单片机USB2.0高速接口实现方案

USB接口小巧便携,支持热插拔,传输可靠,速度快,其广泛应用于计算机周边,工业设备等等。目前集成USB1.1全速接口MCU大多数将收发器一并设计了进去,但到了USB2.0接口,因为传输速度提升到了480Mbps,可能是因为设计难度,或者IP授权成本的增加,大部分MCU厂家选择了分立方案,MCU只集成USB2.0控制器,通过外加USB2.0 PHY(比如USB3320,USB3300,CH132)收发器芯片来实现USB2.0通讯接口,比如典型产品,比如ST的32F407,32F405等等,也有一些USB接口专注度比较高的厂家将USB2.0 PHY内置,比如Cypress的68013,沁恒的CH32V307等。USB PHY内置外置区别到底有多大,刚好拿手上的几个芯片测试下,集成USB2.0控制器(不含收发器)MCU 32F407,32H743,集成USB2.0接口(含收发器和控制器)CH32V307,USB2.0收发器USB3320,CH132。

主控说明

主控(32F407,32H743,CH32V307)基本参数对比如下表:

MCU型号 主频 Flash(KB) RAM(KB) USB 全速 12Mbps USB高速 480Mbps 供电电压
32F407 168MHz 1024 192 OTG USB控制 1.8-3.6V
32H743 480MHz 1024 1024 OTG USB控制 1.7-3.6V
CH32V307 144MHz 256 64 OTG USB控制+内置收发器 2.4-3.6V

硬件说明

使用外置USB PHY连接示意图如下:
单片机USB2.0高速接口实现方案_第1张图片
如上图,MCU通过ULPI接口与高速USB PHY连接。ULPI为标准USB PHY接口, DATA0-7为双向数据线;CLK为时钟信号输出引脚;NXT为Next信号输出引脚,STP停止信号输入。实现外置PHY实现一个USB2.0接口连线还是蛮多的,足足12根。

假如芯片把USB2.0高速PHY集成了,电路简单了很多,2根信号线直连即可。

单片机USB2.0高速接口实现方案_第2张图片

速度测试

首先使用32F407 + USB3320测试,使用官方USB2.0库函数,在MSC例程上进行修改,测试USB2.0批量传输速度,写速度(从PC到MCU)16.6M Byte/s,读速度(MCU到PC)16.2M Byte/s。
将USB3320板子上USB3320直接替换为CH132 ,根据手册两者硬件兼容,可以直接替换,软件不用修改,直接测试,写速度16.6M Byte/s,读速度16.2M Byte/s。和USB3320速度差不多。
将主控32F407改用性能更高的32H743测试+3320测试,写速度21.8M Byte/s,读速度24.1M Byte/s,速度差别不大。虽然32H743性能比407 强不少,主频提升3倍,但是USB传输提升并不大,速度仅快了25%左右,这样看使用外置PHY且使用USB2.0库函数操作的速度瓶颈大致就在这里了,而且这瓶颈看起来和MCU的性能关系不大,当然看网上大神测试,假如改用寄存器操作的话,读速度可以提升至39.1M Byte/s。
继续使用CH32V307 采用相同的方式测试,测试例程为官方EVT USB批量传输设备例程,读速度45M Byte/s、写速度53M Byte/s,都有了较大幅度的提升。看来不是简单将ULPI PHY内置、省掉12根信号线这么简单,估计沁恒也对MCU内部总线架构做了改进,难怪沁恒USB3.0芯片文档中提到多层DMA架构和RISC-V内核的中断响应速度问题,听说这个自研的PHY最远还支持10米距离通讯。

整理测试接口速度如下,供参考。
USB2.0高速批量传输速度测试,上传数据由MCU到计算机,下传数据计算机到MCU

USB2.0高速方案 下传速度 上传速度
STM32F407+USB3320(USB2.0 PHY) 16.6M Byte/s 16.2M Byte/s
STM32F407+CH132(USB2.0 PHY) 16.6M Byte/s 16.2M Byte/s
CH32V307(内高速PHY) 53M Byte/s 44M Byte/s

你可能感兴趣的:(硬件工程,单片机)