引言
  串行接å£è¨(shè)å‚™æ†‘å€Ÿå…¶æŽ§åˆ¶éˆæ´»ã€æŽ¥å£ç°¡å–®ã€å 用系統(tÇ’ng)資æºå°‘ç‰å„ª(yÅu)點(diÇŽn),被廣泛應(yÄ«ng)用于工æ¥(yè)控制ã€å®¶åºå®‰é˜²ã€GPSè¡›(wèi)星定ä½å°Ž(dÇŽo)èˆªä»¥åŠæ°´ã€é›»ã€æ°£è¡¨çš„æŠ„表ç‰é ˜(lÇng)域。在這些嵌入å¼ç³»çµ±(tÇ’ng)ä¸ï¼Œå¯èƒ½æœƒæœ‰å¾ˆå¤šå¾žè¨(shè)備都通éŽä¸²è¡ŒæŽ¥å£èˆ‡ä¸»æ©Ÿ(jÄ«)進(jìn)行通信,如GPRS MODEMã€ç´…外發(fÄ)é€å’ŒæŽ¥æ”¶æ¨¡å¡Šã€RS485總線接å£ç‰ã€‚這使得開發(fÄ)人員常常é¢è‡¨åµŒå…¥å¼ç³»çµ±(tÇ’ng)ä¸ä¸»æ©Ÿ(jÄ«)串行通信接å£ä¸è¶³çš„å•題,é‡å°æ¤å•題,本文介紹了幾種常見的解決方法。
軟件模擬法
ã€€ã€€è»Ÿä»¶æ¨¡æ“¬æ³•å¯æ ¹æ“š(jù)ä¸²è¡Œé€šè¨Šçš„å‚³é€æ ¼å¼ï¼Œåˆ©ç”¨å®šæ™‚(shÃ)器和主機(jÄ«)çš„I/Oå£ä¾†æ¨¡æ“¬ä¸²è¡Œé€šè¨Šçš„æ™‚(shÃ)åºï¼Œä»¥é”(dá)到擴(kuò)展串å£çš„目的。
  接收éŽç¨‹ä¸éœ€è¦æª¢æ¸¬èµ·å§‹ä½ï¼Œé€™å¯ä»¥ä½¿ç”¨æŸ¥è©¢æ–¹å¼ï¼Œæˆ–者,在端å£å…·æœ‰ä¸æ–·åŠŸèƒ½çš„ä¸»æ©Ÿ(jÄ«)ä¸ä¹Ÿå¯ä»¥ä½¿ç”¨ç«¯å£çš„䏿–·é€²(jìn)行處ç†ã€‚接收和發(fÄ)é€éŽç¨‹ä¸ï¼Œå°å®šæ™‚(shÃ)çš„è™•ç†æ—¢å¯ä»¥ä½¿ç”¨æŸ¥è©¢æ–¹å¼ä¹Ÿå¯ä»¥ä½¿ç”¨å®šæ™‚(shÃ)噍䏿–·æ–¹å¼ã€‚ç‚ºäº†ç¢ºä¿æ•¸(shù)據(jù)çš„æ£ç¢ºæ€§ï¼Œåœ¨æŽ¥æ”¶éŽç¨‹ä¸å¯ä»¥åœ¨æª¢æ¸¬ç•°æ¥å‚³è¼¸?shù)é’ é¹—å¤¹ç›˜æŸ¼å¹–ç”±å¼¦æâ”“æ è“´_處ç†ï¼Œåœ¨æŽ¥æ”¶æ¯å€‹(gè)使™‚(shÃ)å¯ä»¥é‡‡ç”¨å¤šæ¬¡é‡‡æ¨£ã€‚
利用并å£è½‰(zhuÇŽn)䏲壿“´(kuò)展串行å£
  基于Intel8251çš„ä¸²è¡Œå£æ“´(kuò)展
  Intel8251æ˜¯ä¸€ç¨®é€šç”¨çš„åŒæ¥/ç•°æ¥ç™¼(fÄ)é€å™¨ï¼ˆUSART),它的工作方å¼å¯ä»¥é€šéŽç·¨ç¨‹è¨(shè)置,并具有ç¨(dú)立的接收/發(fÄ)é€å™¨ã€‚èƒ½ä»¥åŒæ¥æˆ–ç•°æ¥ä¸²è¡Œé€šä¿¡æ–¹å¼å·¥ä½œï¼Œè‡ªå‹•(dòng)完æˆå¹€æ ¼å¼ï¼Œå…·æœ‰å¥‡ã€å¶æ ¡é©—(yà n)和錯(cuò)誤檢測電路。
  基于TL16C554çš„ä¸²è¡Œå£æ“´(kuò)展
  TL16C554是TIå…¬å¸ç”Ÿç”¢(chÇŽn)çš„4通é“ç•°æ¥æ”¶ç™¼(fÄ)器集æˆèŠ¯ç‰‡ã€‚å°TL16C554串行通é“的控制,是通éŽå°æŽ§åˆ¶å¯„å˜å™¨LCRã€IERã€DLLã€DLMã€MCRå’ŒFCR編程來實(shÃ)ç¾(xià n)çš„ã€‚é€™äº›æŽ§åˆ¶å—æ±ºå®šå—符長度ã€åœæ¢ä½çš„個(gè)數(shù)ã€å¥‡å¶æ ¡é©—(yà n)ã€æ³¢ç‰¹çއ以åŠèª¿(dià o)制解調(dià o)器接å£ã€‚控制寄å˜å™¨å¯ä»¥ä»»æ„é †åº?qÅ«)æ‡è€„îƒî‚‡èŒERå¿…é ˆæœ€åŽä¸€å€‹(gè)å¯«å…¥ï¼Œå› ?yà n)樗îŠåˆ‚浦袛å—é¼“å ‹ï¼”î†§åž‹Ç–çº¼?nèi)的波特率發(fÄ)生器(BRG)å…許時(shÃ)é˜é™¤ä»¥1至65535ä¹‹é–“çš„ä»»æ„æ•¸(shù),BRGæ ¹æ“š(jù)å…¶ä¸åŒçš„ä¸‰ç¨®é€šç”¨é »çŽ‡ä¸çš„一種來決定標(biÄo)準(zhÇ”n)波特率。
16C55x系列芯片還包括16C550ã€16C552,分別å¯ä»¥æ“´(kuò)展1個(gè)å’Œ2個(gè)串行å£ã€‚
åˆ©ç”¨ä¸²è¡Œå£æ“´(kuò)展串行å£
  基于GM8123/25ç³»åˆ—èŠ¯ç‰‡çš„ä¸²è¡Œå£æ“´(kuò)展
  GM8123/25ç³»åˆ—ä¸²å£æ“´(kuò)展芯片å¯ä»¥å…¨ç¡¬ä»¶å¯¦(shÃ)ç¾(xià n)䏲壿“´(kuò)å±•ï¼Œé€šè¨Šæ ¼å¼å¯è¨(shè)置,并與標(biÄo)準(zhÇ”n)串å£é€šè¨Šæ ¼å¼å…¼å®¹ã€‚
  GM8125坿“´(kuò)展5個(gè)標(biÄo)準(zhÇ”n)串å£ï¼Œé€šéŽå¤–éƒ¨å¼•è…³é¸æ“‡ä¸²å£æ“´(kuò)展模å¼ï¼šå–®é€šé“工作模å¼å’Œå¤šé€šé“工作模å¼ã€‚å–®é€šé“æ¨¡å¼ä¸‹ï¼Œç„¡éœ€è¨(shè)ç½®èŠ¯ç‰‡çš„é€šè¨Šæ ¼å¼ï¼Œå串å£å’Œæ¯ä¸²å£ä»¥ç›¸åŒçš„æ³¢ç‰¹çŽ‡å·¥ä½œï¼ŒåŒä¸€æ™‚(shÃ)刻åªå…許一組å串å£å’Œæ¯ä¸²å£é€šè¨Šï¼Œå·¥ä½œå串å£ç”±åœ°å€ç·šé¸æ“‡ã€‚單通é“工作模å¼é©ç”¨äºŽæ‰€æœ‰å¾žæ©Ÿ(jÄ«)ä¸éœ€è¦åŒæ™‚(shÃ)通訊,并且通訊éŽç¨‹å®Œå…¨ç”±ä¸»æ©Ÿ(jÄ«)控制的系統(tÇ’ng)ã€‚å¤šé€šé“æ¨¡å¼ä¸‹ï¼Œå„å䏲壿³¢ç‰¹çŽ‡ç›¸åŒï¼Œå…許所有å串å£åŒæ™‚(shÃ)與æ¯ä¸²å£é€šè¨Šï¼Œæ¯ä¸²å£ä»¥å䏲壿³¢ç‰¹çŽ‡çš„6å€å·¥ä½œã€‚發(fÄ)逿™‚(shÃ)由地å€ç·šé¸æ“‡ç”¨ä¾†ç™¼(fÄ)逿•¸(shù)據(jù)çš„å串å£ï¼›æŽ¥æ”¶æ™‚(shÃ)å串å£èƒ½ä¸»å‹•(dòng)響應(yÄ«ng)從機(jÄ«)發(fÄ)é€çš„æ•¸(shù)據(jù),å†ç”±æ¯ä¸²å£ç™¼(fÄ)é€çµ¦ä¸»æ©Ÿ(jÄ«)ï¼ŒåŒæ™‚(shÃ)由地å€ç·šè¿”回接收到數(shù)據(jù)çš„å串å£åœ°å€ï¼Œä¸»æ©Ÿ(jÄ«)在接收到å串å£é€ä¾†çš„æ•¸(shù)據(jù)åŽï¼Œå¯ä»¥æ ¹æ“š(jù)地å€ç·šçš„狀態(tà i)判斷數(shù)據(jù)是由哪一個(gè)從機(jÄ«)發(fÄ)é€çš„。
多通é“工作模å¼ä¸‹ï¼Œåœ¨é€²(jìn)行數(shù)據(jù)通訊å‰è¦å°èŠ¯ç‰‡é€²(jìn)行工作方å¼è¨(shè)置,包括串å£å¹€æ ¼å¼è¨(shè)置和通訊波特率è¨(shè)置。
  通éŽä¸²è¡Œå£å’ŒæŽ§åˆ¶å¼•腳相互é…åˆå¯å°èŠ¯ç‰‡é€²(jìn)行工作方å¼è¨(shè)置,引腳MS為0ã€ä¸”STADD2~STADD0為000時(shÃ)寫命令å—,引腳MS為1ã€STADD2~STADD0為000時(shÃ)讀命令å—。進(jìn)行工作方å¼è¨(shè)置時(shÃ)ï¼ŒèŠ¯ç‰‡çš„å¹€æ ¼å¼å’Œæ¯ä¸²å£å·¥ä½œæ³¢ç‰¹çŽ‡èˆ‡ä¸Šä¸€æ¬¡é€²(jìn)行數(shù)據(jù)通訊時(shÃ)一致;而復(fù)ä½åŽçš„å¹€æ ¼å¼ç‚º11bit,æ¯ä¸²å£æ³¢ç‰¹çŽ‡ç‚º7200bps。
  基于SP2338çš„ä¸²è¡Œå£æ“´(kuò)展
  SP2338是采用低功耗CMOS å·¥è—è¨(shè)計(jì)的通用異æ¥ä¸²è¡Œå£æ“´(kuò)展芯片,它å¯è¼•æ¾å°‡ä¸»æ©Ÿ(jÄ«)原有的1個(gè)ä¸²è¡Œå£æ“´(kuò)展æˆ3 個(gè)全新的全雙工串行å£ã€‚
  SP2338é©ç”¨äºŽ1個(gè)èµ·å§‹ä½ã€8個(gè)數(shù)據(jù)ä½ã€1個(gè)åœæ¢ä½çš„多串å£ç³»çµ±(tÇ’ng)ï¼Œä¹Ÿå°±æ˜¯èªªå…¶å¹€æ ¼å¼æ˜¯ä¸å¯ç·¨ç¨‹çš„。主機(jÄ«)é€šéŽæ”¹è®ŠADRI1ã€ADRI0地å€ç·šç‹€æ…‹(tà i)的方å¼é¸æ“‡3個(gè)å串å£ä¸çš„ä»»æ„一個(gè),3個(gè)å串å£çš„地å€åˆ†åˆ¥ç‚º00ã€01ã€10。地å€11用于執(zhÃ)行SP2338 芯片本身的復(fù)使Œ‡ä»¤0x35 或0xB5ã€ç¡çœ 指令0x55或0xD5ã€å»¶æ™‚(shÃ)指令0x00。å‘RX0~RX3ä¸çš„ä»»æ„一個(gè)接收端å£å¯«ä»»æ„數(shù)據(jù)å³å¯å°‡SP2338喚醒,但由于SP2338的喚醒時(shÃ)間需è¦25mså·¦å³ï¼Œæ•…用于芯片喚醒的數(shù)據(jù)將䏿œƒè¢«ä¸»æ©Ÿ(jÄ«)æŽ¥æ”¶ã€‚å› æ¤ï¼Œå¯ä»¥å…ˆç™¼(fÄ)é€ä¸€å€‹(gè)å—節(jié)數(shù)據(jù)用于喚醒芯片,延時(shÃ)25msåŽå³å¯é€²(jìn)行æ£å¸¸çš„æ•¸(shù)據(jù)傳輸。
  未使用的輸入端å£ï¼Œå¦‚RX0ã€RX1ã€RX2ç‰å¿…é ˆé€£æŽ¥åˆ°VCC;未使用的輸出端å£ï¼Œå¦‚TX0ã€TX1ã€TX2ç‰å¿…é ˆæ‡¸ç©ºï¼›æœªä½¿ç”¨çš„ADRI0ã€ADRI1å¿…é ˆé€£æŽ¥åˆ°GND。
  主機(jÄ«)收發(fÄ)數(shù)據(jù)時(shÃ)åº?yà n)椋è¤é³ˆC(jÄ«)TX3接收到一個(gè)å—節(jié)åŽæ‡‰(yÄ«ng)ç«‹å³è®€å–SP2338的輸出地å€ADRO0ã€ADRO1的狀態(tà i),判斷接收到的數(shù)據(jù)來自哪個(gè)å串å£ï¼›ä¸»æ©Ÿ(jÄ«)發(fÄ)逿•¸(shù)據(jù)時(shÃ),首先通éŽADRI0ã€ADRI1鏿“‡æŸä¸€å€‹(gè)å串å£ï¼Œå†å‘TX3寫將發(fÄ)é€çš„æ•¸(shù)據(jù)。
[align=center]

圖1 本文è¨(shè)計(jì)的擴(kuò)å±•ä¸²è¡Œå£æ–¹æ³•示æ„圖[/align]
本文è¨(shè)計(jì)的擴(kuò)展方法
  在電路è¨(shè)計(jì)çš„éŽç¨‹ä¸ï¼Œæœ¬æ–‡è¨(shè)計(jì)出一種é©åˆè‡ªå·±ç³»çµ±(tÇ’ng)需è¦ã€å°‡1個(gè)䏲壿“´(kuò)展為3個(gè)串å£çš„æ–¹æ¡ˆï¼Œå¦‚圖1所示。
  其ä¸ï¼Œ4001是四2輸入端或éžé–€ï¼Œ40106æ˜¯å…æ–½å¯†ç‰¹è§¸ç™¼(fÄ)器。4001çš„4腳和9腳分別為主機(jÄ«)çš„RXDå’ŒTXD,40106çš„2腳和9腳為å串å£çš„TXD0å’ŒRXD0,6腳和11腳為å串å£çš„TXD1å’ŒRXD1,4腳和13腳為å串å£çš„TXD2å’ŒRXD2。
ã€€ã€€æ ¹æ“š(jù)圖的連接方å¼å’Œé‚輯代數(shù)的推導(dÇŽo)å¯å¾—:RXD的狀態(tà i)ç‰äºŽ40106çš„9è…³ã€11è…³ã€13腳的狀態(tà i)相與。當(dÄng)40106çš„9è…³ã€11è…³ã€13è…³ä¸çš„ä»»æ„一個(gè)有數(shù)據(jù)信號時(shÃ),由于在異æ¥ä¸²è¡Œé€šè¨Šä¸ï¼Œç„¡æ•¸(shù)據(jù)傳輸時(shÃ)的引腳狀態(tà i)ç‚ºé«˜ï¼Œå› æ¤RXD上就能接收到有數(shù)據(jù)信號的那個(gè)引腳上的數(shù)據(jù)狀態(tà i)。40106çš„2è…³ã€4è…³ã€6腳的狀態(tà i)ç‰äºŽTXD的狀態(tà i),所以å¯ä»¥åˆ©ç”¨40106çš„2è…³ã€4è…³ã€6è…³åšç‚ºå串å£çš„TXD。
  這種è¨(shè)計(jì)方案é©ç”¨äºŽä¸»æ©Ÿ(jÄ«)åŒæ™‚(shÃ)å‘多個(gè)串行è¨(shè)備發(fÄ)逿•¸(shù)據(jù),而從è¨(shè)å‚™ä¸åŒæ™‚(shÃ)å‘主機(jÄ«)發(fÄ)逿•¸(shù)據(jù)的情æ³ã€‚å†å¢žåР幾個(gè)信號線,就å¯ä»¥å€(qÅ«)分出å‘哪一個(gè)從è¨(shè)備發(fÄ)逿•¸(shù)據(jù)ä»¥åŠæŽ¥æ”¶åˆ°çš„æ•¸(shù)據(jù)是來自哪一個(gè)從è¨(shè)備。在本文的系統(tÇ’ng)ä¸ï¼Œä¸»æ©Ÿ(jÄ«)是通信的發(fÄ)起者,接收到的數(shù)據(jù)來自哪個(gè)從è¨(shè)備是å¯ä»¥é (yù)çŸ¥çš„ï¼Œå› æ¤ï¼Œåªéœ€å†å¢žåŠ 3個(gè)控制從è¨(shè)備使能的信號線å³å¯ã€‚
幾種方法的比較
ã€€ã€€åœ¨éœ€è¦æ“´(kuò)展系統(tÇ’ng)çš„ä¸²è¡Œå£æ™‚(shÃ),使用多串行å£å–®ç‰‡æ©Ÿ(jÄ«)的方法是最容易想到的。由于串å£é›†æˆåœ¨å–®ç‰‡æ©Ÿ(jÄ«)å…§(nèi)éƒ¨ï¼Œå› æ¤è¨(shè)備體ç©è¼ƒå°ï¼ŒæŠ—干擾能力較高,但多串å£å–®ç‰‡æ©Ÿ(jÄ«)通常價(jià )æ ¼è¼ƒé«˜ï¼Œè€Œä¸”ï¼Œå¦‚æžœæ˜¯é–‹ç™¼(fÄ)人員所ä¸ç†Ÿæ‚‰çš„型號,還需è¦é–‹ç™¼(fÄ)äººå“¡é‡æ–°å¸(xué)ç¿’(xÃ)并購買與之é…套的開發(fÄ)工具,這延長了產(chÇŽn)å“的開發(fÄ)å‘¨æœŸï¼Œä¹Ÿå¢žåŠ äº†ç”¢(chÇŽn)å“的開發(fÄ)æˆæœ¬ã€‚
  軟件模擬法å 用的系統(tÇ’ng)資æºå°‘ã€æˆæœ¬ä½Žã€æ˜“于實(shÃ)ç¾(xià n)。但其采樣次數(shù)較低,難以ä¿è‰æ•¸(shù)據(jù)çš„æ£ç¢ºæ€§ï¼Œè€Œä¸”一般ä¸èƒ½æ¨¡æ“¬éŽé«˜çš„æ³¢ç‰¹çŽ‡ã€‚
ã€€ã€€å¹¶è¡Œå£æ“´(kuò)展䏲壿–¹æ³•的功能比較強(qiáng)大,能æä¾›MODEM控制信號ã€é€šè¨Šé€Ÿåº¦é«˜ï¼Œä½†æŽ§åˆ¶å¾©(fù)雜,å 用MCU的端å£è³‡æºè¼ƒå¤šï¼ŒåŒæ™‚(shÃ)價(jià )æ ¼ä¹Ÿè¼ƒé«˜ã€‚
ã€€ã€€åˆ©ç”¨ä¸²è¡Œå£æ“´(kuò)展串行å£ï¼ŒæŽ§åˆ¶ç°¡å–®ï¼Œèƒ½æœ€å¤§é™åº¦åœ°æ¸›å°‘控制線,ä¸éœ€è¦å 用太多的主機(jÄ«)系統(tÇ’ng)資æºï¼Œè€Œä¸”通用性強(qiáng),性能穩(wÄ›n)定,å¯ä¿è‰æ•¸(shù)據(jù)çš„æ£ç¢ºæ€§ã€‚GM812xçš„ä¸è¶³ä¹‹è™•åœ¨äºŽï¼šä¸æ»¿è¶³è¶…低功耗應(yÄ«ng)ç”¨è¦æ±‚ï¼›å¤šé€šé“æ¨¡å¼ä¸‹ï¼Œæ‰€æœ‰å串å£å·¥ä½œæ³¢ç‰¹çއåªèƒ½è¨(shè)ç½®æˆçµ±(tÇ’ng)一值,ä¸é©ç”¨äºŽå„從機(jÄ«)工作波特率ä¸ä¸€è‡´ã€åˆè¦æ±‚åŒæ™‚(shÃ)工作的系統(tÇ’ng)。SP2338é›–ç„¶èƒ½æ»¿è¶³ä½ŽåŠŸè€—çš„è¦æ±‚,但其å䏲壿³¢ç‰¹çŽ‡ä¹Ÿéœ€è¦è¨(shè)置為統(tÇ’ng)一值,并且ä¸èƒ½å°æ•¸(shù)據(jù)å¹€æ ¼å¼ç·¨ç¨‹ï¼Œæœ€é«˜æ³¢ç‰¹çŽ‡ä¹Ÿåªæœ‰9600bps。
  本文æå‡ºçš„æ–¹æ³•ä¸ï¼Œå„個(gè)å串å£çš„串行特性和æ¯ä¸²å£ç›¸åŒï¼Œä½¿ç”¨ç°¡å–®ï¼Œå 用系統(tÇ’ng)資æºå°‘,易于控制(最少2個(gè)控制信號擴(kuò)展3個(gè)串å£ï¼‰ï¼Œç©©(wÄ›n)å®šæ€§å¥½ã€‚å…¶åŠŸè€—å–æ±ºäºŽ4001å’Œ40106,它們的功耗都在mAç´šã€‚å…¶æœ€é«˜æ³¢ç‰¹çŽ‡å–æ±ºäºŽ4001å’Œ40106的響應(yÄ«ng)速度,4001å’Œ40106的最大響應(yÄ«ng)延鲿˜¯250ns,所以ç†è«–上最高波特率å¯é”(dá)4Mbpsã€‚æ¤æ–¹æ³•已經(jÄ«ng)æˆåŠŸåœ°æ‡‰(yÄ«ng)用于三表é (yuÇŽn)傳系統(tÇ’ng)。該方法的缺點(diÇŽn)是,它ä¸èƒ½ç”¨äºŽå¾žæ©Ÿ(jÄ«)工作波特率ä¸ä¸€è‡´ã€åˆè¦æ±‚åŒæ™‚(shÃ)工作的系統(tÇ’ng)。
çµ(jié)語
  本文è¨(shè)計(jì)了一種擴(kuò)展串å£çš„æ–¹æ³•以解決在實(shÃ)際應(yÄ«ng)用ä¸é‡åˆ°çš„主機(jÄ«)串行å£è³‡æºä¸è¶³çš„å•題,目å‰è©²æ–¹æ³•已經(jÄ«ng)æˆåŠŸåœ°æ‡‰(yÄ«ng)用于三表é (yuÇŽn)傳系統(tÇ’ng)ä¸ã€‚在解決這個(gè)å•題的éŽç¨‹ä¸ï¼Œæœ¬æ–‡ä¹Ÿå°å…¶ä»–解決方案進(jìn)行了比較。