摘要: 本应用笔记涵盖了在MxTNI 上开发串行应用程序的硬件和软件方面。在某些情况下,必须使用特殊的方法。本应用笔记讨论了其中的每一个,以及它们与内部和外部串行端口的关系。还包括对利用外部串行端口所需的硬件的讨论。
MxTNI板型号390 (TBM390)的MxTNI运行时环境可以支持多达四个串行端口。MxTNI板型号400 (TBM400)支持5个串口。已指定串口serial0
通过serial4
. 使用的uartserial0
,serial1
,serial4
是集成在MxTNI的微控制器,并被称为“内部”串行端口。使用的uartserial2
和serial3
需要一个专用的外部双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,可以使用以下方法更改此所有权setRTSCTSFlowControlEnable
在类中定义com.dalsemi.system.TINIOS
. tinos 1.1x应用程序必须使用setSerial方法TINIOS。SERIAL_SET_RTSCTS_FLOW_CONTROL
作为第一个参数。
public static int setSerial(int cmd, int port, boolean arr)抛出UnsupportedCommOperationException
端口号必须指定内部串口(0、1或4)中的一个启用
是真正的
,硬件握手信号将被专用为指定串口的硬件握手信号。如果启用
是假
,这些信号可以免费使用com.dalsemi.system.BitPort
类作为通用TTL I/O。
在使用时,还有一些额外的要点需要记住serial1
. 首先,serial1
默认情况下,专用于与外部1-Wire 线路驱动器通信的任务。如果您的MxTNI硬件实现不需要(或支持)使用外部1-Wire适配器,serial1
可以回收用于通用串行端口。覆盖serial1
的默认用法,应用程序必须调用enableSerialPort1
方法中定义的com.dalsemi.system.TINIOS
类。对于TINIOS 1.1x一些
方法应使用,用蒂诺斯。SERIAL_SET_ENABLE
作为第一个参数。
enableSerialPort1 公共静态int setSerial(int cmd, int port, boolean arr)抛出UnsupportedCommOperationException
该选项在整个系统引导期间持续存在。如果您正在使用TBM390,您还需要禁用DS2480B 1-Wire驱动程序。这是通过接地来完成的EN2480
信号(SIMM连接器的26引脚)。另一件要记住的事情是serial1
它不支持任何低于2400bps的数据速率。当与现代串行设备通信时,这通常不是问题。
在使用外部串行端口之前,必须添加必要的硬件。外部串行端口由五个模块组成:DUART、RS-232电平移位器、中断电路、解码逻辑和一组去耦电容器。每个模块可与E10插座板一起使用的示例电路如下图所示。用于这些电路的材料清单也包括在内。
图1所示。解码电路。
图2。去耦电容。
图3。中断电路。
图4。DUART和RS-232驱动。
组件 | 描述 | 包 |
C9-c13、c8、c16、c18、c19、c21-c25、c26、c31-c34 | 0.1µF | 1206 |
碳 | 22 pf | 1206 |
C15 | 22 pf | 1206 |
C17 | 470 pf | 1206 |
J18, J19 | 10针,0.1中心头连接器 | |
R4 r5 r21 | 10 k欧姆 | 1206 |
R7 | 1.5 k欧姆 | 1206 |
R8 | 1米欧姆 | 1206 |
U2 | 74年ac02 | 14-pin所以 |
U3 | 74年ac32 | 14-pin SO6 |
U6, U9 | DS229 | 20-pin TSSOP |
得以 | 国家 | DS14C89A |
与 | 国家PC16552D | 44-PLCC |
U10 | 74年ac138 | 16-pin所以 |
日元 | 3.6864兆赫 | HC49 |
添加硬件之后,外部串行端口必须使用setExternalSerialPortEnable
方法(TINIOS 1.0x)或一些
方法(TINIOS 1.1x)com.dalsemi.system.TINIOS
类。
public static void setexternalserialporttenable (int portNum, boolean enable) public static int setSerial(int cmd, int port, boolean arr)抛出UnsupportedCommOperationException
端口号必须指定外部端口(2或3)中的一个。enable值为true表示使用外部串行驱动程序。建立的设置setExternalSerialPortEnable
跨系统引导持久化。
外部串行驱动程序允许将外部UART硬件映射到MxTNI的内存空间的灵活性。外部UART的默认基址是0x380020。方法覆盖此位置setExternalSerialPortAddress
方法(TINIOS 1.0x)或中的setSerial方法(TINIOS 1.1x)com.dalsemi.system.TINIOS
.
public static void setSerial(int cmd, int port, boolean arr)抛出UnsupportedCommOperationException
端口号必须指定外部端口(2或3)中的一个。地址是指内存映射中消耗的基址(或最低址)。建立的设置setExternalSerialPortAddress
在重启期间持久化。
最后,在内部串行端口可能的配置受到限制的情况下,外部串行端口支持使用Java Communications API可以实现的所有配置,XON/XOFF流控制除外。
泥浆
,serial0
在开发使用串行通信的应用程序时,还需要记住一些其他的事情。当MxTNI启动时,它发送进度消息serial0
数据速率为115200bps。这可能会导致某些嵌入式串行设备的混淆,因为数据是未经请求的,并且以可能与设备配置为接收数据的速度不同的速度传输。程序可以禁用引导进度消息setSerialBootMessagesState
课堂方法com.dalsemi.system.TINIOS
. tinos 1.1x应用程序必须使用一些
方法。
setSerialBootMessagesState(boolean on)公共静态int setSerial(int cmd, int port, boolean arr)抛出UnsupportedCommOperationException
串行引导消息状态在整个系统引导中是持久的。
MxTNI的默认shell,泥浆
,也使用serial0
传输状态消息并允许用户登录。禁用串行服务器,防止泥浆喋喋不休serial0
在启动过程中,行"setenv SerialServer启用
应该从.startup
文件。这将防止泥浆
从喋喋不休serial0
. 如果你想要使用的能力serial0
没有禁用泥浆
的串口服务器,可以使用setConsoleOutputEnabled
方法中的com.dalsemi.system.TINIOS
类。
setConsoleOutputEnabled(boolean set)
调用这个方法集
等于假
指示泥浆
静默引导,以免干扰任何可能连接的设备serial0
.
最后要注意的是,不需要采取特别行动来强制泥浆
要释放的串行服务器serial0
所以另一个应用程序可以访问它。每当另一个应用程序请求时serial0
,泥浆
将自动放弃其所有权。只要确保在尝试打开端口时指定足够的超时值(通常5秒就足够大了)。
除了这里提到的几个方法外,MxTNI上的所有串行端口编程都可以使用Java通信API中定义的技术来完成。这为开发人员提供了一种使用MxTNI构建串行应用程序的简单而标准的方法。这些应用程序将允许MxTNI与各种串行设备接口,包括那些从未打算成为大型网络一部分的设备。
社群二维码
关注“华强商城“微信公众号
Copyright 2010-2023 hqbuy.com,Inc.All right reserved. 服务热线:400-830-6691 粤ICP备05106676号 经营许可证:粤B2-20210308