关于STM32F1和F4在usb使用上的区别
最近在使用STM32F103系列做usb的功能,由于以前一直使用的是F4系列,所以电路也直接照搬了,但是用STM32Cube生成代码之后发现,usb根本驱动不起来,插上电脑一点反应都没有,而同样的配置在F4上一点问题都没有,真是奇了怪了,翻了大量网上的帖子,都没什么收获,后来用示波器量了一下D+的电压,发现一直是0,而F4的板子正常的。可能问题就出在这里。
查了一些关于USB的资料,说是D+拉高的时候表示总线激活,系统会开始枚举设备,如果低电平的话就表示没有设备插入。一开始还以为是软件问题,折腾了半天,最后参考了一下别人的图,发现STM32F1系列的USB接口处,D+都接了一个1.5k的上拉电阻:
难道是这个的问题?于是就把这个上拉电阻加上了试试,果然好了,看来就是这里的问题,可能F1系列内部USB IP是不带上拉电阻的,而F4内部就有上拉,所以才会导致这个问题。
看来下次碰到问题还是要多看手册,多了解区别,否则容易被坑。