打印

GE32E103 USART0 插入 USB转杜邦线 就会异常

[复制链接]
935|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lvben5d|  楼主 | 2019-5-16 16:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我把USART0的 TX  RX引脚通过1个1K限流保护电阻  接到USB-AF插件的D+ D-,原来初始化如下
gpio_init(GPIOA, GPIO_MODE_AF_PP,               GPIO_OSPEED_50MHZ, GPIO_PIN_9);
gpio_init(GPIOA, GPIO_MODE_IN_FLOATING,    GPIO_OSPEED_50MHZ, GPIO_PIN_10);
USB插件悬空的时候,串口不会无缘无故进入接收中断。
当我将USB转4P杜邦线插头插入母座,就发现会USART0会不断进入中断,并把接收字符弄为0。
如果USB转4P杜邦线 外接固定电平(比如普通的USB转TTL工具的RX TX),则不会发生上述情况。
一直用这种初始化好多年,现在发现还是有不妥的地方,比如串口连接的对象不在咋办? 细节还是决定成败。
改为:gpio_init(GPIOA, GPIO_MODE_AF_PP,       GPIO_OSPEED_50MHZ, GPIO_PIN_9);
    gpio_init(GPIOA, GPIO_MODE_IPU,         GPIO_OSPEED_50MHZ, GPIO_PIN_10);     确定即便没有外部设备连接下,也可以内部弱拉高,就可以避免该问题。

使用特权

评论回复
沙发
aoyi| | 2019-5-23 08:57 | 只看该作者
会不会是产生了干扰啊

使用特权

评论回复
板凳
drer| | 2019-5-23 09:29 | 只看该作者
用屏蔽线试试看

使用特权

评论回复
地板
lvben5d|  楼主 | 2019-5-23 13:18 | 只看该作者
aoyi 发表于 2019-5-23 08:57
会不会是产生了干扰啊

空的USB转杜邦线 淘宝5元一条的那种 不带任何芯片。 仅仅是把USB的 5V D+ D- GND延伸到外面4个杜邦插头而已、我测试过好几条,都这样,我还以为是我接上去后 短路 把RX一直拉低了 实际看电平是低了,但是这个硬件线完好没短路,后面接了USB转TTL工具通信正常,要是MCU的RX被硬件原因强制拉低  后面也就不可能正常了。    PS: 所以我把串口接收引脚 设置为 内部电阻 弱上拉  IPU   就解决了。

使用特权

评论回复
5
aoyi| | 2019-5-24 08:16 | 只看该作者
lvben5d 发表于 2019-5-23 13:18
空的USB转杜邦线 淘宝5元一条的那种 不带任何芯片。 仅仅是把USB的 5V D+ D- GND延伸到外面4个杜邦插头而 ...

哦哦 恭喜楼主解决问题  顺便帮我解惑

使用特权

评论回复
6
lvben5d|  楼主 | 2019-5-24 13:26 | 只看该作者
aoyi 发表于 2019-5-24 08:16
哦哦 恭喜楼主解决问题  顺便帮我解惑

请问你的是啥应用 场景? 好奇  可以发帖大家一起分享下, 我们估计大多数应用都不是热插TTL的,基本都是已经跟设备对接好了上电的,我只是刚好遇到我的TTL是热插的。 加了2个1K限流电阻保护。

使用特权

评论回复
7
aoyi| | 2019-5-27 09:08 | 只看该作者
lvben5d 发表于 2019-5-24 13:26
请问你的是啥应用 场景? 好奇  可以发帖大家一起分享下, 我们估计大多数应用都不是热插TTL的,基本都是 ...

那么请教一个问题 怎么判定是不是热插的呢

使用特权

评论回复
8
lvben5d|  楼主 | 2019-5-27 16:19 | 只看该作者
本帖最后由 lvben5d 于 2019-6-25 13:55 编辑
aoyi 发表于 2019-5-27 09:08
那么请教一个问题 怎么判定是不是热插的呢

百度 热插,其实就是带电插入。 USB大部分都是热插应用哈。英文为 hot plug .   TTL本身没说支持热插,因为插入的时候,不知道入了,只有收到包才知道,而USB 有个ID引脚可以告知主机,有东西插入了,所以是真正意义有热插的能力。且IO口不会坏。 其实USB公插头片簧结构,你会看到5V电源在插入的时候先于信号线D+ D-接触铜片。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

95

主题

746

帖子

12

粉丝