OTG -- 用于FPGA的ULPI接口芯片USB3320讲解(续)

目录

1 背景

2 USB3320在FPGA上的应用


1 背景

最近使用FPGA驱动USB PHY实现高速USB功能,为了方便,购买了一块微雪的USB3300子板,发现怎么都枚举不了,使用逻辑分析仪抓取波形,和STM32F407+USB3300波形进行对比,发现STP拉高是作为激活PHY CLKOUT的电平触发信号,目前STP也正常拉高了,就是不能输出时钟。

突然查看手册,发现USB3300的IO电压是3.3V的,输入电压最小为2.0V,也就是说我的FPGA电压是1.8V,都没达到USB3300的IO电压阈值。这就很尴尬了,只有重新选择其他芯片。

通过网上对比资料,最终选定了如下几款型号:

  • USB3318
  • USB3320
  • CH132B

2 USB3320在FPGA上的应用

对本人来说,更加愿意支持国产芯片CH132B,但是通过很多渠道,都不能购买到散片(只能去官方申请样品),网上只能买到CH132H,显然是不满足的。

接下来就是对比USB3318和USB3320这两款芯片了,感觉这两款芯片功能基本一致,通过进一步对比,发现USB3318市面上没有多少货了,最终选择了USB3320这款芯片。

接下来就是查看USB3320这款芯片的手册了,从Features可以看出,USB3320支持1.8V-3.3V的IO电压范围。

根据下图绘制原理图,这里使用的是ULPI OUTPUT CLOCK模式,从下图可以看出,如果使用1.8V的VDDIO,那么pin32需要接1.8V电压(自己则是在某宝上购买的现成的USB3320测试板)。

此处有个易错项,USB3320可通过REFSEL[2:0]引脚选择外部晶振输入频率,如果使用52M晶振,REFSEL[2:0]引脚接地即可,如果使用其他频率的晶振,则需要向REFSEL[2:0]引脚输入不同的电平,这里的电平是VDDIO电平

到这里就基本结束了,购买的板子,调试也很顺利,基本上一步到位就成功了。

如果是自己绘制板子,需要特别注意VDDIO的电压,不然轻者可能造成不能达到芯片IO电压阈值,重则导致IO引脚烧坏。

当然如果必须使用USB3300芯片和FPGA进行通信,也是可以实现的,需要在USB3300和FPGA中间增加一个双电源总线收发芯片,例如SN74LVC8T245、SN74LVC16244A等(根据实际情况选择其他型号),主要作用是进行电压的匹配,也就是把FPGA输出的1.8V电压经过电源总线收发芯片转换成3.3V电压输出到USB3300,把USB3300输出的3.3V电压经过电源总线收发芯片转换成1.8V电压输出到FPGA。

相关推荐

  1. FPGA芯片可重构技术

    2024-07-10 21:46:04       69 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 21:46:04       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 21:46:04       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 21:46:04       45 阅读
  4. Python语言-面向对象

    2024-07-10 21:46:04       55 阅读

热门阅读

  1. 泛型

    泛型

    2024-07-10 21:46:04      20 阅读
  2. 二分查找(红绿标记法)

    2024-07-10 21:46:04       20 阅读
  3. uniapp开发踩过的坑合集( 持续更新 )

    2024-07-10 21:46:04       16 阅读
  4. 算法之工程化内容(1)—— Linux常用命令

    2024-07-10 21:46:04       20 阅读
  5. postman接口测试工具

    2024-07-10 21:46:04       22 阅读
  6. python使用tkinter添加下载进度UI

    2024-07-10 21:46:04       23 阅读