1. 何谓串口?
串口几乎为所有计算机的装置通讯协议标准。请别与通用串行总线 (universal serial bus,usb) 产生混肴。大多数的计算机均配备 2 组 eia-232 架构的串行端口。串口亦为常见的通讯协议,适用于控制多种仪器设备,并可搭配 eia-232 通讯端口使用多款 gpib 兼容的装置。此外,用户可透过数据撷取的串口通讯功能,进而整合远程取样装置。请注意,eia-232 与 eia-485/422 亦可为所谓的 rs-232 与 rs-485/422。
串口通讯的概念极为简单。串行端口将同时传送并接收 1 个位 (bit) 的信息字节 (byte)。虽然此传输量低于并行通讯作业,却可传输完整的字节;适用于较长距离的通讯作业。以 ieee 488 规格的平行通讯作业为例,设备之间的接线总长度不得超过 20米(65英尺);任两组装置之间的长度不超过 2米(6.5英尺)。而串口却可达最长 1200米(4000英尺)。
一般情况下,工程师均使用串行传输 ascii 数据。并透过三种传输线完成通讯作业 - 接地线 (ground)、传送线 (transmit)与接收线 (receive)。由于串口属于异步化,因此串行端口可于其中 1 个信道传送数据,并于另 1 个信道接收数据。其他通道可视情况而进行握手(handshaking)。重要的串口特性为波特率 (baud rate)、数据位、停止位 (stop bit),与奇偶同位 (parity)。若要沟通两组通讯端口,则必须符合这些参数:
1、波特率 (baud rate) 为通讯的速度量测作业,显示每秒所传输的位数。举例来说,300 波特率即为每秒达 300个位。工程师所称的频率周期 (clock cycle) 即为波特率;若协议呼叫信号 (protocol call) 为 4800 波特率,意即频率为 4800 hz。亦表示串行端口以 4800 hz 的速率,进行数据信道的取样。常见的电话线路波特率为 14400、28800,与 33600。波特率当然可以大于上述这些数字,但这些速率将限制设备之间的距离。因此高波特率均用于装置距离相近的通讯作业,常见的即为 gpib 装置。
2、数据位数 (data bit),代表传输作业中的实际数据位。当计算机传送信息框架 (frame) 时,实际数据总数可能不满 8 位。框架的标准数值为 5、7,与 8 位。应根据所传输的信息,选择所需的设定。举例来说,标准 ascii 可为 0 ~ 127 的数值 (7 位)。延伸的 ascii 则使用 0 ~ 255 (8 位)。若传输中的数据为标准 ascii,则各个框架若能传送 7 位数据,即属高效率的通讯作业。1 个框架即为单一字节 (byte) 的传输,包含开始/停止 (start/stop) 位、数据位,与奇偶校验 (parity)。由于所选的通讯协议将影响实际位数,因此可使用“框架 (frame)”代表所有的范例。
停止位 (stop bit) 可针对单一框架的通讯作业末端发出信号。常见数值为 1、1.5,与 2 位。由于数据将受到跨信道的频率所影响,而各组装置又具有自己的频率,因此任 2 组装置可能会稍稍落后同步化作业。因此,停止位不仅可指出传输作业末端,并可为计算机频率速度提供发生错误的空间。停止位所占的位数越多,则不同频率的同步化越具弹性;但亦将拖慢传输速度。
3、奇偶校验 (parity) 为串口通讯作业错误检查的简易形式。奇偶校验具分为 4 种类型 – even、odd、marked,与 spaced。亦可不使用奇偶校验。针对 even 与 odd,串行端口将设定奇偶校验位 (parity bit,为数据位之后的最后 1 个位) 为 1 个数值,以确认该传输作业具有逻辑高位 (logic-high) 位的 even 或 odd 数。举例来说,若资料为 011,针对 even 奇偶校验的奇偶校验位则为 0,才能让逻辑高位位的数字为 even。在奇偶校验为 odd 的情况下,奇偶校验位「1」将导致「3」的逻辑高位位。marked 与 spaced 的奇偶校验将不会实际检查数据位,但会根据 marked 奇偶校验设定高的奇偶校验位,或根据 spaced 奇偶校验设定低的奇偶校验位。此将让接收装置了解位的状态,以进一步判定噪声是否使数据发生中断,或传送与接收装置是否尚未同步化。
2. eia-232 概述
eia-232 为 ibm 兼容计算机架构的串口链接功能,可用以连接计算机与传感器/调制解调器,或用于仪器控制等许多功能。eia-232 硬件可达最长 15 公尺的通讯距离。eia-232 限用于计算机串行端口与装置之间的点对点连结。因此,计算机往往需要额外的 eia-232 串行端口。标准计算机 eia-232 串行端口与许多串行接口的制造商,将试图平衡 win32 api 于串口通讯函数调用中的功能。win32 api 原来是设计用于调制解调器通讯作业,且并未建置完整的 eia-232 协议。基于此项限制,win32 api 并无法沟通某些装置。
ni 则提供多款平台的 eia-232 串行接口,包含 pci、usb、pcmcia、expresscard、pxi,与以太网络。根据所使用的平台,ni 串行接口卡提供 1、2、4、8,与 16 埠的版本。此外,ni eia-232 串行接口卡更提升了某些功能,如最高 1 mb/s 的高速波特率、透过 dma 传输方式而降低 cpu 使用率、可选购的 2000 v 埠对埠隔离,与可设定的非标准波特率。所有的 ni 串行接口卡均包含 ni-serial 驱动程序,可建置完整的 eia-232 协议,并针对应用开发作业提供简单易用的高阶功能。ni-serial 驱动程序可弥补 win32 api 的缺点,亦即任何 eia-232 架构的装置,均可搭配使用 ni 串口装置。
3. eia-422 概述
eia-422 为苹果公司麦金塔 (mac) 计算机的串口链接接口。与 eia-232 所使用的非平衡式信号 (unbalanced signal) 相较,eia-422 使用截然不同的电子信号。eia-422 的差动传输 (differential transmission),就是透过 2 组线路以各自进行信号的传输与接收,因此其抗扰性与传输距离的表现均优于 eia-232。在工业级应用中,抗扰性 (noise immunity) 与传输距离可享有较佳的优势。
ni 则提供多款平台的 eia-485/422 串行接口卡,包含 pci、usb、pcmcia、expresscard、pxi,与以太网络。根据所使用的平台,ni 串行接口卡具有 1、2、4,与 8 埠的版本。此外,ni eia-485/422 串行接口卡更新增了多项功能,如最高 3 mb/s 的高速波特率、透过 dma 传输方式而降低 cpu 使用率、可选购的 2000 v 埠对埠隔离,与可设定的非标准波特率。所有的 ni 串行接口卡均包含 ni-serial 驱动程序,可建置完整的 eia-485/422 协议,并针对应用开发作业提供简单易用的高阶功能。
4. eia-485 概述
eia-485 为 eia-422 的改良版本,从原本的 10 组装置提高至 32 组装置,并定义必要的电子特性参数,于最大负载保持适当的信号电压。透过增强的多端点 (multidrop) 功能,即可透过单一 eia-485 串行端口进行装置的网络链接作业。eia-485 的抗扰性与多端点功能,使其成为工业级应用的串口连结首选,适于将多款分布式装置连接至计算机或其他控制器,以进行于数据搜集、hmi,与其他作业。eia-485 集 eia-422 的优点于一身,因此所有的 eia-422 装置亦可由 eia-485 进行控制。透过 eia-485 硬件,串口通讯作业可达最长 1200米(4000英尺)的连接线总长度。
ni 则提供多款平台的 eia-485/422 串行接口卡,包含 pci、usb、pcmcia、expresscard、pxi,与以太网络。根据所使用的平台,ni 串行接口卡具有 1、2、4,与 8 埠的版本。此外,ni eia-485/422 串行接口卡更新增了多项功能,如最高 3 mb/s 的高速波特率、透过 dma 传输方式而降低 cpu 使用率、可选购的 2000 v 埠对埠隔离,与可设定的非标准波特率。所有的 ni 串行接口卡均包含 ni-serial 驱动程序,可建置完整的 eia-485/422 协议,并针对应用开发作业提供简单易用的高阶功能。
5. ni 串行接口卡接头的输出针脚 (pinout)
db-9 male
db-25 male
10-position modular jack
pin
eia-232
eia-485/422
pin
eia-232
eia-485/422
pin
eia-232
eia-485/422
1
dcd
gnd
2
txd
rts+ (hso+)
1
no connect
no connect
2
rxd
cts+ (hsi+)
3
rxd
cts+ (hsi+)
2
ri
txd-
3
txd
rts+ (hso+)
4
rts
rts- (hso-)
3
cts
txd+
4
dtr
rxd+
5
cts
txd+
4
rts
rts- (hso-)
5
gnd
rxd-
6
dsr
cts- (hsi-)
5
dsr
cts- (hsi-)
6
dsr
cts- (hsi-)
7
gnd
rxd-
6
gnd
rxd-
7
rts
rts- (hso-)
8
dcd
gnd
7
dtr
rxd+
8
cts
txd+
20
dtr
rxd+
8
txd
rts+ (hso+)
9
ri
txd-
22
ri
txd-
9
rxd
cts+ (hsi+)
-
-
-
-
-
-
10
dcd
gnd
6. 何谓握手 (handshaking)?
此 eia-232 通讯作业,可进行 3 种线路的简易链接作业 - tx、rx,与接地。然而,针对所要传输的数据,其2端均需以相同波特率进行数据的频率化 (clocking)。虽然此方式适用于大多数的应用,此功能却受限于系统对问题的反应速度,如发生过载 (overloaded) 的接收器。而串口握手 (handshaking) 可协助解决相关问题。3 种最常见的 eia-232 握手形式,即为软件握手、硬件握手,与 xmodem。
软件握手
此方式是将数据字节作为控制字符 (control character),近似于 gpib 使用命令字符串 (command string) 的方式。由于控制字符可透过传输线路,如正常数据般进行传输,因此亦可整合 tx、rx,与接地而成简易的 3 线式集合。透过 setxmode 函式,即可启用或停用 2 个控制字符:xon 与 xoff。数据接收器将传送这些字符,以于通讯期间暂停传送器。
此方式的最大缺点,也是最重要的概念:数据值将不再使用 decimal 17 与 19。由于这些数值为无字符 (noncharacter) 数值,因此往往不会影响 ascii 的传输作业;然而,若以二进制法传输数据,则极可能将这些数值作为数据进行传输,导致传输作业发生错误。
硬件握手
此方式将使用实际的硬件线路。如同 tx 与 rx 线路一般,rts/cts 与 dtr/dsr 线路可搭配使用。若其中 1 个线路为输出,则另 1 个线路即为输入。
第一种线路集为 rts (request to send) 与 cts (clear to send)。当接收器可接收资料时,则将插入 (assert) rts 线路,表示接收器已可接收资料。接着将由 cts 输入线路的传送器读取此讯息,表示已可传送数据。
第二种线路集为 dtr (data terminal ready) 与 dsr (data set ready)。由于此种线路可让串行端口与调制解调器之间通讯现有状态,因此主要用于调制解调器的通讯作业。举例来说,当调制解调器可为计算机传送数据时,将先中断 dtr 线路,代表目前是透过电话线进行链接作业。接着 dsr 线路将读取该讯息,计算机则开始传送数据。在一般情况下,dtr/dsr 线路是用以表示系统可进行通讯作业,而 rts/cts 线路则用于独立的数据框架。
在 labwindows/cvi 中,setctsmode 函式将启用或停用硬件握手。若已启用 cts 模式,则 labwindows/cvi 将依循下列规则:
计算机传送数据时:
eia-232 函式库必须于传送数据之前,侦测该 cts 线路为高 (high) 状态。
计算机接收数据时:
若通讯端口为开启状态,且输入队列具有容纳数据的空间,则函式库将引发 (raise) rts 与 dtr。
若通讯端口输入队列已达 90%,则函式库将降低 rts 并提升 dtr。
若通讯端口输入队列近乎空白,则函式库将引发 rts 并保持 dtr 为高状态。
若通讯端口为关闭,则函式库将降低 rts 与 dtr。
xmodem 握手
虽然此种协议已普遍用于调制解调器通讯作业,若其他装置均可使用此种协议,仍可直接于装置之间使用 xmodem 协议。在 labwindows/cvi 中,使用者可选择是否隐藏实际的 xmodem 建置。只要计算机透过 xmodem 协议连接其他装置,即可使用 labwindows/cvi 的 xmodem 函式,以传送档案至其他地址 (site)。该函式为 xmodemconfig、xmodemsend,与 xmodemreceive。
根据下列参数使用协议:start_of_data、end_of_trans、neg_ack、ack、wait_delay、start_delay、max_tries,与 packet_size。传输数据的 2 边必须同时认可这些参数,而 xmodem 则提供相关标准定义。然而,使用者可透过 labwindows/cvi 中的 xmodemconfig 函式修改这些参数,以符合任何需求。在接收器 (receiver) 传送 neg_ack 字符之后,即可于 xmodem 中使用这些参数。此字符将告诉传送器 (sender) 已准备好接收资料。于每次传输尝试之间,接收器均将使用 start_delay 时间,直到满足 max_tries 或接收到传送器的 start_of_data。若满足 max_tries,则接收器将提醒使用者目前无法沟通传送器。若的确接收到传送器的 start_of_data,则接收器将读取后续的信息封包。此封包具有封包号码、可检查错误的封包补充码、packet_size 字节的实际数据封包,与用于更多错误检查的数据总和检查码 (checksum)。在读取数据之后,接收器将呼叫 wait_delay,并于稍后传送认可字符 (ack) 回传送器。若传送器未接受到 ack,则将重新传送 max_tries 数据封包,直到接收 ack 为止。若传送器一直未接收 ack,则将通知使用者传送档案失败。
由于传送器必须以 packet_size 字节的封包传送数据,因此若没有足够数据填满最后的封包,则传送器将使用 ascii null (0) 字节填满数据封包。如此将使接收档案大于源文件。由于 xmodem 传输作业的封包号码,极可能增加 xon/off 控制字符而造成通讯中断,因此 xmodem 协议并不适合搭配使用 xon/xoff。
运算放大器输入偏置电流的理解和影响
电源设计的患者安全和舒适
Precision current-transmitter/source-sink calibrator has wid
八种不同类型的抽样技术介绍
开放原子开源基金会TOC(技术监督委员会)第七十五次全体会议
串口调试要注意什么?串口调试工具有哪些?
远程医疗和远程保健服务加速医疗物联网的需求
最高法院裁定!歌尔敏芯中国两大MEMS巨头专利战落下帷幕?
6年更新了5代硬件,Zoox完全自动驾驶的电动汽车终于问世
超低功耗MAX32660和MAX32652微控制器
敷铜板的种类,PCB classification
物联网IoT技术应用下,智慧社区如何做到安全与智慧并存
LED灯向农产业方向的迈进
自适应实时DSP架构用于监测电网中的谐波成分和各种电能质量因素
可信软件堆栈和可信计算组的DICE架构
区委书记莅临新亚胜光电走访调研
AAL2/AAL5等ATM连接的区别
德州仪器推出业界最小、最高效率的降压转换器
五分钟看懂无凸轮轴发动机
如何用旁路工具提升网络可用性?