« 上一篇下一篇 »

STM32&USB带载能力问题

一般情况下,使用USB 2.0全速设备,DP脚必须上拉到VCC。最近工作上有涉及到USB带载能力的问题,DP脚如果接2.7K电阻上拉至3.3V,则使用5m长的USB线可以和笔记本电脑正常通讯,如果使用10m长的USB线,电脑则无法正确识别USB设备,而此时如果将上拉电压改为5.0V,则10m长USB线通讯也是正常的。

除此之外,STM32072系列的MCU,其USB外设是提供了内部上拉功能的,今天试了下,如果使用它的内部上拉功能(在代码里面配置),断开外部上拉,10m线的通讯也是正常的,可以说STM32072系列的USB外设是集成了阻抗匹配功能的,不需要再去加外围电路。

另外还有一个问题,就是在使用外部上拉时,如果设备重启,则电脑无法识别到USB设备,必须重新插拨一次方能正常识别,对于这点的分析是USB的上电快于MCU的上电,从而导致电脑无法与USB通讯,于是不能正常枚举,重新插拨一次就好了。(这个分析没有验证过,只是一个想法哈)。

还有一点就是,不管是5m长的线还是10m长的线,如果是接台式电脑,不管是接主机后面还是接前面,都不能正常识别,这估计是我现在用的台式电脑太老旧了,硬件性能跟不上,但是使用笔记本电脑就可以了。


关于MCU的一些外设,像是否有带内部上拉这种功能的介绍,要去data sheet的电气特征章节部分查找,不要只会一味的看主要的功能介绍。

 

再次更新:

  还是上拉的问题。前面说的,DP引脚接2.7K电阻上拉至3.3V,这时候会存在带载能力不足的问题,但是这两天发现,不仅如此,还会导致MCU不能正常初始化USB,程序一直卡在USB初始化代码中,而且这个问题不是必现的,目前看到的现象是,仪器上电后放置个把小时,经过热机后,再重新开关机,就很容易出现这种现象。当我去掉外部上拉,直接使用内部上拉时,该问题就没有了,而且之前有款仪器的USB的DP脚是上拉至5V的,从未出现过这种情况,所以根据这个就可以肯定问题原因是上拉电压不够。这个问题花了两天时间才找到原因,擦。

  因此,以后使用全速USB设备时,如果DP脚接外部电路上拉,则必须上拉至 5V