USB转RS485串口电路设计

本文介绍USB转485电路设计要点,包括如何利用USB转串口芯片的TNOW引脚控制485电平转换,解决串口误码问题,以及不同场景下的电路设计,如使用GPIO控制485转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

USB转串口芯片的串口信号一般为 TTL/CMOS电平,在实现半双工 RS485 串口时需要外接485电平转换芯片,设计中需要有信号来控制 485 转接芯片的发送和接收使能端,建议选择自带485控制引脚的转接芯片(如 CH340/CH342 系列芯片的 TNOW 引脚),该引脚默认为低电平,当串口处于发送状态时会自动拉高处于有效状态,发送完成再恢复低电平。同理,可以延伸到其他应用场景,如单片机串口转485电路设计中可以使用GPIO口来控制485转接芯片的发送和接收使能。

以MAX485为例:

1. DE为发送使能,RE为接收使能,DI为TTL/CMOS串口发送,RO为TTL/CMOS串口接收。

2. TNOW控制信号脚同时连接DE和RE;串口发送状态下,TNOW输出高电平,打开DE接收使能;串口不发送时,TNOW输出低电平,默认打开RE接收使能;

常见问题Q&A

Q:串口端经常收到0x00误码值?

A:接收使能状态下,一般485的A和B信号端为高阻态,发送和接收切换过程中A和B信号保持,没有恢复到空闲态。导致RO端采样出错。此时,在A端接一个上拉电阻,B端接一个下拉电阻,阻值需根据手册和实际应用计算。

Q:AB端是否需要并联终端匹配电阻?

A:根据手册来定,目前很多芯片内置120欧匹配电阻,并不是必须选项。

Q:级联设备数量怎么计算?

A:需根据手册标注的接收输入阻抗来确定,一般也会直接标注出允许的最大收发器数量。

应用电路1

下图为使用自带TNOW引脚485控制信号的USB 转双串口芯片 CH342F 设计的双路RS485串口电路:

注:CH342F的DTR引脚在接下拉电阻时会切换为TNOW引脚,上图中所用为4.7K。

应用电路2

若选用型号没有485控制信号,只使用 TXD 和 RXD 两根信号线来完成 485 电路转换的需求也是十分普遍的。下面为原理图:

实现原理:将RE一直置0,使能接收使能(RE 与 DE 直接短接也可以),将TXD反向后连接发送使能端 DE。TXD 输出为高电平时,连接的485芯片的发送使能无效,总线输出为空闲(高电平),TXD 输出低电平时,发送使能有效。相较于应用1,因有三极管反向电路,信号输出控制会有延迟,高波特率通讯下不建议选用。

以上转换电路与设计原理在485转换电路中使用频率较高,用户可根据需要灵活选用。

看了小马哥的多功能调试工具真是羡慕啊,于是也做了个高速USBhub托了个xlink, 用stm32实现 USB串口TTL/串口232/串口485(通过跳线来实现)/NRF24L01/红外,同时支持输出一路PWM输出。反正也用不到Altra的调试,于是就将另两路USB接了两个USB座,方便接U盘。测试了下USB485,(因为485需要控制换向端),发现效果比想象的要好啊!与其说这是个调试工具,到不如说是个简易的stm32的开发板,接两条杜邦线就可以来调试啦。 USB485调试截图: 调试日志: 2012-10-25: 实现USB obLink调试以及USB串口。这基本上都是以前就调好过了的。 但是调试的时候发现oblink在下载的时候,当在Keil中设置速度最大时不稳定,经常下载失败,但是之前做的单独的oblink就没这问题,怀疑是GL850A的问题,看了下手册才知道其REF管脚要接680欧的电阻,而自己想当然的焊了1.5K的电阻,换后问题解决。 2012-10-26: 开始调试NRF24L01,比较顺利,照着例程很容易就给移植过来了,但是突然发现,发送和接收函数中,发送的就是固定的32字节,而接收的也是固定的32字节,于是就想修改成适合程序的风格:send(u8 *buf,u16 len),接收至少要知道接收到了几个字符!于是看了下NRF24L01的寄存器,刚好有这个寄存器,读取便可知道里面有多少数据,于是跟着修改了发送的函数,将发送的数据个数修改成任意设置的,结果发现接收那块死活接收不到数据了,于是增加了发送的个数到32字节,终于收到数据了。于是设置了下接收FIFO的大小,结果发现,发送的数据只有跟接收FIFO一样的时候,接收端才能收到数据!真是变态啊!至少要有个超时吧??于是改了就32字节了,发送的数据如果超过32字节,就拆包发,如果少于32字节,就加个0做结尾符,多发几个无用的数据,接收端就像处理字符串那样去处理吧。 2012-10-28: 开始调红外。当初做原理的时候,没想那么多,直接扯了条线接到一个IO上去了,结果看了下原子的程序,用的是定时器的输入捕获来做的,于是想改成收到中断后开定时器的方式来解决问题。刚好找到了他之前的一个版本的程序,修改了下居然OK了。而且效果也很不错,用家里的DVD遥控器试了下,也没问题。OK,暂告一段落。
USB隔离协议换器主要应用于严酷的工业场合现场调试测试,是现场工程师的调试神器;也可用于研发实验室,成为研发员的手中的必备法宝。 它可实现以下几个主要功能: 1. USB HUB功能:换出3个USB2.0 Type-A接口,每通道1.5A限流,可带3个移动硬盘同时工作(需要外部电源) 2. USB自供电不足报警:当红灯亮起时,说明USB自供电不足,电源管理处于限流工作状态,需要接入外部电源。 3. USBRS485/232/TTL 隔离换器,隔离电压1500VAC。 USB隔离协议换器系统设计框图: USB隔离协议换器设计原理说明: 外部电源输入模块采用MPS公司的MP1584芯片作为稳压电源方案 USB输入模块采用德州仪器公司的TPS2553作为电源管理方案,使用SS14肖特基二极管将输入稳压电源串联起来,在使 用外部电源时,USB输入电源将降少电流输出。 USB主控采用台湾汤铭电子的FE1.1芯片作为USB HUB方案,USB信号线保护采用德州仪器公司的TPD4E001TVS阵列 USB输出模块1/2/3使用1.5A自恢复保险丝作为电源限流方案 USB串口模块采用江苏沁恒股份有限公司的CH340B作为USB串口方案 TTL隔离TTL采用德州仪器公司的ISO7321电容式隔离芯片 TTL隔离RS232采用金升阳公司的F505S-1WR2作为隔离电源方案,使用德州仪器公司的ISO7321电容式隔离芯片+MAX3232芯片作为隔离RS232设计方案 TTL隔离RS485采用金升阳公司的TD301D485H-A作为隔离RS485换方案 USB隔离协议换器电路PCB板截图:
ttk.treeview是Python中的一个GUI控件,用于在GUI应用程序中显示树形数据结构。以下是ttk.treeview的基本界面设计步骤: 1. 导入必要的模块和库,如tkinter和ttk。 2. 创建一个树形结构数据,并将其换为ttk.treeview格式。 3. 创建一个ttk.treeview控件。 4. 添加列标题。 5. 将数据添加到ttk.treeview中。 6. 设计ttk.treeview的样式和外观,如背景颜色、字体、行高等。 7. 为ttk.treeview添加事件处理程序,如鼠标单击、双击、右击等事件。 以下是一个简单的例子,展示了如何使用ttk.treeview来显示一个树形结构数据: ```python import tkinter as tk from tkinter import ttk def main(): # 创建树形结构数据 data = { 'root': { 'node1': { 'leaf1': None, 'leaf2': None }, 'node2': { 'leaf3': None, 'leaf4': None } } } # 创建ttk.treeview控件 root = tk.Tk() tree = ttk.Treeview(root) # 添加列标题 tree['columns'] = ('count') tree.heading('#0', text='Name', anchor='w') tree.column('#0', anchor='w') tree.heading('count', text='Count') tree.column('count', anchor='center') # 将数据添加到ttk.treeview中 add_node(tree, '', data['root']) # 设置ttk.treeview的样式和外观 style = ttk.Style() style.configure('Treeview', rowheight=25) # 显示ttk.treeview控件 tree.pack() root.mainloop() def add_node(tree, parent, node): # 添加当前节点 if node is not None: tree.insert(parent, 'end', text=node, values=(len(node))) # 添加当前节点的子节点 for key, value in node.items(): add_node(tree, node, value) if __name__ == '__main__': main() ``` 这个例子中,我们首先创建了一个树形结构数据,并将其换为ttk.treeview格式。然后,我们创建了一个ttk.treeview控件,并添加了列标题。接着,我们将数据添加到ttk.treeview中,并设置了ttk.treeview的样式和外观。最后,我们显示了ttk.treeview控件。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PC技术小能手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值