本應(yīng)用筆記涵蓋了在MxTNI?上開發(fā)串行應(yīng)用的硬件和軟件方面。在某些情況下必須使用特殊方法。本應(yīng)用筆記討論了其中的每一個,以及它們與內(nèi)部和外部串行端口的關(guān)系。還包括關(guān)于使用外部串行端口所需硬件的討論。
介紹
許多設(shè)備使用串行端口作為與其他電子設(shè)備通信的手段 - 從個人計算機和調(diào)制解調(diào)器等非常著名的示例到制造和工業(yè)自動化設(shè)備。事實上,對于許多人來說,串行端口提供了與外界通信的唯一機制。這些設(shè)備沒有直接參與更大的計算機網(wǎng)絡(luò)的手段。因此,彌合串行設(shè)備與聯(lián)網(wǎng)主機之間的通信鴻溝是Maxim微型網(wǎng)絡(luò)接口(MxTNI)技術(shù)最受歡迎的應(yīng)用之一。本應(yīng)用筆記涵蓋了在MxTNI上開發(fā)串行應(yīng)用的硬件和軟件方面。
MxTNI 主板型號 390 (TBM390) 的 MxTNI 運行時環(huán)境最多可以支持四個串行端口。MxTNI 板 400 型 (TBM400) 支持五個串行端口。串行端口通過 指定。、 使用的 UART 集成在 MxTNI 的微控制器中,稱為“內(nèi)部”串行端口。UART使用的UART需要一個專用的外部雙UART芯片。這些被稱為“外部”串行端口。
內(nèi)部串行端口
由于 serial0、serial1 和 serial4 使用內(nèi)部 UART,因此它們的效率更高。內(nèi)部串行端口驅(qū)動程序不必執(zhí)行幾乎那么多的工作即可從UART加載或卸載數(shù)據(jù)。但是,內(nèi)部串行端口在配置選項方面受到一定限制。支持的串行字符配置包括:
8 個數(shù)據(jù)位,1 個停止位,無奇偶校驗(默認)
8 個數(shù)據(jù)位,1 個停止位,具有奇偶校驗(僅奇數(shù)/偶數(shù))
7 個數(shù)據(jù)位,2 個停止,無奇偶校驗
7 個數(shù)據(jù)位,1 個停止,具有奇偶校驗(僅奇數(shù)/偶數(shù))
如果使用內(nèi)部端口,則無法使用僅使用 5 或 6 個數(shù)據(jù)位或 1.5 個停止位的配置。然而,這很少引起實際關(guān)注。列出的選項允許內(nèi)部端口與最常見的串行設(shè)備通信。內(nèi)部端口還支持 XON/XOFF 流量控制。但是,一組硬件握手線在所有內(nèi)部端口之間共享。這意味著一次只有一個端口可以使用 RTS/CTS 流量控制。默認情況下,serial0 不擁有硬件握手信號。使用 TINIOS 1.0x,可以使用類中定義的方法更改此所有權(quán)。TINIOS 1.1x 應(yīng)用程序必須使用 setSerial 方法作為第一個參數(shù)。
public static boolean setRTSCTSFlowControlEnable(int portNumber, boolean enable) throws UnsupportedCommOperationException public static int setSerial(int cmd, int port, boolean arr) throws UnsupportedCommOperationException
端口號必須指定一個內(nèi)部串行端口(0、1 或 4)。如果是,則硬件握手信號將專用于用作指定串行端口的硬件握手信號。如果是,則信號可以自由地作為通用TTL I/O與類一起使用。
使用 時還需要記住幾點。首先,默認情況下專用于與外部1-Wire?線路驅(qū)動器通信的任務(wù)。如果您的MxTNI硬件實現(xiàn)不需要(或支持)使用外部1-Wire適配器,則可以回收使用通用串行端口。要在 TINIOS 1.0x 中重寫 的默認用法,應(yīng)用程序必須調(diào)用類中定義的方法。對于 TINIOS 1.1x,應(yīng)使用該方法,并將 作為第一個參數(shù)。
public static final void enableSerialPort1() public static int setSerial(int cmd, int port, boolean arr) throws UnsupportedCommOperationException
此選項在系統(tǒng)引導(dǎo)后仍然存在。如果使用TBM390,則還需要禁用DS2480B 1-Wire驅(qū)動器。這是通過將信號接地(SIMM 連接器的引腳 26)來實現(xiàn)的。關(guān)于 ,要記住的另一件事是,它不支持低于 2400bps 的任何數(shù)據(jù)速率。與現(xiàn)代串行設(shè)備通信時,這通常不是問題。EN2480serial1
外部串行端口
在使用外部串行端口之前,必須添加必要的硬件。外部串行端口由五個模塊組成:DUART、RS-232電平轉(zhuǎn)換器、中斷電路、解碼邏輯和一組去耦電容。下圖顯示了可與 E10 插座板一起使用的每個模塊的一些示例電路。還包括用于這些電路的材料清單。
圖1.解碼電路。
圖2.去耦電容器。
圖3.中斷電路。
圖4.DUART 和 RS-232 驅(qū)動程序。
Component | Description | Package |
C9–C13, C8, C16, C18, C19, C21–C25, C26, C31–C34 | 0.1μF | 1206 |
C14 | 22pF | 1206 |
C15 | 22pF | 1206 |
C17 | 470pF | 1206 |
J18, J19 | 10-pin, 0.1 center header connector | |
R4, R5, R21 | 10kΩ | 1206 |
R7 | 1.5kΩ | 1206 |
R8 | 1MΩ | 1206 |
U2 | 74AC02 | 14-pin SO |
U3 | 74AC32 | 14-pin SO6 |
U6, U9 | DS229 | 20-pin TSSOP |
U7 | National | DS14C89A |
U8 | National PC16552D | 44-PLCC |
U10 | 74AC138 | 16-pin SO |
Y1 | 3.6864MHz | HC49 |
添加硬件后,必須使用類中的方法(TINIOS 1.0x)或方法(TINIOS 1.1x)啟用外部串行端口。
public static void setExternalSerialPortEnable(int portNum, boolean enable) public static int setSerial(int cmd, int port, boolean arr) throws UnsupportedCommOperationException
端口號必須指定其中一個外部端口(2 或 3)。啟用值 true 允許使用外部串行驅(qū)動程序。由 建立的設(shè)置在系統(tǒng)引導(dǎo)期間保持不變。
外部串行驅(qū)動程序允許靈活地將外部UART硬件映射到MxTNI的內(nèi)存空間。外部 UART 的默認基址為 0x380020??梢允褂?中的方法 (TINIOS 1.0x) 或 setSerial 方法 (TINIOS 1.1x) 覆蓋此位置。
public static void setExternalSerialPortAddress(int portNum, int address) public static int setSerial(int cmd, int port, boolean arr) throws UnsupportedCommOperationException
端口號必須指定其中一個外部端口(2 或 3)。地址是指內(nèi)存映射中使用的基本(或最低)地址。由 建立的設(shè)置在重新啟動后仍然存在。
最后,如果內(nèi)部串行端口的可能配置受到限制,則外部串行端口支持可以使用 Java? 通信 API 實現(xiàn)的所有配置,但 XON/XOFF 流控制除外。
MxTNI 運行時環(huán)境,以及slushserial0
在開發(fā)使用串行通信的應(yīng)用程序時,還需要記住其他一些事項。當(dāng)MxTNI啟動時,它以115,200bps的數(shù)據(jù)速率傳輸進度消息。這可能會導(dǎo)致某些嵌入式串行設(shè)備混淆,因為數(shù)據(jù)是未經(jīng)請求的,并且傳輸速度可能與設(shè)備配置為接收數(shù)據(jù)的速度不同。TINIOS 1.0x 應(yīng)用程序可以使用類中的方法禁用引導(dǎo)進度消息。TINIOS 1.1x 應(yīng)用程序必須使用該方法。
public static final void setSerialBootMessagesState(boolean on) public static int setSerial(int cmd, int port, boolean arr) throws UnsupportedCommOperationException
串行啟動消息狀態(tài)在系統(tǒng)啟動期間是持久的。
MxTNI 的默認外殼 也用于傳輸狀態(tài)消息并允許用戶登錄。要禁用串行服務(wù)器并防止 slush 在啟動過程中抖動,應(yīng)從文件中刪除行 “”。這將防止在 上喋喋不休。如果希望能夠在不禁用 的串行服務(wù)器的情況下使用,則可以在類中使用該方法。
public static void setConsoleOutputEnabled(boolean set)
使用 equal to 調(diào)用此方法將指示以靜默方式啟動,以免干擾可能連接到的任何設(shè)備。
最后要注意的是,不需要采取任何特殊操作來強制 的串行服務(wù)器釋放,以便另一個應(yīng)用程序可以訪問它。每當(dāng)另一個應(yīng)用程序請求時,將自動放棄其所有權(quán)。只需確保在嘗試打開端口時指定足夠的超時值(五秒通常足夠大)。
結(jié)論
除了這里提到的幾種方法外,MxTNI上的所有串行端口編程都可以使用Java Communications API中定義的技術(shù)來完成。這為開發(fā)人員提供了一種使用MxTNI構(gòu)建串行應(yīng)用程序的簡單標(biāo)準方法。這些應(yīng)用程序?qū)⒃试SMxTNI與各種串行設(shè)備連接,包括那些從未打算成為更大網(wǎng)絡(luò)一部分的設(shè)備。
審核編輯:郭婷
-
微控制器
+關(guān)注
關(guān)注
48文章
7932瀏覽量
154022 -
調(diào)制解調(diào)器
+關(guān)注
關(guān)注
3文章
873瀏覽量
39505 -
uart
+關(guān)注
關(guān)注
22文章
1275瀏覽量
103570
發(fā)布評論請先 登錄
串行端口監(jiān)控精靈是什么
串行端口完成COM端口和USB虛擬及嵌入式系統(tǒng)端口的應(yīng)用第二版應(yīng)用指南

使用MAXQ610微控制器上的串行端口
使用高速微型的串行端口

使用高速微型的串行端口

在設(shè)計中擴展串行端口的入門知識
在設(shè)計中擴展串行端口的入門知識分享

串行端口收發(fā)器的作用
什么是串行端口?有哪幾種分類?
在嵌入式設(shè)計中擴展串行端口的入門知識

評論