简介这是一份 Maxim美信MAX13487E/MAX13488E 半双工 RS-485/RS-422 收发器的官方数据手册datasheet面向硬件工程师、嵌入式开发者及工业控制领域技术人员用于选型评估、原理图设计和通信链路稳定性分析。资源共1个PDF文件压缩包大小约271KB内容涵盖器件引脚配置、功能框图、绝对最大额定值、电气特性、时序参数、典型应用电路及封装尺寸等核心章节。该系列器件支持 ±15kV ESD 保护、AutoDirection 自动方向控制与热插拔功能MAX13487E 降速版本可减少电磁干扰并实现高达500kbps的无误码传输MAX13488E 高速版本支持16Mbps速率且1/4单位负载设计允许总线上挂载128个收发器广泛适用于隔离RS-485接口、智能电表、工业电机驱动和自动化HVAC系统。读者通过该手册可快速掌握器件工作原理、关键设计参数以及 PCB 布局建议为具体项目的芯片选型与硬件调试提供直接参考。目前已有2677人学习下载是一份实用性与专业度兼备的芯片参考资料。1. 从 DataSheet 第一页读出 MAX13487EESA 的全部价值做工业网关或者分布式采集项目时你一定遇到过这个场景MCU 的 UART 要驱动一条两百米的双绞线对面挂着七八个节点总线上跑的是 RS-485。传统收发器需要一根额外 GPIO 控制收发方向发数据之前先拉高 DE发完再拉低中间还得算时序稍不留神就丢字节。MAX13487EESA 这颗芯片最值钱的地方就是把方向切换这件事从软件里拿掉了芯片自己看着数据线干活。它是一颗 5V 供电、半双工、带自动方向控制的 RS-485 收发器DataSheet 通篇读下来真正影响你能不能上量的参数其实不超过十项。这篇文章就从这份数据手册出发把选型理由、外围电路计算、示波器验证方法和实战里最常见的四个坑一次讲清楚。2. 自动方向控制才是这颗芯片的灵魂时序与替换逻辑2.1 自动收发切换的工作机制没有方向 GPIO 怎么活下来的MAX13487EESA 内部的自动方向控制本质上是盯着发送数据输入 DI 干活。当 DI 出现下降沿芯片把驱动器打开A/B 开始输出差分信号当 DI 保持在高电平超过内部设定的时间芯片判断这一帧结束了自动关闭驱动器并把总线释放给接收器。所以你写代码的时候完全不用碰 RE 和 DE 这两个引脚把它们接高电平或者干脆悬空芯片就默认工作在自动切换模式。我第一次用这颗芯片时心里其实不踏实担心它在字节间隙就把总线释放了结果导致下一个字节第一个位被吃掉。后来用示波器量了 A/B 波形才发现内部关断时间被设计成远大于一个位的宽度UART 帧里起始位、数据位、停止位之间的电平翻转是连续的芯片不会在一个字节内部误判帧结束。真正让它关断的是停止位之后持续的高电平空闲期这时候总线确实该让给接收方向了。这个机制对半双工总线来说等于少了一个软件状态机。传统做法里主站发完一帧后要等发送移位寄存器清空再拉低 DE延时几百微秒然后才敢把总线切到接收。用 MAX13487EESA 之后这些时序全部变成芯片内部行为主控只需要往 UART 里写数据发完自然就是接收态。但自动切换不是没有代价。它对 DI 上的信号质量更敏感如果 MCU 的 TX 引脚在上电瞬间有个毛刺或者缓慢爬升芯片可能误判为发送请求把总线驱动起来跟其他节点抢总线。所以数据手册里有一句话值得圈出来DI 输入在芯片内部有上拉但不等于你可以省掉 MCU 侧的推挽配置。我一般把 TX 引脚配置成推挽输出不用开漏更不用外接上拉电阻去跟内部上拉分压。还有一点是半双工共性问题总线上任何时刻只能有一个节点发送。两片 MAX13487EESA 同时发数据先发的那片不一定能压住后发的后面那个的驱动器输出的差分电压会叠加成乱七八糟的波形。自动方向控制只解决了本节点的收发切换解决不了总线仲裁这是 RS-485 的协议层问题跟芯片无关。2.2 手册里必须背下来的时序参数速率、关断时间与阈值拿到 DataSheet 不要先看特性简介先把参数表里跟时序有关的几项圈出来。MAX13487EESA 的标称数据速率是 2.5Mbps这是指芯片本身的电气能力实际走线、终端匹配和隔离器件都会压速度。我在实际项目里跑过 115200 的典型波特率距离 100 米以内完全没问题但上了 500kbps 之后长线反射就开始影响眼图了。第二项是发送器关断时间。DataSheet 里给的是从 DI 持续高电平到驱动器释放的延时这个值决定了帧间隔至少要留多宽。假设这个时间是微秒级而你用 MCU 的 DMA 连续发送两帧帧间隔只有几十微秒芯片可能根本来不及释放总线下一帧又来了这其实没问题怕的是你在代码里手动控制帧间隔间隙拉得比关断时间还长总线就变成接收态对端回包时就得重新竞争。第三项是接收器输入灵敏度。RS-485 标准规定接收器必须在 A-B 差分电压大于 200mV 时输出高电平小于 -200mV 时输出低电平中间 400mV 的窗口是逻辑不定区。MAX13487EESA 内部比较器能识别到更低的值但设计时不能依赖芯片的裕量必须按 200mV 这个最差情况来算偏置电阻。第四项是 ESD 能力。这颗芯片自带 ±15kV 的 HBM 静电防护数据手册这个参数很容易让人放松警惕。要注意 HBM 是人体模型模拟的是人手碰一下引脚不是设备外壳被雷击或者电机启动产生的浪涌。工业现场 A/B 线从外面拉进设备光靠芯片自带防护不够后面 3.3 节会单独说外部防护怎么加。我习惯把这几个参数抄在一张便签上贴在调试台边2.5Mbps 速率上限、±15kV ESD、±200mV 接收阈值、-7V 到 12V 共模范围。调试时遇到问题先看有没有突破这四个边界至少能排除一半的故障源。2.3 与 MAX485 的替换关系管脚兼容但行为不同MAX13487EESA 的管脚排列跟经典的 MAX485 完全兼容SOIC-8 封装从 1 脚到 8 脚分别是 RO、RE、DE、DI、GND、A、B、VCC。如果你现在板子上用的是普通 485 收发器把芯片直接替换成 MAX13487EESA 在电气连接上没有问题但 RE 和 DE 这两个引脚的接法必须改。普通收发器一般由 MCU 的 GPIO 分别控制 RE 和 DE替换后这两个引脚要么接 VCC 要么悬空如果还按原来的电路接 GPIO芯片仍然用内部自动逻辑GPIO 电平反而不起作用容易造成误判。替换还有一个容易被忽略的差异普通 485 收发器在发送期间始终驱动总线而 MAX13487EESA 在 DI 维持高电平一段时间后会自动释放总线。如果你的代码里有一类特殊数据比如连续发送一长串 0xFF 或者空闲填充符这些数据线上全部是高电平芯片会在帧中间就把驱动器关了。UART 发送 0xFF 时起始位会让 DI 先拉低再拉高如果后续全是 1芯片在停止位之后关断整个字节还在线上传输但因为已经过了至少 9 个位时间余下部分靠接收端采样保持也能读对。实际测试中这个情况很少出问题真正会翻车的是你把 RE 和 DE 接反了逻辑让芯片一直处于接收态那就完全不存在方向切换了。输入阻抗方面MAX13487EESA 是 1/4 单位负载标准节点输入阻抗是 12kΩ这颗芯片等效为 48kΩ理论上一条总线能挂 128 个节点。实际工程我最多挂过 60 多个从站再往上走线缆分布电容和连接器接触电阻会先顶不住。替换前记得算一下总线上所有节点并联后的等效阻抗别只盯着芯片的单位负载参数。3. 最小系统设计从引脚到电阻电容的手算清单3.1 最小电路连接8 个引脚怎么接才算对画原理图时MAX13487EESA 的八个引脚里需要你决策的其实只有五个RO 接主控 RX、DI 接主控 TX、RE 和 DE 合并接 VCC、A 和 B 外接总线。VCC 和 GND 之间放 100nF 陶瓷电容位置尽量靠近芯片这个电容负责提供驱动器瞬态开关时的高频电流电源走线再长一点就得上 10μF 电解电容兜底。RO 和 DI 这两条线是数字信号走线不超过 5cm 都没问题但注意不要跨过继电器或者电机驱动器的下方。A 和 B 是从芯片引出到端子排的信号它们才是真正的差分线。PCB 上 A/B 应该等长、靠近走最好在晶振或时钟线旁边不要并行太长差分对之间不要铺地铜避免引入寄生电容。自动方向控制的模式下RE 和 DE 接 VCC 是最省事也最不容易出错的接法。内部电路会自动处理收发切换两个引脚悬空也能靠内部上拉维持使能状态但我不建议悬空悬空引脚对干扰更敏感上电瞬间的电平不确定万一 DE 被拉低到 0 就整片芯片变成只收不发。有些项目会利用 RE 和 DE 来做硬件的收发强制切换比如在诊断模式下强制芯片只听不发。这时候 RE 和 DE 可以由同一个 GPIO 控制DE 高有效、RE 低有效两个引脚接到一个信号上正好兼容。注意这个 GPIO 上电瞬间必须是确定的电平否则总线会被意外驱动。3.2 终端电阻与偏置电阻的手算5V、120Ω 与 200mV 的三角关系双绞线的特性阻抗典型值是 120Ω所以总线两端各放一个 120Ω 终端电阻用于吸收反射波。终端电阻放在拓扑的两个物理端点不是放在主控板和控制板上如果中间还有分支节点分支线的长度必须尽量短否则反射照样存在。终端电阻放完之后才算真正的难点偏置电阻。RS-485 总线在空闲时没有任何节点驱动所有驱动器都处于高阻态此时 A-B 之间的差分电压完全由偏置网络决定。RS-485 标准要求接收端至少能识别 200mV 的差分信号所以空闲差分电压必须设计在 200mV 以上实际工程我一般取 300mV 以上留裕量。计算偏置电阻时最常用的接法是把一个电阻从 VCC 拉到 A一个电阻从 B 拉到 GND。假设 VCC5V两个偏置电阻都取 4.7kΩ终端电阻 120Ω 跨在 A-B 之间。这时回路电流等于 5V 除以 4.7k1204.7k约 0.525mA120Ω 上的压降只有 63mV远不够 200mV 的阈值。很多板子就这么用着看起来没事是因为接收器实际灵敏度比标准好但环境温度升高、线缆变长、节点增多之后63mV 的空闲电平很容易被共模噪声淹没出现随机乱码。想让空闲差分电压达标偏置电阻要降到 1kΩ 以下才算稳。取 680Ω回路电流等于 5 除以 680120680约 3.38mA120Ω 上压降约 405mV完全满足 200mV 要求。代价是这两个 680Ω 电阻在空闲时浪费了约 17mW 功耗而且它们对总线负载的贡献是 1.36kΩ 的并联阻抗约占 0.09 个单位负载挂在 128 个节点里完全可接受。偏置电阻只加在主站这一端就够了从站不需要每个节点都加。有些设计图省事在每个节点上都放偏置电阻总线空闲时多个偏置网络并联总线上实际的差分电压会因为互相分流而下降反而坏事。主站端加一组 680Ω 偏置配合两端 120Ω 终端实测总线空闲差分电压稳定在 350-450mV这个范围是很健康的。3.3 电源去耦与 ESD手册没细写但必须补的防护很多工程师在 485 电路上没有认真对待电源主要原因是指望收发器能靠共模抑制把干扰挡在总线之外。但 MAX13487EESA 的共模输入范围是 -7V 到 12V超出这个范围芯片的行为就不受保证严重时直接损坏。我在 VCC 引脚处除了 100nF 去耦电容还会并联一个 10μF 的电解电容或钽电容。因为驱动器开启瞬间的电流变化率很大如果电源路径的退耦不足VCC 上的纹波会耦合到内部比较器参考点上导致接收阈值抖动。示波器上看到的间歇性误码根源可能不是总线而是电源。A/B 引脚外部加 TVS 管是必须的。芯片自带的 ±15kV HBM 防护针对的是人体静电对雷击浪涌、电机启停产生的感性尖峰根本没辙。我一般选双向 TVS击穿电压选 6.5V 左右正好卡在共模范围上限附近总线对地和 A 对 B 之间都要并。如果现场线缆暴露在室外还会在 TVS 前面加一对气体放电管做初级泄放再用 PTC 自恢复保险丝限流这个组合成本不高但能把设备损坏率降一个数量级。隔离是另一个层面的事。如果设备之间地电位差大比如两端分别接在不同配电系统上地环流会硬生生把共模电压推出 -7V 到 12V 的范围。这时候光靠 TVS 已经不够要上隔离 RS-485 方案或者在 MAX13487EESA 前面加数字隔离器把 MCU 的地和总线侧的地隔开。选型时注意隔离器件的信号速率不能低于波特率否则会把波形斜率拖缓。4. 上电先看波形用示波器验证 RS-485 总线的四个判据4.1 空闲态判据A-B 差分电压应该稳定在哪个区间示波器接法很关键。没有差分探头时用两个普通探头分别接 A 和 B地线夹都夹在最近的 GND 上然后示波器的数学通道做 CH1 减 CH2得到的就是 A-B 差分信号。不要只量 A 对地或者 B 对地的单端波形单端波形受共模干扰影响看不出差分信号的真实状态。上电后先把总线置于空闲状态也就是总线上所有节点都在接收。这时候差分电压应当是稳定的一条直流线数值在 200mV 以上常见的是 300 到 500mV。我看到很多板子量出来只有几十毫伏这种板子在实验室单点对连时没问题拉到现场就随机出乱码因为噪声稍微大一点就把这几十毫伏盖过了。如果空闲差分电压接近 0V 或者负值说明 A/B 接反了。A 应该是相对 B 更高的电压接反之后空闲电平变成负 200mV 以下接收端把所有空闲状态都解成逻辑 0就会不停产生接收中断。这里再强调一个审查细节如果要检查的是多节点系统必须把总线上所有节点都上电再看空闲态。只测一块主板时主板的偏置电阻可能带不动一整条线但自己节点少看不出来全部节点挂上之后偏置电阻如果只在主站这一端整条总线的等效负载上升空闲差分电压会被拉低这一步能提前暴露偏置不足的问题。4.2 发送帧测量幅度、边沿和过冲怎么读让主站循环发送 0x55这个字节在 UART 帧里表现为 01010101 的交替信号最容易观察差分幅度和边沿。示波器时基放到 10μs/div观察 A-B 波形应该是一串方波幅度范围在 1.5V 到 5V 之间。RS-485 标准规定带 54Ω 负载时差分输出不小于 1.5V实测带终端电阻的总线上正常幅度在 2V 到 3V 之间如果低于 1.5V说明驱动能力不足或者总线负载太重。边沿是另一个重要检查点。示波器打开上升时间和下降时间测量在 2.5Mbps 速率下边沿应该在几十纳秒量级如果边沿明显变缓像圆弧一样爬升说明线缆电容太大或者走线过长高速信号到远端就被滤成三角波了。这时候即使接收端能解码误码率也会随温度升高而恶化。过冲和振铃是长线的常客。终端电阻匹配不当时发送波形的上升沿会出现一个明显的回冲台阶这是反射波叠加的结果。轻微的过冲在 115200 波特率下不影响通信但如果过冲幅度超过 5V就可能超出芯片共模范围长期运行有损坏风险。示波器的光标可以量过冲峰值超过 VCC0.5V 就要检查终端电阻和拓扑。这里我会把示波器导出的波形数据喂给一个小脚本做快速判断不能总靠眼睛看。脚本按波特率把波形切成一个一个位窗口统计每个位窗口内差分电压是否稳定超过 200mV 阈值。import csv def load_wave_csv(path): 读取示波器导出的 CSV通用格式时间,A电压,B电压 t, a, b [], [], [] with open(path) as f: for row in csv.reader(f): if len(row) 3: continue try: t.append(float(row[0])) a.append(float(row[1])) b.append(float(row[2])) except ValueError: continue return t, a, b def check_bit_validity(t, va, vb, baud, threshold0.2): 把连续波形按位切割检查每个位窗口差分电压是否达标 bit_time 1.0 / baud ok_bits 0 bad_bits 0 idx 0 while idx len(t): end_time t[idx] bit_time window [] while idx len(t) and t[idx] end_time: window.append(va[idx] - vb[idx]) idx 1 if len(window) 4: continue # 取中位数避开边沿尖峰比平均值更稳 mid sorted(window)[len(window) // 2] if abs(mid) threshold: ok_bits 1 else: bad_bits 1 return ok_bits, bad_bits脚本里的 threshold 取 0.2V 对应 RS-485 标准阈值baud 按实际波特率传进去9600 波特率时每一位窗口约为 104μs示波器采样率至少 10Msa/s 才能保证一个窗口内有足够多的点。脚本的统计结果是如果 bad_bits 超过总位数的 5%说明波形余量不足需要检查偏置电阻和终端匹配。用中位数而不是平均值是因为差分波形在边沿附近会有快速翻转平均值会被边沿拉低中位数能够还原每位中间的稳定电平。4.3 多节点挂载单位负载与 128 个节点的边界测试单节点波形正确只是第一步多节点组网才是 RS-485 真实战场。单位负载是 RS-485 的负载单位标准定义一单位负载是 12kΩ 输入阻抗MAX13487EESA 是 1/4 单位负载输入阻抗约 48kΩ理论挂载数从 32 扩展到 128。这个数字是理论值真实布线上还要把线缆分布电容和节点间连接器的接触电阻算进去。组网测试时我习惯一个一个节点往上加每加一个节点就看一次发送波形幅度。从 10 个节点加到 60 个节点差分幅度会缓慢下降这是节点输入阻抗并联的必然结果。如果加到某个节点之后幅度突然掉一截检查这个节点的 A/B 是不是接反了或者它的保护器件电容过大。有些 TVS 管的结电容高达几百皮法挂在总线上一大堆会明显降低高速信号边沿速率。测到接近边界时刻意跑一次长时间老化测试。让主机持续向所有从站轮询 24 小时期间每隔一小时记录一次误码数和波形幅度。我见过不少板子在测试前 10 小时都正常到深夜电网电压偏高一点波形幅度掉到临界值以下就开始出现偶发通信失败。多节点项目必须看趋势而不是看单点结果。5. 排查与避坑MAX13487EESA 总线故障的常见套路5.1 现象空闲时随机收到乱码这是 RS-485 项目里最常见的故障表现为主机不发送任何数据但串口中断一直进来接收缓冲区里全是 0x00 或者 0xFF。我遇到这种问题第一反应不是查程序而是拿示波器看总线空闲差分电压。原因基本就一个空闲时 A-B 差分电压落在 200mV 的逻辑不定区里。接收器在这个区间内输出不确定可能是高也可能是低线路噪声稍微波动一下就会触发接收中断。解决方法是按 3.2 节的方法重算偏置电阻把空闲差分电压拉到 300mV 以上。还有一个容易忽略的点如果总线上有两个节点都加了偏置电阻它们的等效并联会把电压拉低检查确认全总线只有主站这一组偏置网络。5.2 现象能发不能收或能收不能发代码逻辑没问题示波器看主站 A/B 在发送时也有正常波形但对端就是收不到。或者反过来从站回数据时主机收不到。大概率是 A/B 接反。我从一个数据点就能判断主机发送时A 对地是正电平、B 对地是负电平差分波形是一正一负的交替如果量到 A 比 B 低说明这两根线在某个节点上接反了。收发两端只要有一端反接整个链路就废掉。用万用表量 A/B 对地电压是排查接反的最快方式发送空闲时 A 应该比 B 高 300mV 以上如果量出来是负的就把这一端的两根线对调。还有一种情况是 RE/DE 被外部 GPIO 强行拉低了。检查 MCU 初始化代码里有没有残留的旧逻辑把这两个引脚配置成普通 GPIO 输出了。用 MAX13487EESA 时这两个引脚应该直接接 VCC让自动方向控制接管一切。5.3 现象芯片发烫、总线短路与共模超限芯片发烫是明确告诉你硬件已经出事了。先断电用万用表二极管挡量 VCC 和 GND 之间的压降正常应该有 0.4V 左右的二极管特性如果直接导通短路芯片内部已经击穿。常见原因是共模电压超限。现场两台设备分别接在不同电源系统上地电位差几十伏总线上的共模电压远远超过 -7V 到 12V 的范围芯片内部输入结构被击穿。另一个常见原因是热插拔在系统上电状态下直接拔插总线连接器瞬间的电位不平衡也会打坏芯片。解决方法是加 TVS 管做二级防护关键项目直接上隔离模块。如果设备已经有批量生产的成本约束至少要在 A/B 线上各串一个 10Ω 电阻做限流配合 TVS 能把大部分浪涌挡在芯片外面。5.4 现象低速正常高速乱码9600 波特率跑一整天没问题一改到 115200 或者更高就频繁乱码。这类问题先不要怀疑芯片速率不够MAX13487EESA 标称 2.5Mbps115200 远没到它的上限。换到高速率后乱码八成是信号完整性问题。终端电阻没接或者只接了一端反射波在高速率下会落在每个位窗口内直接叠加出误码分支线太长也是同样的道理一个 20cm 的支线在低速时不明显高速时阻抗不连续造成的反射就占了半个位宽。解决方法是先把终端电阻补齐再看分支线能不能缩短。如果总线拓扑是手拉手菊花链中间节点的分支线要控制在 10cm 以内实在做不到可以考虑换用带限斜率的收发器来降低边沿速率。MAX13487EESA 的驱动器边沿较陡在高速长线场景反而更容易出现振铃这时候有意降低边沿速率反而能换来更高的可靠度。6. 进阶技巧用反射波形判断终端匹配不只看手册终端电阻该不该加、加多少最靠谱的验证方法不是算完就完而是现场看反射波形。方法是让主站发送一串连续方波示波器探头放在总线最远端节点上观察每个上升沿之后有没有一个回跳台阶。终端匹配良好时远端波形是干净利落的方波沿匹配不足时上升沿之后会有一个明显的平台或者反向毛刺那是发射波从末端折返回来叠加的结果。这个测试有一个小窍门把示波器时基拉到每个位宽的四分之一左右比如 115200 波特率下位宽约 8.7μs时基放在 2μs/div这样能看清反射台阶的位置。反射台阶距离上升沿的时间差约等于信号从测试点到反射点往返的时间双绞线中信号传播速度大约 0.6 倍光速也就是 200m/μs量出 1μs 的回波延时就能大概算出反射点距离测试点 100 米。这个办法在现场帮助我快速定位过节点数量过多的位置或者断裂的终端电阻端。再提一个很多人忽略的参数接收器输出的上升时间对系统时序的影响。MAX13487EESA 的 RO 脚是数字输出它接的是 MCU 的 RX 引脚中间如果串了磁珠或者长走线信号的过冲振铃会直接影响 UART 采样。我习惯在 RO 串一个 1kΩ 电阻靠近 MCU 侧再对地放一个小电容滤掉晶振耦合过来的高频毛刺。这个组合对信号质量的影响微乎其微但能省掉不少调试时间。手册里的参数是芯片的边界不是系统的边界。MAX13487EESA 确实把自动方向控制做到了足够好用但如果你不把终端电阻、偏置网络和共模防护当成系统的一部分来设计再强的芯片也扛不住现场的恶劣条件。我做过的项目里凡是按这套流程走的基本都能在一次改板之内把通信稳下来凡是上来就相信芯片自带方向控制能解决一切的都被总线上的反射和共模问题折磨过好几轮。自动方向控制省的是你的代码不是你的电路基本功。希望这篇笔记能帮你少走一次弯路也希望你的总线一次点亮。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?