一. 前言
世平集团针对 RS485 相关技术整理了一系列博文,下图为详细的博文索引架构;笔者希望能够透过这些博文协助大家更了解如何在 i.MX8 相关平台上使用 RS485,未来笔者也会持续更新此系列的相关博文还恳请支持!而本篇博文会针对 RS485 相关技术索引架构中的【ATU Book-i.MX8 系列-RS485】NXP i.MX8MQ 之使用 RS485 与 PC 传输资料实作 ( 上 ) 这篇文章做介绍。文章中会提及一些 RS485 Transceiver IC 的运作原理,看完本篇文章后可以了解到如何在 i.MX8MQ 平台上使用 RS485 相关元件,再来让我们继续看下去吧!
二. RS485 概述
在电子领域中有很多通讯方式,像是 UART ( Universal Asynchronous Receiver/Transmitter ) 就是一种通讯方式。我们于网路上可以找到许多文章在解释 UART 与 RS485 的关系,以下是笔者觉得叙述很棒的部分在此借镜引用出来供各位参考:( 参考自 [6] )
(1) UART 是 Interface
可想像为公车站,它的工作就是负责派车 / 发车等事宜;所以 UART 就是用来收发资料到板端的界面。
(2) RS485 是电器协议标准
可想像为公路,而在公路上就要遵守公路的交通规则;像高速公路就有高速公路自己的规则、平路就有平路自己的规则;而 RS485 就像公路一样,能将资料传递到另一端的界面。
举个例子:
可以先把 UART 想成我们开发板上的 Interface;现在如果我有两片开发板,那这两片开发板之间要如何互相传递资料呢? 我们可以透过 RS485 ( EIA-485 ) 电器协议标准,来做到资料传输。
下图示意图描述了两个 Device 之间,如何透过 RS485 协议传递讯息。
下图示意图描述了两个 Device 之间,如何透过 RS485 协议传递讯息。
RS485 是由 TIA ( Telecommunications Industry Association ) 与 EIA ( Electronic Industries Alliance ) 发布的一项电器协议标准。而电器协议标准除了 RS485 ( EIA-485 ) 之外,还有 RS232 ( EIA-RS-232 ) 及 RS422 ( EIA-422 ) 等电器协议标准。
一般来说我们较常听到以及使用的通常是 RS232 这个电器协议标准。那 RS232 与 RS485 这些电器协议标准之间的差异是“电气特性”以及“物理特性”的规定不同。
RS485 它的特性大概有以下几点:
一般来说我们较常听到以及使用的通常是 RS232 这个电器协议标准。那 RS232 与 RS485 这些电器协议标准之间的差异是“电气特性”以及“物理特性”的规定不同。
RS485 它的特性大概有以下几点:
(1) 可以在电子杂讯的环境下,进行长距离的通讯。
(2) 资料传输方式为半双工 ( 允许 2 装置之间做双向资料的传输 ),值得一提的是同一时间内,只允许 1 个装置做资料传送。
(3) 电气特性规定为 2 线式。使用差分讯号来传递讯息。( 这 2 个信号的振幅相同、相位相反 )
(2) 资料传输方式为半双工 ( 允许 2 装置之间做双向资料的传输 ),值得一提的是同一时间内,只允许 1 个装置做资料传送。
(3) 电气特性规定为 2 线式。使用差分讯号来传递讯息。( 这 2 个信号的振幅相同、相位相反 )
而 RS485 可以允许连接多个装置,大多使用在工业控制相关领域;因为差分讯号的关系 RS485 具有抗干扰能力强、可以有效抑制 EMI ( 电磁干扰 )、时序定位准确等优点。透过本篇文章可以了解到如何在 i.MX8MQ 平台上使用 RS485 相关元件。( 文章中会涉及一些 RS485 Transceiver IC 元件运作原理 ) 后续笔者也会再撰写其他文章,例如实作“在 i.MX8MQ 平台上使用 RS485 电器协议标准并进行资料传输”还恳请继续关注相关系列博文。
三. 让 i.MX8MQ 平台支援使用 RS485 协议
a. i.MX8MQ 平台与 RS485 关系
NXP i.MX8 系列的平台有很多 ( 包含有 i.MX8QXP、i.MX8M Plus、i.MX8M Mini、i.MX8MQ 等平台 ),从 Reference Manual 中可以发现只有 i.MX8MQ 与 i.MX8M Mini 这 2 个平台的 Reference Manual 中才有提及到关于 RS485 的相关字眼。( 碍于著作权关系这里不列出详细资讯 )
值得一提的是公板线路 Default 没有上件 RS485 Transceiver IC,若要在 i.MX8MQ 与 i.MX8M Mini 等平台上使用 RS485 来传输资料,还需上件 RS485 Transceiver IC。有鉴于此,本篇文章将使用世平集团自制的开发板 OP-Doflamingo 作为实验平台,上面会添加 RS485 相关线路来达成使用 RS485 协议的目标。
b. SP3088E 硬体相关介绍
本篇文章使用世平集团自制的开发板 OP-Doflamingo 作为目标实验平台,搭载的 SOC 是 i.MX8MQ;而在 i.MX8MQ 这个平台上总共有 4 组 UART,本篇文章将会把第 2 组 UART ( UART2 ) 拿来作为 RS485 的资料传输界面,主要就是在线路上增加 RS485 相关线路来达成使用 RS485 协议的目标。( 相关线路如下 )
以此线路而言,主要是透过 SP3088E 这个 IC 来协助我们达成转换 RS485 讯号的目的。平台需要给它 3 根 Pin ( UART 的 RX / TX 与 1 根 GPIO ),在使用过程中需要控制此根 GPIO 才能使电路顺利运作。
以下会对 SP3088E 这颗元件做简单叙述:( 资料来自 SP3088E Datasheet [11] 碍于著作权的关系这里只会粗略对运作原理做解释,若要了解更多细节请自行参阅 Datasheet )
(1) 此元件共有 8 根 Pin 脚,需要将 RO / RE / DE / DI 接到 SOC。( RE / DE 可用同 1 根 GPIO 做控制 )
以下针对较重要的控制 Pin 脚做粗略解释:
① RO 脚为 Receiver Output 的简称,主要就是把对方传来的资料做输出。当 RE 脚为 Low 才有作用。
② RE 脚为 Receiver Output Enable 的简称。当 RE 脚为 Low 时,RO 脚才会动作。
③ DE 脚为 Driver Output Enable 的简称。当 DE 脚为 High 时,才能透过 A / B 脚输出讯号。
(2) 透过 SP3088E 传输资料时,须将 DE ( Driver Output Enable ) 拉 High。
(3) 透过 SP3088E 接收资料时,须将 RE ( Receiver Output Enable ) 拉 Low。
总结一下,我们使用 1 根 GPIO Pin 来控制 SP3088E 元件的 DE ( Driver Output Enable ) 脚与 RE ( Receiver Output Enable ) 脚,当 GPIO 讯号为 High 的时候,可以把 OP-Doflamingo ( i.MX8MQ ) 开发板 TX 的资料送出去;当 GPIO 讯号为 Low 的时候,OP-Doflamingo ( i.MX8MQ ) 开发板的 RX 可以拿到资料。
c. i.MX8MQ 平台 与 PC 间透过 RS485 传递资料的架构
以下为本篇文章的系统架构图;此图叙述了板端 ( OP-Doflamingo ) 与 PC 端使用 RS485 协议做资料传输的样貌。
透过以上架构图,我们可以得知以下讯息:
(1) 从板端 ( OP-Doflamingo ) 的 TX 传送资料到 PC 端的路线为何。
(2) 从 PC 端送资料到板端 ( OP-Doflamingo ) 的 RX,传送资料的路线为何。
(3) 也可以透过架构图得知,若要在 i.MX8MQ 相关平台使用 RS485 功能还需加装 RS485 Transceiver IC 才能达成目的。
(2) 从 PC 端送资料到板端 ( OP-Doflamingo ) 的 RX,传送资料的路线为何。
(3) 也可以透过架构图得知,若要在 i.MX8MQ 相关平台使用 RS485 功能还需加装 RS485 Transceiver IC 才能达成目的。
四. 结语
本篇博文以世平集团自制的开发板 OP-Doflamingo 为例,示范了在 i.MX8MQ 等系列板子上加装 RS485 相关 Transceiver IC。后续笔者会再撰写一篇博文来示范 i.MX8MQ 开发板与 PC 透过 RS485 协议互相传递资料,再请各位读者到大大通搜寻【ATU Book-i.MX8 系列-RS485】NXP i.MX8MQ 之使用 RS485 与 PC 传输资料实作 ( 下 )。希望各位读者看完此篇文章后可以对 i.MX8 系列平台使用 RS485 相关元件会有更深刻的体会,假设读者们实作过程中有遇到任何问题也欢迎随时找世平集团一起讨论。
五. 参考文件
[1] https://zh.wikipedia.org/wiki/UART
[2] https://zh.wikipedia.org/wiki/USB
[3] https://en.wikipedia.org/wiki/RS-485
[4] https://zh.wikipedia.org/wiki/EIA-485
[5] https://zh.wikipedia.org/wiki/EIA-422
[6] https://codertw.com/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80/586303/
[7] https://www.itread01.com/content/1546130883.html
[8] https://makerpro.cc/2020/01/uart-part3/
[9] https://zh.wikipedia.org/wiki/%E9%9B%99%E5%B7%A5
[10] https://zh.wikipedia.org/wiki/%E5%B7%AE%E5%88%86%E4%BF%A1%E5%8F%B7
[11] https://www.maxlinear.com/ds/sp3082e_sp3083e_sp3084e_sp3085e_sp3088e.pdf
[2] https://zh.wikipedia.org/wiki/USB
[3] https://en.wikipedia.org/wiki/RS-485
[4] https://zh.wikipedia.org/wiki/EIA-485
[5] https://zh.wikipedia.org/wiki/EIA-422
[6] https://codertw.com/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80/586303/
[7] https://www.itread01.com/content/1546130883.html
[8] https://makerpro.cc/2020/01/uart-part3/
[9] https://zh.wikipedia.org/wiki/%E9%9B%99%E5%B7%A5
[10] https://zh.wikipedia.org/wiki/%E5%B7%AE%E5%88%86%E4%BF%A1%E5%8F%B7
[11] https://www.maxlinear.com/ds/sp3082e_sp3083e_sp3084e_sp3085e_sp3088e.pdf
评论