器MAX3088選型與故障安全設(shè)計(jì)指南)
1. 為什么跑高波特率的RS-485總線上MAX3088這類高速收發(fā)器才是正解先說(shuō)個(gè)我真實(shí)遇到的場(chǎng)景。有次在某自動(dòng)化產(chǎn)線的數(shù)據(jù)采集項(xiàng)目里現(xiàn)場(chǎng)要把一批傳感器數(shù)據(jù)以8Mbps的波特率送到主控走RS-485總線距離大概80米。當(dāng)時(shí)圖省事直接沿用了之前9600bps項(xiàng)目里常用的MAX485芯片方案結(jié)果一上電就是滿地找牙的狀態(tài)——數(shù)據(jù)時(shí)好時(shí)壞偶爾整包丟失通信誤碼率高得離譜。用示波器掛在A、B線上一看信號(hào)上升沿軟綿綿的邊沿過(guò)沖和振鈴特別明顯翻轉(zhuǎn)還沒(méi)穩(wěn)定下來(lái)下一個(gè)字節(jié)又來(lái)了。這問(wèn)題本質(zhì)上不是邏輯對(duì)錯(cuò)而是物理層的邊沿速率跟不上。普通RS-485收發(fā)器像經(jīng)典的低速型號(hào)標(biāo)稱速率往往在2.5Mbps左右實(shí)際用在低波特率場(chǎng)景下當(dāng)然沒(méi)毛病但你非要它跑到8Mbps甚至更高輸出級(jí)的壓擺率slew rate就是短板。信號(hào)在高速跳變時(shí)如果壓擺率不夠上升沿會(huì)被拉長(zhǎng)直接擠占位時(shí)間窗口如果壓擺率太激進(jìn)高頻分量又會(huì)帶來(lái)過(guò)沖和振鈴。這兩件事都會(huì)讓接收端采樣點(diǎn)判斷失準(zhǔn)表現(xiàn)出來(lái)就是偶發(fā)亂碼、CRC校驗(yàn)失敗、甚至整包丟幀。1.1 收發(fā)器速率不足時(shí)信號(hào)到底經(jīng)歷了什么咱們把收發(fā)器當(dāng)成一個(gè)模擬器件來(lái)看。它從驅(qū)動(dòng)器輸入端拿到邏輯電平在輸出端要把它變成A、B兩線之間的差分電壓。這個(gè)轉(zhuǎn)換過(guò)程不是瞬時(shí)的輸出級(jí)的驅(qū)動(dòng)能力、內(nèi)部電路拓?fù)?、封裝寄生參數(shù)共同決定了一個(gè)關(guān)鍵指標(biāo)輸出信號(hào)的上升時(shí)間與下降時(shí)間。如果一個(gè)收發(fā)器的上升沿需要幾百納秒才能穩(wěn)住那它在2Mbps下可能還勉強(qiáng)能看畢竟一位的時(shí)間是500ns上升沿占比不到一半接收端湊合能采樣。但到了8Mbps一位時(shí)間只剩125ns上升沿如果還要150ns那整個(gè)位周期都在爬坡信號(hào)根本到不了穩(wěn)定的高電平閾值接收端判讀邏輯就亂了。再加上雙絞線上的分布電容和電感信號(hào)邊沿還會(huì)被進(jìn)一步拖慢形成惡性循環(huán)。所以就引入了高速收發(fā)器這個(gè)分類。它本質(zhì)上是通過(guò)提高驅(qū)動(dòng)級(jí)的壓擺率把邊沿時(shí)間壓到極短讓信號(hào)在高速率下依然保持足夠的建立時(shí)間和穩(wěn)定的差分?jǐn)[幅。MAX3088ESAT這顆料數(shù)據(jù)手冊(cè)給出的最高速率是20Mbps典型上升/下降時(shí)間設(shè)計(jì)得足夠快才能Hold住高速場(chǎng)景。那是不是所有場(chǎng)合都要上高速呢也不是。低速場(chǎng)景用高速收發(fā)器反而可能因?yàn)檫呇剡^(guò)陡在布線和阻抗不匹配的地方引入反射和振鈴EMI也更難壓。選型的第一原則永遠(yuǎn)是按照實(shí)際波特率上限留20%-30%的裕量來(lái)選別盲目上高速。1.2 20Mbps和距離的關(guān)系怎么算才不踩坑RS-485這條總線很特殊速率和距離是相互制約的。低速下比如9600bps傳輸距離能到1200米這是經(jīng)典指標(biāo)但速率往上走距離就必須降下來(lái)。公式上有個(gè)經(jīng)驗(yàn)值速率bps乘以距離米大致有個(gè)帶寬積約束比如常見(jiàn)的10Mbps對(duì)應(yīng)差不多100米級(jí)別。MAX3088的20Mbps是理想短距離下的極限值實(shí)際工程里5Mbps跑一兩百米是常態(tài)10Mbps以上就建議控制在幾十米內(nèi)。這一點(diǎn)經(jīng)常有人搞混以為用了高速收發(fā)器遠(yuǎn)距離通信的痛點(diǎn)就一并解決了。實(shí)際上你把20Mbps的收發(fā)器放到1000米線纜上信號(hào)在銅線里的損耗和反射分分鐘教你做人。高速收發(fā)器解決的是短距離跑高碼率的需求不是遠(yuǎn)距離高速的需求。如果既要遠(yuǎn)又要快常規(guī)做法是降低波特率、加中繼器或者直接換總線介質(zhì)。2. 故障安全設(shè)計(jì)到底解決了什么實(shí)際痛點(diǎn)MAX3088ESAT的第二個(gè)賣點(diǎn)是故障安全接收器。這個(gè)詞聽(tīng)起來(lái)抽象我拿實(shí)際工程里的煩心事來(lái)解釋。傳統(tǒng)RS-485收發(fā)器在正常工作狀態(tài)下發(fā)送端通過(guò)A、B兩線之間的差分電壓來(lái)傳數(shù)據(jù)邏輯1用A-B為正表示邏輯0用A-B為負(fù)表示。接收端判斷的是這個(gè)差分電壓是否超過(guò)自己的閾值。問(wèn)題來(lái)了如果總線處于空閑狀態(tài)沒(méi)有任何設(shè)備在驅(qū)動(dòng)A、B之間沒(méi)有有效差分電壓接收端的輸出就會(huì)進(jìn)入不確定區(qū)——某個(gè)二進(jìn)制狀態(tài)在1和0之間隨機(jī)抖動(dòng)。主控要是這時(shí)候在讀串口滿屏的0xFF、0x00亂碼就來(lái)了。更危險(xiǎn)的是總線短路或者從站掉線。某一段線纜被拉斷、某個(gè)節(jié)點(diǎn)撥掉插頭接收端沒(méi)有有效差分信號(hào)一樣會(huì)輸出不確定電平。工業(yè)現(xiàn)場(chǎng)這種故障太常見(jiàn)了你那套邏輯和協(xié)議如果沒(méi)做充分的數(shù)據(jù)校驗(yàn)接收端直接給控制器喂垃圾字節(jié)輕則報(bào)警誤報(bào)重則執(zhí)行機(jī)構(gòu)亂動(dòng)作。2.1 三種非正常狀態(tài)下的接收器行為對(duì)比MAX3088的故障安全本質(zhì)上是給接收器內(nèi)部加了失效保護(hù)偏置。當(dāng)A、B間的差分電壓非常微弱、接近零或者完全懸空、短路時(shí)接收端輸出被強(qiáng)制拉到一個(gè)確定的邏輯電平。具體是哪個(gè)電平要看真值表——多數(shù)故障安全收發(fā)器在失效狀態(tài)下輸出高電平正好對(duì)應(yīng)RS-485空閑態(tài)mark state的邏輯1這樣主控收到的是穩(wěn)定的空閑電平而不是一串亂蹦的字節(jié)。我把三種狀態(tài)對(duì)比一下直觀很多總線狀態(tài)普通收發(fā)器行為MAX3088故障安全行為A、B懸空總線空閑且無(wú)驅(qū)動(dòng)輸出不確定隨機(jī)抖動(dòng)輸出穩(wěn)定高電平邏輯1A、B短路線纜故障輸出不確定可能誤判輸出穩(wěn)定高電平接收端上電、總線未連接輸出不確定主控收到亂碼輸出穩(wěn)定高電平主控讀到空閑有同學(xué)會(huì)問(wèn)輸出高電平是不是就意味著協(xié)議層要預(yù)先處理這些字節(jié)是的。但穩(wěn)定已知的電平總比不確定的抖動(dòng)好處理得多。你可以在協(xié)議層把連續(xù)的空閑高電平當(dāng)作無(wú)有效數(shù)據(jù)通過(guò)超時(shí)判斷就知道總線斷開(kāi)了。2.2 有故障安全外部偏置電阻還要不要加這個(gè)問(wèn)題是我被問(wèn)過(guò)很多次的。傳統(tǒng)RS-485電路設(shè)計(jì)里為了確??臻e狀態(tài)總線電平確定經(jīng)常要在A、B兩端加上下拉和上拉偏置電阻哪一端拉高、另一段拉低形成靜態(tài)差分電壓。加了故障安全收發(fā)器之后理論上芯片內(nèi)部自帶這個(gè)偏置了外部電阻是不是可以省我的建議是分場(chǎng)景不能一刀切。如果總線只在很短的距離、確定性很強(qiáng)的拓?fù)湎掠帽热绨迳贤ㄐ?、機(jī)柜內(nèi)短連線而且從站數(shù)量很少那內(nèi)部故障安全偏置基本就夠用了外部電阻可以省掉。但如果是較長(zhǎng)距離、多節(jié)點(diǎn)的工業(yè)總線總線上的共模噪聲、反射、節(jié)點(diǎn)阻抗變化會(huì)隨時(shí)干擾A、B間壓差外部偏置電阻一方面能增強(qiáng)抗噪聲能力另一方面能配合終端電阻形成確定的分壓網(wǎng)絡(luò)讓總線的靜態(tài)工作點(diǎn)更穩(wěn)。注意外部偏置電阻不是加得越大越好。阻值要根據(jù)終端電阻和節(jié)點(diǎn)數(shù)算加得不合適反而會(huì)加重驅(qū)動(dòng)器的負(fù)載。后面我會(huì)單獨(dú)寫計(jì)算方法。3. 從經(jīng)典收發(fā)器遷移到MAX3088ESAT別以為引腳兼容就能直接抄板升級(jí)芯片這件事很多人第一反應(yīng)是引腳兼容嘛替換上去就行。MAX3088確實(shí)和不少經(jīng)典RS-485收發(fā)器引腳兼容SOP-8封裝Pin 1是RO接收輸出、Pin 2是RE接收使能、Pin 3是DE發(fā)送使能、Pin 4是DI發(fā)送輸入、Pin 5是GND、Pin 6是A、Pin 7是B、Pin 8是VCC。坦白說(shuō)引腳映射不用改原理圖符號(hào)也能復(fù)用但這只是表面兼容真正替換的時(shí)候有三件事必須重新審視。3.1 使能腳時(shí)序比你想的更敏感高速收發(fā)器的DE/RE切換是半雙工通信最容易出bug的地方。半雙工是這樣工作的發(fā)送數(shù)據(jù)時(shí)把DE拉高驅(qū)動(dòng)器接管總線發(fā)完立刻把DE拉低、RE拉高切回接收模式。這個(gè)方向切換如果不夠快就會(huì)在總線上造成最后一個(gè)發(fā)送位被自己的接收端吃回去或者下一個(gè)發(fā)送方提前接管總線的沖突。MAX3088這類高速器件的傳播延遲和使能切換時(shí)間都比低速型號(hào)短很多看似是好事但對(duì)應(yīng)的主控側(cè)GPIO控制時(shí)序也得跟上。如果主控代碼還在用老的延時(shí)邏輯本來(lái)低速下預(yù)留的切換緩沖時(shí)間是按毫秒算的到了Mbps級(jí)別這種粗暴延時(shí)反而會(huì)讓總線空窗期過(guò)長(zhǎng)影響吞吐率。我見(jiàn)過(guò)不少項(xiàng)目換了高速收發(fā)器后通信變慢查了半天不是芯片問(wèn)題是代碼里那段無(wú)謂的延時(shí)沒(méi)刪。3.2 終端電阻和偏置電阻需要重新算再?gòu)陌寮?jí)電阻說(shuō)起。經(jīng)典低速方案里常見(jiàn)配置是A、B兩端各接一個(gè)120歐終端電阻另外分別在A線上拉到VCC、在B線上拉到GND加上兩個(gè)偏置電阻比如各1k。這套配置在低速下工作良好但到了Mbps級(jí)別你要重新核對(duì)三件事終端電阻的精度和功率高速信號(hào)在雙絞線上的反射問(wèn)題更突出終端電阻阻值必須和線纜特性阻抗匹配。RS-485標(biāo)準(zhǔn)里雙絞線特性阻抗通常在100-120歐選用120歐1%精度的電阻是常規(guī)操作但別用5%精度的湊合。偏置電阻的阻值范圍偏置電阻越小對(duì)總線靜態(tài)電平的支撐越強(qiáng)但對(duì)發(fā)送端的負(fù)載也越重。高速場(chǎng)景下發(fā)送端的驅(qū)動(dòng)能力是受限的偏置電阻過(guò)小會(huì)讓信號(hào)擺幅被壓下來(lái)。一般建議偏置電阻用10k級(jí)別起步配合計(jì)算不是拍腦袋。走線引入的寄生電容偏置電阻和終端電阻的封裝選型也很重要。貼片電阻比直插電阻寄生參數(shù)小高速場(chǎng)景盡量選0402或0603封裝而且布局要靠近引腳別讓一段長(zhǎng)走線把這些電阻隔離出去。3.3 半雙工方向切換的時(shí)序控制要點(diǎn)真正寫代碼控制DE引腳時(shí)我的經(jīng)驗(yàn)是分成三個(gè)動(dòng)作拉高DE先等一個(gè)tDE周期數(shù)據(jù)手冊(cè)里能使能到驅(qū)動(dòng)器輸出生效的時(shí)間再開(kāi)始送數(shù)據(jù)最后一個(gè)字節(jié)的移位寄存器數(shù)據(jù)已經(jīng)發(fā)完之后不要立刻拉低DE要給總線留一個(gè)最后一個(gè)停止位完成傳輸?shù)拇翱谶@個(gè)窗口與波特率相關(guān)至少要覆蓋一整個(gè)bit的時(shí)間拉低DE的同時(shí)拉高RE再等接收端使能建立才開(kāi)始讀數(shù)據(jù)。很多菜鳥(niǎo)在這里犯的錯(cuò)是發(fā)完就切接收最后一個(gè)字節(jié)的尾巴還沒(méi)走完接收端已經(jīng)把總線上殘留的邊沿當(dāng)成數(shù)據(jù)采進(jìn)來(lái)了于是通信方之間莫名多出半個(gè)字節(jié)或者一幀錯(cuò)位。高速率下這個(gè)定時(shí)余量更緊建議直接在數(shù)據(jù)手冊(cè)的時(shí)序參數(shù)里把tDE、tRE、傳播延遲這幾個(gè)數(shù)摳出來(lái)自己列一個(gè)時(shí)序預(yù)算表。我習(xí)慣的做法是用主控的定時(shí)器而不是簡(jiǎn)單延時(shí)函數(shù)來(lái)做方向切換確保時(shí)序精度在微秒甚至亞微秒級(jí)別這樣高速收發(fā)器才能跑出應(yīng)有的性能。4. 高速半雙工通信的硬件設(shè)計(jì)實(shí)操有了前面的理論鋪墊這節(jié)直接上實(shí)操。我以一套典型的主站-多從站數(shù)據(jù)采集系統(tǒng)為例走線是兩條雙絞線主控與從站之間以5Mbps通信整體距離約120米從站總數(shù)控制在16個(gè)以內(nèi)。目標(biāo)接線端不需要額外工具只用螺絲刀和萬(wàn)用表就能把現(xiàn)場(chǎng)調(diào)通。4.1 雙絞線選型與端接手把手計(jì)算第一件事是選線纜。高速RS-485最重要的線纜屬性是特性阻抗其次才是線徑和屏蔽。常規(guī)做法是選用120歐特性阻抗的屏蔽雙絞線屏蔽層單端接地防止共模干擾。別用普通網(wǎng)線里的單股線代替那種線特性阻抗雖然也標(biāo)稱100歐但線對(duì)之間的絞距和RS-485專用電纜差異不小距離一長(zhǎng)差別就出來(lái)。端接電阻的計(jì)算方式如下終端電阻應(yīng)等于線纜特性阻抗。假設(shè)線纜特性阻抗ZC120歐那么總線兩端各接一個(gè)120歐電阻R1和R2。這里有個(gè)常見(jiàn)誤區(qū)兩端都接120歐不是并聯(lián)變成60歐怎么驅(qū)動(dòng)的問(wèn)題嗎RS-485標(biāo)準(zhǔn)本來(lái)就要求驅(qū)動(dòng)器能驅(qū)動(dòng)60歐等效負(fù)載這是設(shè)計(jì)好的你該關(guān)心的是每個(gè)端接電阻的功率別選太小的封裝導(dǎo)致發(fā)熱。偏置電阻的計(jì)算可以按下面的思路推。故障安全型芯片內(nèi)部已經(jīng)有偏置但如果外部要增強(qiáng)計(jì)算目標(biāo)是確保空載時(shí)A、B間的靜態(tài)壓差滿足接收靈敏度要求。標(biāo)準(zhǔn)要求最小差分電壓為200mV-32mV到32mV是滯回區(qū)間考慮工程裕量我們按至少300mV設(shè)計(jì)。如果VCC5V終端電阻RT120歐假設(shè)總線兩端各一個(gè)偏置電阻Rpu接A到VCCRpd接B到GND??蛰d時(shí)Rpu和Rpd串聯(lián)分壓A、B間的電壓也就是Rpd兩端的壓降。我們需要V(A-B) ≥ 0.3V而總壓降是5V所以Rpd/(RpuRpd) ≥ 0.3/5 0.06。如果選RpuRpd10k則這個(gè)比例正好是0.5遠(yuǎn)大于0.06靜態(tài)差壓高達(dá)2.5V。但注意偏置電阻和發(fā)端驅(qū)動(dòng)是并聯(lián)關(guān)系偏置電阻太大會(huì)讓靜態(tài)壓差過(guò)強(qiáng)但不會(huì)過(guò)度加載太小才會(huì)讓驅(qū)動(dòng)器不堪重負(fù)。實(shí)際經(jīng)驗(yàn)是外部偏置電阻在10k到100k之間選優(yōu)先從10k開(kāi)始試再用示波器看靜態(tài)差分電壓。如果現(xiàn)場(chǎng)總線噪聲大適當(dāng)減小到4.7k也不是不行但別低于2k那時(shí)候驅(qū)動(dòng)器的負(fù)載電流會(huì)跑到毫安級(jí)別在長(zhǎng)線上會(huì)明顯削弱信號(hào)幅度。4.2 PCB布局、ESD保護(hù)與TVS管選型PCB這一塊是很多人忽視的重災(zāi)區(qū)。高速收發(fā)器的布局核心原則是收發(fā)器靠近連接器放A、B走線盡量短且等長(zhǎng)差分阻抗受控。從連接器到收發(fā)器的這段走線我建議控制在10mm以內(nèi)走線寬度按單端50歐設(shè)計(jì)然后用覆銅地平面包住形成微帶線結(jié)構(gòu)。A、B兩根線要成對(duì)走間距保持恒定別在中間穿別的信號(hào)線。如果空間允許在連接器入口處放一個(gè)共模扼流圈對(duì)抑制外部共模干擾很有效。ESD保護(hù)這塊RS-485連接器是暴露在外的人在現(xiàn)場(chǎng)插拔線纜時(shí)靜電打壞芯片的事故我見(jiàn)過(guò)太多了。TVS管是必需器件常見(jiàn)選型參數(shù)要覆蓋這些工作電壓A、B線的共模電壓范圍是-7V到12V所以要選工作電壓大于12V的TVS比如14V或15V的型號(hào)鉗位電壓要低于收發(fā)器引腳的絕對(duì)最大額定值一般控制在±20V以內(nèi)結(jié)電容高速信號(hào)最怕大電容把邊沿拖慢。TVS管結(jié)電容越小越好最好在幾pF到十幾pF級(jí)別。注意TVS管不是防護(hù)地雷的全部。如果現(xiàn)場(chǎng)可能遭受雷擊感應(yīng)浪涌光靠TVS不夠還要配合氣體放電管和PTC自恢復(fù)保險(xiǎn)絲構(gòu)建多級(jí)防護(hù)。這時(shí)布局上要按放電管-保險(xiǎn)絲-TVS的先后順序放置層層泄流。4.3 菊花鏈拓?fù)涞南拗婆c中繼方案RS-485的物理拓?fù)錁O限是菊花鏈也就是從一個(gè)節(jié)點(diǎn)到下一個(gè)節(jié)點(diǎn)一條總線串到底。很多新手把它接成星形也就是每根分支線從主站單獨(dú)拉到各從站這在低速下可能還勉強(qiáng)能用但高速下分支線stub會(huì)形成阻抗不連續(xù)點(diǎn)反射信號(hào)直接在主干線上來(lái)回彈誤碼率飆升。正確的做法是主干線貫穿整個(gè)網(wǎng)絡(luò)從站設(shè)備通過(guò)極短的支線盡量少于30cm掛到主干線上。如果物理布局沒(méi)法避免長(zhǎng)分支方案有兩個(gè)降低波特率用帶寬換拓?fù)潇`活性在中繼點(diǎn)放置RS-485中繼器把物理總線分段每段各自端接。我做過(guò)一個(gè)案例現(xiàn)場(chǎng)因?yàn)椴季€路徑限制最遠(yuǎn)從站的支線有7米長(zhǎng)。那根支線就像一根天線在8Mbps下直接把主干線上的信號(hào)攪得一團(tuán)糟。后來(lái)做了個(gè)小改動(dòng)把那個(gè)從站移到主干線旁邊用一截不到20cm的支線接入問(wèn)題立刻消失。這件事也說(shuō)明高速RS-485對(duì)拓?fù)涞臐嶑背潭冗h(yuǎn)高于低速場(chǎng)景。5. 實(shí)測(cè)中的踩坑記錄與排查思路理論說(shuō)得再多不如真實(shí)踩坑來(lái)得深刻。這部分我把做高速RS-485項(xiàng)目時(shí)遇到的三個(gè)典型問(wèn)題挑出來(lái)記錄完整的排查鏈路下次你遇到類似癥狀能少走彎路。5.1 案例一高速下偶發(fā)誤碼根因出在共模電壓某現(xiàn)場(chǎng)主站和從站距離約150米波特率提到3Mbps后通信從穩(wěn)定變?yōu)榕及l(fā)誤碼??床ㄐ螖?shù)據(jù)大部分時(shí)間是好的但時(shí)不時(shí)出現(xiàn)某個(gè)字節(jié)完全錯(cuò)誤。一開(kāi)始懷疑是終端電阻虛焊補(bǔ)焊后故障依舊后來(lái)又懷疑主控側(cè)時(shí)序不對(duì)反復(fù)調(diào)tDE也沒(méi)改善。最后用示波器把A、B對(duì)地的電壓分別看過(guò)一遍才發(fā)現(xiàn)蹊蹺A線對(duì)地電壓整體偏移了約4VB線對(duì)地電壓也有偏移但兩者之差倒是正常。這說(shuō)明總線共模電壓已經(jīng)超出了收發(fā)器允許的范圍。原因也簡(jiǎn)單兩個(gè)設(shè)備的電源地之間由于長(zhǎng)線電流形成了地電位差共模被抬上去了。排查鏈路總結(jié)如下先看差分波形確認(rèn)信號(hào)擺幅和邊沿正常再看單端波形A對(duì)GND、B對(duì)GND確認(rèn)共模電壓是否越界確認(rèn)越界后檢查各節(jié)點(diǎn)的電源地是否真正連在一起必要時(shí)用粗接地線跨接兩地更穩(wěn)妥的方案是在總線上加共模扼流圈或者在收發(fā)器輸入端串接共模隔離器件。這個(gè)案例里我把兩個(gè)節(jié)點(diǎn)的GND用一根粗線單獨(dú)連通后共模電壓降回2V以內(nèi)誤碼消失。別小看這根地線它對(duì)RS-485的長(zhǎng)期穩(wěn)定運(yùn)行至關(guān)重要。5.2 案例二故障安全很可靠但被協(xié)議層誤用了另一個(gè)項(xiàng)目里用了帶故障安全的收發(fā)器后主控端在總線空閑時(shí)確實(shí)收到穩(wěn)定的高電平看似沒(méi)問(wèn)題但主控的串口解析程序把它當(dāng)成了正常空閑結(jié)果當(dāng)總線真正斷開(kāi)時(shí)軟件端只看到一個(gè)超時(shí)沒(méi)法區(qū)分空閑高電平和斷線高電平。這其實(shí)不是芯片的鍋是協(xié)議層設(shè)計(jì)沒(méi)跟上。排查時(shí)的思路是這樣的確認(rèn)硬件上故障安全功能生效懸空時(shí)RO輸出高電平檢查協(xié)議層把連續(xù)空閑高電平超時(shí)當(dāng)作通信故障判據(jù)在軟件里增加周期巡檢機(jī)制主站定時(shí)發(fā)送廣播查詢幀從站必須應(yīng)答連續(xù)幾輪無(wú)應(yīng)答就判定該節(jié)點(diǎn)掉線。經(jīng)驗(yàn)是故障安全收發(fā)器給你的是一個(gè)穩(wěn)定的已知電平但你要在協(xié)議層定義一個(gè)明確的心跳機(jī)制來(lái)區(qū)分正常空閑和異常斷線不然故障安全的優(yōu)勢(shì)反而會(huì)掩蓋斷線故障。5.3 排查高速RS-485問(wèn)題的完整工具箱永遠(yuǎn)別空手去現(xiàn)場(chǎng)調(diào)RS-485。下面這套東西是我常用清單也是排查高速通信問(wèn)題的基本配置工具/手段用途備注數(shù)字示波器至少100MHz帶寬看A、B差分波形、邊沿、振鈴建議帶差分探頭沒(méi)有的話用兩通道做減法萬(wàn)用表測(cè)靜態(tài)電壓、電阻檢查終端電阻是否接對(duì)USB轉(zhuǎn)485調(diào)試器單獨(dú)測(cè)試每個(gè)從站的收發(fā)鏈路隔離主站軟件因素的影響頻譜儀或EMI接收機(jī)有條件時(shí)查傳導(dǎo)騷擾和輻射騷擾高速信號(hào)過(guò)陡時(shí)很有用排查一條高速485鏈路我的固定順序是先看波形再量共模再查拓?fù)渥詈蟛艅?dòng)軟件。絕大多數(shù)問(wèn)題都出在波形和共模上軟件時(shí)序反而是背鍋?zhàn)疃嗟哪且粋€(gè)。6. 最后再分享兩個(gè)工程習(xí)慣項(xiàng)目做完之后有些經(jīng)驗(yàn)值得沉淀。第一件凡是用到高速RS-485的項(xiàng)目我都會(huì)在電路板上留一組測(cè)試點(diǎn)把A、B、GND、RO這幾個(gè)關(guān)鍵信號(hào)引出來(lái)方便現(xiàn)場(chǎng)直接用示波器夾上去看波形。別小看這幾個(gè)測(cè)試點(diǎn)故障排查時(shí)能省去無(wú)數(shù)的拆線接線時(shí)間。第二件也是被問(wèn)得最多的問(wèn)題——到底什么時(shí)候用故障安全型什么時(shí)候用普通型。我的判斷標(biāo)準(zhǔn)是總線協(xié)議本身對(duì)空閑狀態(tài)有嚴(yán)格定義的比如Modbus的RTU模式空閑時(shí)總線保持高電平來(lái)表示無(wú)數(shù)據(jù)這種情況用故障安全型很合適能顯著降低空閑亂碼的概率如果協(xié)議層對(duì)數(shù)據(jù)完整性和錯(cuò)誤容忍度很高比如有充分的CRC校驗(yàn)和重發(fā)機(jī)制用普通收發(fā)器也夠用畢竟成本有優(yōu)勢(shì)。但工業(yè)現(xiàn)場(chǎng)、長(zhǎng)距離、多節(jié)點(diǎn)環(huán)境下我還是優(yōu)先選故障安全型省心一臺(tái)設(shè)備的維護(hù)成本往往比芯片差價(jià)貴多了。