Portál AbcLinuxu, 4. července 2025 22:27

Převodník IrDA - RS232 s MCP2120.

21.9.2008 17:17 | Přečteno: 3032× | Bastlení

IrDA už není v módě. Na nových základových deskách je už nenajdeme. Jistě, existují poměrně levné USB převodníky (pokud se je podaří pod linuxem zprovoznit). Co když ale máte vysílač/příjmač IrDA zabudovaný do bedny počítače a vyhovuje vám to? Můžete si postavit jednoduchý převodník RS232 ←→ IrDA založený na čipu MCP2120.

MCP2120 je převodník IrDA na UART, který zvládá rychlosti až do 115200 baudů (resp. dá se „přetaktovat“ na vyšší rychlost, jenže to už velikost pulzu nebude odpovídat standardu IrDA), tedy tzn. IrDA SIR. Ovšem vstup/výstup na UART je v TTL logice, takže chceme-li jej připojit přímo na sériový port v počítači, musíme použít převodník, např. profláklý MAX232 (viz třeba tento článek tady na abclinuxu.).

Má to ale háček. IrDA SIR většinou kvůli zpětné kompatibilitě používa dvě rychlosti: 9600 baudů pro identifikaci zařízení a 115200 pro vlastní datové přenosy. MCP2120 umožňuje nastavení rychlosti dvěma způsoby: buď „natvrdo“ krz piny BAUD0-BAUD2, což se pro takovéto přepínání moc nehodí (to je určeno spíše k připojení k nějakému mikročipu). Proto většina převodníků postavených na MCP2120 použivá jiného způsobu řízení, kdy je jeden RS232 signál (DTR) použit k přepínání převodníku do řídícího módu, ve kterém byte přijatý přes UART říká, jakou rychlostí se má vysílat. Ovšem někdy se stane, že je převodník „rozhozen“ a druhá strana by nevědela, jakou rychlostí s ním má komunikovat. Proto je třeba ještě další signál k resetování obvodu (běžně se používá RTS sériového portu).

To představuje maličký problém: převodník MAX232 totiž má pouze dvě linky RS232 → UART (a naopak dvě UART → RS232). My ale potřebujeme pro směr RS232 → UART. Některé zapojení použijí tranzistor, já jsem se rozhodl vzít ze šuplíku optopřevodník 6N136. Celé zapojení vypadá takto:

schéma

Na schématu není zakresleno napájení, já se rozhodl napájet přímo z +5V větve ze zdroje. Ovšem raději jsem předřadil jednu „vratnou pojistku“ a přidal několik vyhlazovacích kondenzátorů (bez nich jsem si ani nešktl, to co „lítá“ po drátech uvnitře počítače bude docela divoké... :D ). Signály do vysílače/příjimače IrDA jsou vyvedeny na klasickou pinovou lištu ve standardním pořadí:

1 - TxIR
2 - GND
3 - RxIR
4 - n.c.
5 - +5V

Testování zapojení není složíté: na linky Rx a Tx jsem mezi MAX232 a MCP2120 pověsil dvě LED diody, takže je možné velmi dobře sledovat, kdo vysílá a kdo přijímá. Jelikož řídící mód funguje zároveň jako testovací a je aktivní při „nahozeném“ DTS, pak při spuštení terminálu, jakým je třeba minicom, se do takovéhoto testovacího módu dostaneme. To se projeví tím, že MCP2120 posílá všechny znaky zpět na UART. Pokud toto funguje, stačí IrDA nastavit a spustit. Konkrétně na mé Fedoře bude vypadat konfigurák (v /etc/sysconfig/irda) nějak takto:

IRDA=yes
DEVICE=/dev/ttyS5
DONGLE=mcp2120
DISCOVERY=yes

Pak už jen service irda start a otestovat na nějakém zařízení (vřele doporučuji utiliktu irdadump)...

       

Hodnocení: 80 %

        špatnédobré        

Obrázky

Převodník IrDA - RS232 s MCP2120., obrázek 1

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

22.9.2008 22:55 victor8 | skóre: 24 | blog: blog | Košice
Rozbalit Rozbalit vše Re: Převodník IrDA - RS232 s MCP2120.
Odpovědět | Sbalit | Link | Blokovat | Admin
Very nice, pridavam do bookmarkov :-)
25.2.2009 14:29 mates
Rozbalit Rozbalit vše Re: Převodník IrDA - RS232 s MCP2120.

Ja mam zabudovany irda v laptopu Aceru TravelMate 240 ale jak ho mam sprovoznit

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.