Tento príspevok je súčasťou série o probléme s autoflow ModbusRTU na TouchBerry a o tom, ako som ho vyriešil. Ostatné príspevky série nájdete pod tagom touchberry. Všimnite si, že novšie príspevky môžu obsahovať aktuálnejšie informácie.
Posledných pár dní som bojoval s dvoma vecami: vlnou horúčav a TouchBerry 10 bez autoflow — časť 1 a časť 2. Dnes, po rade experimentov a prečítaní niekoľkých fór a článkov, som sa rozhodol objednať MAX12487 — polovičný duplexný RS485 čip s integrovaným autoflow, ktorý nahradí UTRS485G vyžadujúci manuálne riadenie smeru, čo väčšinu nástrojov a knižníc ModbusRTU robí ťažko/nemožne použiteľnými.
Problémy s RTS #
GPIO17 možno nakonfigurovať do režimu RTS prostredníctvom funkcie ALT3
(konkrétne RTS0). Nech som skúšal čokoľvek, nemohol som prinútiť pin RTS,
aby počas prenosu automaticky niečo robil na osciloskope. Mnohé zdroje
poukazujú na to, že tento výkon je komplikovaný. Zdroje, ktoré tvrdia, ako
to urobiť, niekedy neuvádzajú model Raspberry Pi alebo vynechávajú
informáciu, či používajú /dev/ttyS0 nazývané mini-uart alebo sériové
rozhranie pod /dev/ttyAMA0. Pravdepodobne je potrebná nejaká práca s
dtoverlay. Aj keby som dokázal RTS sprevádzkovať, s týmto návrhom sú stále
problémy.
Prvý problém spočíva v tom, že ako som už načrtol v predchádzajúcich článkoch, pin RE na UTRS485G je údajne pripojený k GPIO17 na TouchBerry 10, ale my vlastne potrebujeme pin DE, ktorý je pripojený k GPIO27. Skúmanie samotného čipu UTRS485G na DPS UPS shieldu však ukazuje, že piny RE a DE sú jasne prepojené, čo by malo byť správne, čo vyvoláva pochybnosti o podpore, ktorú som dostal od IndustrialShields. Takže aj keby RTS fungovalo, automaticky by prepínalo nesprávny pin. Nastavenie GPIO27 na HIGH robí prenos plynulým. Tento pin s najväčšou pravdepodobnosťou riadi oba piny DE aj RE na UTRS485G. Aby som si bol istý, objednal som som testovací klip SV-SOIC8 spolu s niekoľkými IDC 40 klipmi na predĺženie 40-pinového hlavičkového konektora Raspberry cez káble, keďže UTRS485G je na spodnej strane UPS shieldu a nie je dostupný cez klip, keď je shield skutočne zasunutý do Raspberry. Uvažoval som nad Pomona POM-5250, čo je dosť dobre známy kus, ale môj miestny predajca ho mal za dvojnásobnú cenu. Dúfam, že toto rozhodnutie bude v poriadku. Je lepšie mať aspoň nejaké klipsy SO8, ako žiadne, keď je potrebné naliehavé flashovanie EEPROM.
Druhý problém je rovnako zlý, možno horší ako ten prvý. Ako som neskôr zistil, pin RTS má invertovanú polaritu, čo znamená, že zostáva HIGH a počas prenosu ide LOW. Fail. Zmeniť to iba softvérovo je takmer nemožné.
Dôvody pre výber MAX13487E #
Existuje množstvo ľudí, ktorí tvrdia, že MAX13487E je dobrá voľba pre aplikácie ModbusRTU. Existuje malý rozdiel vo funkcionalite pinov a v časti 2 som urobil hlbšiu analýzu, ale vo všeobecnosti sú pin-to-pin kompatibilné s väčšinou ostatných polovičných duplexných RS485 čipov v puzdre SO8, vrátane UTRS485G. Najväčší problém pri výmene takýchto súčiastok sú napäťové úrovne, ale aj tieto dve súčiastky sú obe 5V, takže žiadne problémy. Konverzia na 3,3V pre úrovne UART Raspberry je už vykonaná na doske UPS.
Výber UTRS485G je zvláštny. Napríklad existuje komentár k recenzii SparkFun Transceiver Breakout - RS-485, ktorý používa iný obscurný čip SP3485. Používateľ #499376 uvádza:
I would not have purchased this board. Why? Because the obscure SP3485 chip that it uses does not have automatic flow control and is therefore not compatible with many popular open source libraries for RS485 and in particular Modbus RTU.
Unfortunately there don’t seem to be a lot of other choices except certain parts in online auctions and building one’s own board with MAX488, MAX13487E or another flow-control transceiver.
Tento používateľ v podstate potvrdzuje to, čo som sa tu naučil ťažkou cestou. Potom sú tu ľudia tvrdiac o plnom alebo aspoň čiastočnom úspechu s MAX13487E na Electronics StackExchange. Ďalšie pozitívne referencie možno nájsť tu a tu.
Ďalšie kroky #
Zábava by sa mohla objaviť aj v podobe náhodnej emailovej odpovede od IndustrialShields o tom, ako to správne urobiť softvérovo, ale keďže som vyskúšal toľko vecí, moja nádej na tento scenár je úprimne dosť nízka. Dúfam, že autoflow bude fungovať po výmene čipov a budem môcť používať ModbusRTU na TouchBerry 10 bez ďalšieho strateného času s týmto problémom.
Toto je 95. príspevok #100daystooffload.