本应用笔记涵盖了在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与各种串行设备连接,包括那些从未打算成为更大网络一部分的设备。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !