本應用筆記涵蓋了在MxTNI?上開發串行應用的硬件和軟件方面。在某些情況下必須使用特殊方法。本應用筆記討論了其中的每一個,以及它們與內部和外部串行端口的關系。還包括關于使用外部串行端口所需硬件的討論。
介紹
許多設備使用串行端口作為與其他電子設備通信的手段 - 從個人計算機和調制解調器等非常著名的示例到制造和工業自動化設備。事實上,對于許多人來說,串行端口提供了與外界通信的唯一機制。這些設備沒有直接參與更大的計算機網絡的手段。因此,彌合串行設備與聯網主機之間的通信鴻溝是Maxim微型網絡接口(MxTNI)技術最受歡迎的應用之一。本應用筆記涵蓋了在MxTNI上開發串行應用的硬件和軟件方面。
MxTNI 主板型號 390 (TBM390) 的 MxTNI 運行時環境最多可以支持四個串行端口。MxTNI 板 400 型 (TBM400) 支持五個串行端口。串行端口通過 指定。、 使用的 UART 集成在 MxTNI 的微控制器中,稱為“內部”串行端口。UART使用的UART需要一個專用的外部雙UART芯片。這些被稱為“外部”串行端口。
內部串行端口
由于 serial0、serial1 和 serial4 使用內部 UART,因此它們的效率更高。內部串行端口驅動程序不必執行幾乎那么多的工作即可從UART加載或卸載數據。但是,內部串行端口在配置選項方面受到一定限制。支持的串行字符配置包括:
8 個數據位,1 個停止位,無奇偶校驗(默認)
8 個數據位,1 個停止位,具有奇偶校驗(僅奇數/偶數)
7 個數據位,2 個停止,無奇偶校驗
7 個數據位,1 個停止,具有奇偶校驗(僅奇數/偶數)
如果使用內部端口,則無法使用僅使用 5 或 6 個數據位或 1.5 個停止位的配置。然而,這很少引起實際關注。列出的選項允許內部端口與最常見的串行設備通信。內部端口還支持 XON/XOFF 流量控制。但是,一組硬件握手線在所有內部端口之間共享。這意味著一次只有一個端口可以使用 RTS/CTS 流量控制。默認情況下,serial0 不擁有硬件握手信號。使用 TINIOS 1.0x,可以使用類中定義的方法更改此所有權。TINIOS 1.1x 應用程序必須使用 setSerial 方法作為第一個參數。
public static boolean setRTSCTSFlowControlEnable(int portNumber, boolean enable) throws UnsupportedCommOperationException public static int setSerial(int cmd, int port, boolean arr) throws UnsupportedCommOperationException
端口號必須指定一個內部串行端口(0、1 或 4)。如果是,則硬件握手信號將專用于用作指定串行端口的硬件握手信號。如果是,則信號可以自由地作為通用TTL I/O與類一起使用。
使用 時還需要記住幾點。首先,默認情況下專用于與外部1-Wire?線路驅動器通信的任務。如果您的MxTNI硬件實現不需要(或支持)使用外部1-Wire適配器,則可以回收使用通用串行端口。要在 TINIOS 1.0x 中重寫 的默認用法,應用程序必須調用類中定義的方法。對于 TINIOS 1.1x,應使用該方法,并將 作為第一個參數。
public static final void enableSerialPort1() public static int setSerial(int cmd, int port, boolean arr) throws UnsupportedCommOperationException
此選項在系統引導后仍然存在。如果使用TBM390,則還需要禁用DS2480B 1-Wire驅動器。這是通過將信號接地(SIMM 連接器的引腳 26)來實現的。關于 ,要記住的另一件事是,它不支持低于 2400bps 的任何數據速率。與現代串行設備通信時,這通常不是問題。EN2480serial1
外部串行端口
在使用外部串行端口之前,必須添加必要的硬件。外部串行端口由五個模塊組成:DUART、RS-232電平轉換器、中斷電路、解碼邏輯和一組去耦電容。下圖顯示了可與 E10 插座板一起使用的每個模塊的一些示例電路。還包括用于這些電路的材料清單。
圖1.解碼電路。
圖2.去耦電容器。
圖3.中斷電路。
圖4.DUART 和 RS-232 驅動程序。
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 允許使用外部串行驅動程序。由 建立的設置在系統引導期間保持不變。
外部串行驅動程序允許靈活地將外部UART硬件映射到MxTNI的內存空間。外部 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)。地址是指內存映射中使用的基本(或最低)地址。由 建立的設置在重新啟動后仍然存在。
最后,如果內部串行端口的可能配置受到限制,則外部串行端口支持可以使用 Java? 通信 API 實現的所有配置,但 XON/XOFF 流控制除外。
MxTNI 運行時環境,以及slushserial0
在開發使用串行通信的應用程序時,還需要記住其他一些事項。當MxTNI啟動時,它以115,200bps的數據速率傳輸進度消息。這可能會導致某些嵌入式串行設備混淆,因為數據是未經請求的,并且傳輸速度可能與設備配置為接收數據的速度不同。TINIOS 1.0x 應用程序可以使用類中的方法禁用引導進度消息。TINIOS 1.1x 應用程序必須使用該方法。
public static final void setSerialBootMessagesState(boolean on) public static int setSerial(int cmd, int port, boolean arr) throws UnsupportedCommOperationException
串行啟動消息狀態在系統啟動期間是持久的。
MxTNI 的默認外殼 也用于傳輸狀態消息并允許用戶登錄。要禁用串行服務器并防止 slush 在啟動過程中抖動,應從文件中刪除行 “”。這將防止在 上喋喋不休。如果希望能夠在不禁用 的串行服務器的情況下使用,則可以在類中使用該方法。
public static void setConsoleOutputEnabled(boolean set)
使用 equal to 調用此方法將指示以靜默方式啟動,以免干擾可能連接到的任何設備。
最后要注意的是,不需要采取任何特殊操作來強制 的串行服務器釋放,以便另一個應用程序可以訪問它。每當另一個應用程序請求時,將自動放棄其所有權。只需確保在嘗試打開端口時指定足夠的超時值(五秒通常足夠大)。
結論
除了這里提到的幾種方法外,MxTNI上的所有串行端口編程都可以使用Java Communications API中定義的技術來完成。這為開發人員提供了一種使用MxTNI構建串行應用程序的簡單標準方法。這些應用程序將允許MxTNI與各種串行設備連接,包括那些從未打算成為更大網絡一部分的設備。
審核編輯:郭婷
-
微控制器
+關注
關注
48文章
7487瀏覽量
151045 -
調制解調器
+關注
關注
3文章
850瀏覽量
38774 -
uart
+關注
關注
22文章
1227瀏覽量
101171
發布評論請先 登錄
相關推薦
評論