微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > 硬件电路设计讨论 > stm32的usb有啥需要注意的地方...

stm32的usb有啥需要注意的地方...

时间:12-13 整理:3721RD 点击:
邪门了...
stm32的usb老早以前就搞定了...
这次新做的一块板子怎么都搞不定....
先说现象,现象就是usb插上之后无反应,d+/d-用示波器从上电开始没看到任何信号...
但stm32是运行正常的,程序跑的好好的,外部晶振工作正常,内部工作频率用程序输出
是72Mhz,usb分频1.5倍,一切都正常。stm32的ic我拆了焊焊了拆,前后换上去3片,结
果都一样。然后把一模一样的程序烧进最小系统开发板,开发板就是好的。然后把我板
子上的stm32和开发板的stm32都吹下来互换,结果开发板继续ok,我的板子继续不
work...
每次焊接都用显微镜一个个引脚看过去,确保焊接无问题。D+/D-到ic引脚的连通性,对
地对vcc的电阻,电容,电感都测了无数遍了,和开发板交叉对比也没发现任何问题...
我还割断了重新飞一对线过去...
stm32本身的外围电路也简单的很,就是一圈去耦电容1个磁珠到VDDA再加一两个10uf的
电容的典型设计。这个设计和pcb图我都沿用了十几次了...这次唯一的变化也就是把去
耦电容从0603换成0402,其他啥都没换...
关键是,stm32的usb我以前搞没遇到过任何麻烦...都是一次搞定的...
这次是怎么了...折腾了2天了快没招了....

1)usb full speed,D+要1k5上拉。
2)D+ D-要串22R电阻
3)usb和can不能同时使用。

等解决了一定到版上说一下是啥问题...

目测是1k5电阻问题。

列一下我最近几个月的各种弱智问题和解决办法, 虚焊/粘连之类就不提了
看看能不能帮上点忙...
1. stm32f030, 硬件SPI不工作
原因: stm32f10x的驱动移植到stm32f0xx后需要加一行:
SPI_RxFIFOThresholdConfig(SPI1, SPI_RxFIFOThreshold_QF);
2. stm32f030, 硬件SPI读SD卡没反应
原因: 未将连SD CS脚的GPIO设为输出
3. stm32f103上用开漏GPIO做软件i2c, 必须手动切换方向, stm32f0xx不需要.
原因: f103的开漏GPIO输出时不能使用内置上拉, 需要外加. stm32f0xx则可以独立设置内置上拉.
4. 不小心把stm32f030的PA13/PA14设为输出了, SWD无法连接.
解决办法: 用镊子短路RESET脚的旁路电容就可以了...
5. stm32f103, PB3/PB4没反应
原因: 需要加一行GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
6. 某OP07C+MOSFET的恒流源, 小电流正常, 150mA左右开始电流偏小
原因: OP07C +5V供电时高电平输出只有4.2V左右, MOS管我买的是IRLR024结果JLC发的是IRFR024, 栅极电压不够, 导通不足. 把OP07C的VCC飞线连到+10V上, 正常.
7. 串口数据帧乱码
原因: 结构体成员对齐
8. stm32f051, HSE不工作
原因: 晶振负载电容不小心焊成了0.1u了, 换成22p后正常
9. stm32f100, 485发送总缺最后两字节
原因: USART发送程序里判断的是USART_FLAG_TXE, 最后一字节移入DR寄存器后就返回了, 此时倒数第二字节还没发送, 然后485的方向就被切回接收了.
在USART发送程序最后, 切485方向之前再加一行    
while(USART_GetFlagStatus(USARTn, USART_FLAG_TC) == RESET);
就正常了.
10. 浮点数显示不正常
原因: 没加相关函数原型, 没有原型时浮点参数会被当作整型处理. 所以make时处理掉所有warning绝对是好习惯.

刚再那块重新焊了一个最小系统。效果还是一样的....
D+ 1.5K上拉我是知道的,但我以前的方案里面也没有啊...而且开发板上也没有...所以
我就忽略了...马上拉个试试~
22R肯定串了~
软件方面无问题...

usb full speed是要上拉的。

f030的spi增加了fifo,想提高速度,其实没啥用处。要想快,必须dma

果然是这个问题....
我知道D-是LS,D+是HS,但我看得方案都是无上拉的...而且我以前也都这么搞的....
而且开发板上D+和D-对VCC都是4.7K电阻...
也许是我这个新的usb hub的锅,嗯~~

就这么解决了? 赞~

教训是不能随便相信成功经验...
我刚翻出以前搞定的板子插上去果然还是不通。
看来是以前的usb hub做了些额外的事情来提高对乱七八糟产品的支持度...
我一年前换了个hub,所以问题开始暴露了~
折腾硬件教会了我要怀疑一切...现在这个一切里面又增加了一项:成功经验...

好贴,要顶!
问题、回答和反馈都很精彩,学习了!

多看标准,usb标准就是这么规定的

现在有的芯片内置US的上拉;HUB内置DS的下拉。
此外,芯片不内置的,可以集成在数据脚的TVS阵列里,
好像是ST还是OnSemi的,USBUP,USBDP还是什么,一下想不起来了。
开发板没准是在TVS阵列上用的带上拉的芯片?
遍查手册之后就是整体超图,不能省器件,没准谁悄悄干坏事儿。

赞      

re

国内攻城师一般看器件手册的框图,然后加上自己的理解
标准?那么多页啊,看起来想睡觉
.222

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top