Fórum témák
» Több friss téma |
Ha van a gépeden soros port, akkor építhesz MAX232 soros porttal ellátott Freeduino kártyát Bővebben: Link1, Link2
Szia!
Olvasgatom az egyik ehhez kapcsolódó cikket, és azon tűnődöm, hogy hogy a fenébe vannak ezek a konverter IC-k. Kicsit belezavarodtam, tudnál segíteni tisztogatni? Vannak jelszintek, TTL USB RS232. Ezek szabványok. Van a soros kommunikáció, melyet pl. az RS232 használ, illetve USART-al ellátott TTL eszközök (AVR). Van az FT232BM, ami USB UART-ként működik (tehát aszinkron soros), azaz az USB-ből soros porton kommunikációra képessé teszi az eszközt és vissza. (itt van egy zavar: miért nem kell szintillesztő ilyen esetben? Vagy éppúgy kell? Tehát arra gondolok, hogy attól, hogy képes lesz kommunikálni soros porton a jelszintek még nem biztos, hogy megfelelőek az RS232-höz) Van a MAX232, ami az RS232 jelszinteket tudja TTL-é alakítani és vissza. De ezzel soros kommunikációra vagyunk csak képesek. Igazán ezt az USB-s átalakítgatósdit nem értem (csak tisztában szeretnék lenni vele), hogy ha USB-t képessé teszem egy FT232BM-el soros kommunikációra, az az RS2332-höz és TTL-hez szükséges jelszinteket honnan fogja tudni? A képek magukért beszélnek Az is zavar még, hogy ha USB-ből van olyan átalakító, ami egyből TTL szintek feldolgozására tesz képessé, akkor mi van??? Végképp elvesztem. Valaki tegyen rendbe, kérem kapcsolja ki... ![]() A teljesség kedvéért ez a PL2303 és ADM206 totál galyra vág.
Az USB-UART protokol konverterek (FT232, PL2303, CP2102, MCP2200 stb.) a számítógéppel USB-n kommunikálnak, de a felhasználó számára transzparens módon. Ez azt jelenti, hogy az oprendszer és az eszközmeghajtó szoftver diszkréten elintézik maguk között a bemutatkozást és az USB átvitel feladatait. A felhasználói program már úgy látja, úgy kezeli, mintha az egy soros port lenne (virtuális soros port).
A külvilág felé pedig ezen a protokol konverterek mindegyike TTL szintű (többnyire 3,3 V-os, néha 5 V-os jelszintttel) aszinkron soros portnak látszanak, tehát egy szintén TTL jelszintű mikrovezérlő csatlakoztatásakor nem kell RS232 szintillesztés, legfeljebb az 5 V - 3,3 V közötti szintkülönbséget kell megoldani. Ha "hagyományos" soros eszközöket kell meghajtani, akkor a fent említett protokol konvertereket kiegészítik egy MAX232 vagy hasonló szintátalakítóval (ilyenek a kereskedelmi forgalomban kapható USB-RS232 kábelek). Annak azonban az otthoni kísérletezésnél nem sok értelme van, hogy az USB - UART protokol konverter után is tegyünk egy MAX232 IC-t, majd a a mikrovezérlőnél egy másik MAX232-vel visszaalakítsuk TTL jelszintre. De ha valaki mégis így akarja, ez az út is jártható...
Van tehát a soros kommunikáció.
Ezt valami intelligens áramkör (USART, pl a 16550-es IC), vagy annak része kezeli. Egyik oldalon a CPU-val kommunikál, pl. ISA buszon, a másik oldalán a soros ki-bemenetek vannak. Logikai áramkör,ami TTL, LVTTL (3,3 ill. 5V) jelekkel működik, ki-bemetei ilyen szintűek. Van az RS232 szabvány, ami többek között a ki-bementi feszültségeket írja elő egy soro csatlakozón. Lényeges különbség: A adás (Tx) vonalon a logikai 1 a TTL-ben a H szint, tehát 3....5V, az az RS232-nél tipikusan -12V (minusz 12V). A logikai 0 TTL-ben L szint, 0V körüli, RS232-ben +12V Tehát jelszint illesztést kell végezni, erre jó a MAX232. Az USB-Soros IC-k (FT232BM) processzor oldali interfésze USB. A másik oldal TTL (LVTTL). Tehát ha RS232 szinteket akarunk, kell a MAX232 is. Viszont ha az áramkörünk eleve TTL ki-bementekkel rendelkezik (pl mikrokontroller) akkor kispórolható az RS232 feszültség-szintekre konvertálás. Pl. egy PC-hez egy FT232BM-mel illeszthető egy mikrokontroller. A MAX... kihagyható.
Helyben vagyok, köszönöm mindkettőtöknek!
Sziasztok szakik!
Sok mindent olvastam, mielőtt megnyitottam ezt az új témát! Sajna ilyen dolgot nem találtam! USB-ből soros port (tudom ebből dunát lehet rekeszteni annyi van, de) 8 vagy 16 esetleg 32 soros port egyetlen egy usb-ből! Tudnátok nekem segíteni? Ha valakinek ötlete vagy rajza lenne, ami alapján meg lehetne építeni! Megköszönném, vagy ha valaki elérhető áron megépítené azt meg megfizetném! A mellékelt kép alul, ilyenre gondolok! Minden tiszteletem minden hozzáértőnek!
Mi neked az elérhető ár?
Mik az elvárásaid robosztusság szintjén? (rackbe szerelhető fém ház, esd védelem a portokon, beépített, rendes táp, stb.) Mekkora bps-t akarsz tudni elérni? Mi az, ami miatt nem jó egy/több usb hub külső táppal, és rajta n db pl2303-alapú, pár ezresért kapható usb-rs232 konverter?
Üdv!
Igazándiból icsernyitől kérdezném, mert tudom ,hogy ő ezzel a kérdéssel igen behatóbban foglalkozott,de bárki más véleményét szívesen venném: MCP2200 esetén a configuration Utility-vel beállítható, hogy használja-e az RTS/CTS vonalakat a kommunikációhoz... Nna most én gondoltam, hogy az RTS vonal nagyon jó is lesz nekem vezérlésre, mint ahogy azt MAX232, és FTDI chip esetén is használtam, így szoftverből tudok kapcsolni majd egy lábat (pl: propeller chipnél RESET, vagy RS485 esetén adás/vétel átkapcsolás), De úgy látom az MCP2200-nál az RTS CTS-t hardver szinten arra is használja a chip, amire tervezték , azaz serial handshakingre, szóval azt csinálja, hogy egy jópár byteot kiküldenék, de csak egyet küldd ki, mert aztán várja a CTS-en hogy OK... (legalábbis úgy tűnik). Kérdésem az lenne, hogy szerintetek is így van ez? Lenne erre valami egyéb módszer hogy az RTS-t PC-ről lehessen ennél ez IC-nél kapcsolgatni? Köszönöm a választ előre is!
Az MCP2200-ről nem tudok sokat. Nekem nincs is ilyenem. Csak a munkahelyemen találkoztam vele, futólag. Én PIC18F14K50-et használok helyette, abba olyan programot lehet írni, amilyen tetszik.
Ha csak az RTS vonalat akarod billegtetni, akkor próbáld meg úgy, hogy a CTS vonalat fixen nullára kötöd. Nem tudom, hogy ehhez mit szól. Az RTS vonal használatánál lehet olyan probléma, hogy a Microchip eszközöknek nincs saját meghajtó szoftvere, a Windows-os usbser.sys, amit használnak, az pedig hibás: nem küldi ki az RTS jelet, csak akkor, amikor a DTR jelet is vezérled. Az MCP2200-nál egyébként a GPIO kimenetek szolgálnak általános vezérlésre, de a GPIO port egy külön (HID) eszközként látszik a Windows felől.
Szerintem az a probléma, hogy a port megnyitásánál használod a handshake opciót. Ez baj, mert akkor az átvitel szinkronizálására fogja használni. Próbáld meg a "nohandshake" opciót. A Tx vonalat is tudod billegetni.
Sajnos a Tx vonal billegtetése nem megoldás, mivel lenne tx/rx kommunikáció is,és e mellé kellene még egy vezérlőjel (pl: IC reset, hogy prog módba kapcsolhasson.)
A handshake opciót nem használom szoftveresen, mivel egy delphiben általam írt általános célú terminál programot szoktam használni, amelyben van egy RTS checkbox is. Ha a soros vonalra max232-vel illesztek, ugyanezzel a terminál programmal az RTS-t tudom kapcsolgatni, ez a kimeneten mérhető is. (FTDI chip esetén is így van). Még megpróbálom a CTS jelet lehúzni, de tartok tőle, hogy nem fog segíteni... ![]() icserny! A GPIO HID deviceként való kezelésében van valami jártasságod? Tudnál valami fogódszkodót adni, hogy hogyan induljak el? Köszi előre is! Idézet: Nincs. Ortopéd ötletnek tartom.„A GPIO HID deviceként való kezelésében van valami jártasságod?” Idézet: A Microchip honlapján nézz körül! Biztosan van hozzá valami DLL, meg ez a leírás. „Tudnál valami fogózkodót adni, hogy hogyan induljak el?”
Sziasztok!
Vásároltam MCP2200-kat. kettőt sikerült tönkre tennem, az óta ismeretlen eszközök a PC számára. Elméletileg mindent jól bekötöttem. Tönkremehet e akkor, ha a tápfeszültséget (3,3V külső) hamarabb veszem el töle mint a D+ és D- -t. ilyenek történhettek közbe. Egyébként simán működött. A 3,3V külső azért kell mert PIC18F45K20-al akarok vele kommunikálni.
Elméletileg ilyesmitől nem megy tönkre az Ic, többmindent csináltam már én is vele, zárlatokat a lábon stb... stb.. eddig mindíg mindent kibírt... Szerintem ott valami más trükknek is kell lennie.. nem olyan kényes IC ez (csak pont annyira mint egy 18F14K50).
Remélhetőleg tudod hogy az MCP2200 belső áramköre előállít egy 3.3V-os feszültséget, és erre a kimenetre
egy 470nF-1µF pufferkondit kell kötni. Ez a feszültség az USB kommunikációhoz kell, mással nem terhelheted! Ha most a tápellátás 3.3V, nem biztos hogy a belső áramkör elő tudja állítani a kommunikációhoz szükséges feszültséget, ekkor az eszköz kommunikációra képtelen, nem lehet felismerni! Én inkább azt javasolnám hogy 5V-ról működtesd, és az RX/TX kimenetek leválasztását 1-1 darab 1 kOhm ellenállással oldd meg! A 3.3V esetében még bőven működőképes a kommunikáció. Nekem az AVR JTAG Debugger is így megy lassan egy éve, és eddig teljesen hibátlan 3.3V módban is! Ha nyugodtan szeretnél aludni, nézz át az "AVR programozók..." topikba, valamikor 1-2-3 hónapja töltöttem fel egy képet egy tranzisztoros leválasztó áramkörről, amit a gyári STK500-ból lestem ki. Idézet: De, elő tudja állítani (persze, a 470 nF kell rá)! Ilyenkor valószínűleg bekapcsol egy FET kapcsoló és átköti belül az LDO-t.„Ha most a tápellátás 3.3V, nem biztos hogy a belső áramkör elő tudja állítani a kommunikációhoz szükséges feszültséget, ekkor az eszköz kommunikációra képtelen, nem lehet felismerni!” Egyébkén kívül is összeköthető a VDD és a VUSB, ha a tápfeszültség 3,6 V, csak ezt nem nagyon szeretem, mart baj lehet belőle, ha később véletlenül 5 V-ot kap a VDD. A VDD tápfeszültséget egyébként a kívánt jelszint szerint célszerű megválasztani (5V, vagy 3,3 V).
A "tönkrement" MCP2200 IC-t a konfiguráló programja sem ismerti fel? Nem lehetséges, hogy a driver hiányzik, vagy valamilyen paraméter (pl. PIC, VID) elállítódott?
A gép azt írja ki hogy nem lehet felismerni. Ez rögtön azután jelentkezik, hogy a tápfesz véletlenül hamarabb kerül leválasztásra mint a D+, D-. Szerintem az a magyarázat, hogy a D+, D- on lévő feszültség jelen van és túlterhelheti a bemeneti fokozatot. Amelyik nem járt így azokat a gép egyből felismeri, egyéni sorozatszámmal. Meg azt is néztem, hogy pl. az USB csatlakozót kihúzod fizikailag meg van akadályozva hogy ez agy történhessen azzal, hogy a két középső érintkezők hamarabb elválnak egymástól. Hármat kellet tönkre tennem, hogy rájöjjek mi a baj. Tehát FIGYELEM! ha az USB interfész (jelen esetben MCP2200) áramkört külső tápon akarod használni akkor figyelj a leválasztás sorrendjére Előbb az adatvonalak, és csak a végén a táp. De én már csak az USB-s táplálást fogom használni. Az MCP2200 adatlapján vannak megfelelő kapcsolások.
Hát ezek szerint nem vagy eléggé tapasztalt CMOS áramkörök használatában...
Ha nincs valamelyik lábon külön védelem, akkor sem a tápnál magasabb, sem a földnél alacsonyabb feszültséget nem köthetsz semelyik lábra. A dokumentációban elolvasható, hogy melyik láb milyen szintű védelemmel rendelkezik (Absolute Maximum Ratings), jellemzően egy diódanyitófeszültségnyivel lehet a táp fölé vagy a föld alá menni (0.3V). Ha valamelyik láb ennél jobb védelmet kapott, azt általában külön szokták jelölni (pl. az 5V-toleráns bemenetek a 3.3V-os IC-knél). Az MCP2200 esetében konkrétan az van a doksiban, hogy D+ és D- max. VUSB + 0.3V. A VUSB pedig max. 4V lehet, ergó adható neki táplálás akkor is, amikor a VDD = 0.
Hát a cmos-hoz valóban nem értek annyira és fizikailag nem tudom, hogy mi történt az IC tokon belül, csak a tapasztalatom 3×-os megerősítéssel, hogy az MCP2200 ebben az esetben működés képtelenné vált.
Bátran ki lehet próbálni. csak egy 440Ft + Áfa-ba kerül. Csak azért írtam le, hogy segítsek másoknak sok bosszúság elkerülésében.
Sziasztok!
Másfél hete küzdök egy kommunikációs problémával és felmerült bennem két kérdés. Ha valamelyikőtöknek van tapasztalata a témában légyszíves segítsen. VB6 -ban írok egy programot ami MCP2200 USB-USART átalakítóval adatokat kér le egy hardvertől. A problémám az hogy nem úgy érkeznek az adatok ahogy szeretném, de ezt a problémát megoldom magam is. Csatoltam egy képet a jelenségről. Ezzel kapcsolatosan az a kérdésem hogy VB6-ból hogy lehet törölni a bemeneti puffert? A szokásos megoldás úgy tűnik nem működik. MSComm1.InBufferCount = 0 A második kérdésem hogy a Portmon nevű programmal, de más programmal is akadt olyan problémám hogy bezáráskor nem zárja le az MCP2200-al a kommunikációt. Innentől kezdve más programmal nem lehet elérni. A számítógép újra indításán kívül még van más mód az MCP2200 szabaddá tételére? Idézet: Mindig a PC alkalmazásnak kell lezárnia a COM porttal a kommunikációt. „Portmon nevű programmal, de más programmal is akadt olyan problémám hogy bezáráskor nem zárja le az MCP2200-al a kommunikációt.” Idézet: Esetleg az eszköz kihúzása és visszacsatlakoztatása (lehet, hogy kétszer kell megtenni). De nyilván nem ezen az úton kellene elindulni... „A számítógép újra indításán kívül még van más mód az MCP2200 szabaddá tételére?”
Igen ezt tudom. Abban bíztam hogy XP alatt van valami szoftver eszköz amivel ki lehet lőni a kapcsolatot.
Az eszköz kihúzás sajnos nem segít. Sokat nyomoztam a neten. Kipróbáltam USB monitor programokat is. pl. Az USBDeview segítségével látszólag lehet törölni, bezárni a hardvert. A gyakorlatban ennek ellenére mégsem zárja le. A hibaüzenet a szokásos, az eszköz használatban van másik program által. Az MCP2200 configurátor gond nélkül csatlakozik az eszközhöz akkor is ha foglalt. Ez egy újabb rejtély. Vagy csak HID oldalról próbál hozzáférni? Idézet: Nagy valószínűséggel: igen. „Vagy csak HID oldalról próbál hozzáférni?”
Szia. A bemeneti buffert a purgecomm-al lehet törölni.
Leírás itt.Bár VB6-hoz nem nagyon értek de , ha jól látom te csak a bemeneti buffer számlálóját törlöd. Etttől még a bufferben maradnak a kiolvasatlan dolgok. A buffererben levő byte-ok számát cbInQue-vel (Comstatból) tudhatod meg. Idézet: „de más programmal is akadt olyan problémám hogy bezáráskor nem zárja le az MCP2200-al a kommunikációt” Nem a saját progid "felejti el" bezárni a portot?
A VB6 programnak kell bezárnia a COM-ot(MSComm1.PortOpen = False).
Az MC2200 tudomásom szerint CDC, nem HID, de nem az USB-COM-ot kell kikapcsolni, hanem a csatornát elengedni, hogy egy másik program hozzáférjen. A kommunikáció során legtöbbször tudjuk, milyen hosszú adatsort kapunk. Erre a hosszra kell beállítani az MSComm1.InputLen változót, aminek a hatására csak akkor kerül a lekezelési rutinba a szál, ha beérkezett a csomag. Az időtúllépéseket Timer modulokkal le lehet kezelni, ha kommunikációs zavar keletkezik. Idézet: Összetett eszköz, tehát CDC és HID is egyben (utóbbi csak konfigurálásra és a GPIO lábak matatására szolgál). „Az MC2200 tudomásom szerint CDC, nem HID” Ez az összetettség a magyarázat arra jelenségre, hogy az el nem engedett COM port ellenére a saját konfiguráló programja tud kapcsolódni az eszközhöz, mivel az a HID kapcsolatot használja. |
Bejelentkezés
Hirdetés |