多串口通讯技术实践

2024-10-20

多串口通讯技术实践(精选3篇)

多串口通讯技术实践 篇1

微电子技术的发展, 使得各种先进的设备与技术得以实现, 单片机凭借较小的体积以及良好的性价比, 在各种电子产品中得到了广泛的应用和普及, 单片机的相关技术也在不断革新。本文结合MCS-51单片机的特点, 对其多串口通讯技术的实践应用进行了分析。

随着我国科学技术的飞速进步, 现代通讯技术得到了巨大的发展和完善, 在工程应用以及系统测控中, 多任务同时执行的现象也更加普遍, 使得主从式多机分布系统成为工业现代化建设中的主流, 而MCS-51单片机与PC微机则是构成该系统的主要构件, 应该引起相关技术人员的重视, 做好MCS-51单片机多串口通讯技术的实践应用工作。

1 MCS-51单片机概述

单片机, 全称单片微型计算机, 也称微控制器, 是一种将中央处理器、存储器、定时器、计时器以及各种输入输出接口集成在一块集成电路芯片上的微型计算机。与个人电脑中的通用型微处理器相比, 单片机更加强调自供应以及节约成本。而MCS-51单片机, 是美国INTE公司在MCS-48单片机的基础上, 于1980年推出的, 结构更加先进, 功能更加齐全, 增加了更多的电路单元和指令, 在速度方面实现了前所未有的突破, 因此在工业控制系统中得到了广泛的应用。MCS-51单片机的特点主要包括:

(1) 8位CPU, 处理能力较强, 而且包含范围在1.2MHz-12MHz的振荡器, 采用单一+5V电源。

(2) 采用单总线结构, 附带128B的寻址空间为64KB的数据存储器以及4KB的寻址空间为64KB的程序存储器。

(3) 具有128个用户位的寻址空间以及21个字节特殊功能寄存器, 并且具有8位的I/O并行接口四个。

2 MCS-51单片机多串口通讯技术的实现

从目前的发展情况看, 虽然主从式多机分布系统是工业现代化建设中的主流, 但是由于技术条件的限制, 只有极少数的几种单片机可以实现多串口的通信, MCS-51单片机只能选择Intel8250和Intel8251两种接口芯片。从目前来看, 要实现MCS-51单片机的多串口通讯, 需要在保证其价格低廉、性价比较高的基础上, 采取相应的技术和措施。实现方法包括三种:其一, 利用多个单片机的相互协作, 实现多串口通讯, 相比于其他方案更加容易实现, 在价格方面也相对较低。其二, 运用HIS和HSO功能, 同样可以实现多串口通讯技术, 这是由于部分类型的单片机可以在实现高速输入的同时完成高速输出, 因此存在很大的可行性。

其三, 利用多路模拟开关实现单片机的多串口通讯技术, 主要是将单片机的串口通过分别于多路的模拟开关实现各路线路的相互连接, 存在良好的技术基础。

这里针对主从式多机分布式系统, 对MCS-51单片机多串口通讯技术的实际应用进行简单分析。

2.1 硬件接口技术设计

2.1.1 PC微机的通信

对于PC微机的通信设计, 主要是通过8251A可编程串行异步通信控制器实现, 对串行数据的工作方式、传送速度以及格式等进行设计, 对单片机的通信模式进行改变。而可以通过在系统中植入两个MAX485芯片, 实现单片机与PC微机之间的通信以及系统的远距离数据传输功能。

2.1.2 MCS-51单片机串行通信

结合之前提到的通信标准, 如果要实现PC微机与MCS-51单片机之间的串行通信, 同时保证系统的长期稳定运行, 需要在两者之间建立相应的串行接口对接。如果选择TTL电平实现MCS-51单片机的串行通信, 则RS-232串行接口需要选择EIA电平, 并将电平准换芯片设置在两者之间, 以满足数据转换的需求。在满足相应技术指标的前提下, 从经济方面考虑, 在MCS-51单片机中, 一般使用MAX232芯片, 该芯片为单电源供电, 自身设置有电压电源变换器, 因此功耗相对更低。

2.2 串行通信程序设计

这里主要针对单片机多机串口通信协议进行分析。为了实现PC微机与MCS-51单片机之间的有效通信, 需要植入电平准换芯片, 保证两者具有相同的起始位、停止位、奇偶校验位、等, 确保数据传输目标的实现。如果有需要, 还应该建立相应的通信应答信号。

首先, PC机通信。PC机的通信接口为异步通信接口, 可以设定1位、1.5位以及2位停止位, 以保证数据传输可以在5-8位之间任意实现。通常情况下, 需要将通信频率控制在0-9.6Kbps, 涉及帧校验、奇偶校验以及溢出校验三种基本校验方式, 同时可以以此为基础, 实现相应的初始化处理。PC机自身确定的控制口和数据口地址, 以及能够通过状态数字寄存器, 对其工作状态进行保持, 从而为MCS-51单片机读取CPU。其通信协议主要涉及三点:其一, 遵循主机的相关原则, 以呼叫方式对从机进行选择, 实现数据的双向传递, 从机之间的通信以主机为载体进行;其二, 帧格式为8位数据;其三, 串行通信波特率为1200bps。

然后, 单片机通信。单片机自身较强的灵活性, 可以同时运行于通用异步收发器方式与同步移位寄存器方式下。特殊功能寄存器SCON会直接控制串行口的通信方式, 其工作模式通常表现为SM1或者SM0, 中断标志的接受和发送为RI以及TI, 数据的发送和接收均为TB8和RB8的第九位。

3 结语

综上所述, MCS-51单片机的多串口通讯技术的设计和实现, 设计多个方面的内容, 如从机主程序、主机程序等, 在多个专业领域得到了广泛应用。从目前的发展情况看, 单片机已经朝着单片化、网络化和微型化的方向发展, 凭借其自身的优势, 必将推动相关产业的发展和进步。

参考文献

[1]黄秀亮.浅谈MCS-51单片机多串口通讯技术的应用[J].信息系统工程, 2013 (8) :92-93.

[2]胡谦珀.MCS-51单片机多串口通讯技术应用分析[J].科技致富向导, 2013 (14) :55.

[3]杨顺景.MCS-51单片机多串口通讯技术的应用探析[J].电子制作, 2013 (9) :34.

基于多串口通讯技术的单片机应用 篇2

关键词:单片机,多串口,通讯技术,应用

1 单片机串口扩展设计

1. 1 单片机串口扩展的硬件总体设计。单片机串口扩展的硬件总体设计单片机串口扩展的硬件总体设计单片机串口扩展的硬件总体设计单片机与PC机或外设的串行通信一般采用RS232 /RS422 /RS485 总线标准接口。为保证通信可靠, 在选择接口时必须注意通信的速率、通信距离、抗干扰能力、电平匹配和通信方式。本文为了解决在单片机串行通信时遇到的串口问题, 以MCS51 系列单片机8751 为例, 进行串口扩展, 包括通过通信接口芯片8251 再扩展一个独立串口, 通过16 × 1 的多路切换器CD4067 实现一点对多点分时串口通信, 以及通过电平转换器MAX232, MAX488, MAX485 实现单片机与不同类型接口源供电, 驱动能力强。MAX232 芯片内置两个TTL到RS232 和两个RS232 到TTL驱动电路, 即具有两个发送器和两个接收器, 只需外置4 个011μF电容以供内部电路产生RS232 电压。MAX232 的发送器的发送输入为T1IN/T2IN, 发送输出为T1OUT/T2OUT; 接收器的接收输入为R1IN / R2IN, 接收输出为R1OUT / R2OUT。RS232 接口也普遍使用9 芯插头座, 在许多场合下仅将发送端TXD数据和接收端RXD交叉连接, 加上信号地GND共使用三根线, 只给出了一路TTL电平接口到RS232 电平接口的串行通信电路设计。

1. 2单片机与不同类型串口的通信扩展。电路的设计单片机与不同类型串口的通信扩展电路的设计单片机与不同类型串口的通信扩展电路的设计单片机与不同类型串口的通信扩展电路的设计单片机CPU8751 的串口是TTL电平, 要实现8751 与不同类型串口进行通信, 需要用电平转换器完成不同类型串口的转换, 才能成功进行通信。下面对单片机8751 与RS232/RS422/RS485 的串行通信进行接口扩展。

2 单片机多串口通讯的实现技术

2. 1 采用多串口单片机。目前只有少数单片机具有两个以上的串行通讯接口, 有些单片机与MCS - 51 系列单片机兼容, 新增加的串口与原有的串口在使用上基本相同。采用多串口单片机实现多串口通讯无需额外的软件硬件支持, 因而是最为理想的方案, 只是这些单片机不太容易买到, 价格也比较高。扩展串行通讯接口在基本系统上扩展串行通讯接口是另外一种可行的方案。目前对于MCS- 51 系列单片机只有intel8250 和intel8251 两种接口芯片可供选择。前者为DIP40 封装, 后者为DIP28 封装。两者在使用上有着很大的区别, 不能互换使用。扩展接口方法的缺点是增加了系统的复杂性, 扩展芯片的体积也嫌太大。

2. 2 采用多路模拟开关。该方法是将串口通过多路模拟开关分别与各路通讯线路连接, 适用于多路通讯分时进行, 没有交叉的情形。这种方法工作比较可靠, 技术上也比较容易实现, 只需利用软件控制多路模拟开关的切换即可。

2. 3 多单片机协同工作。由于单片机的价格低廉, 采用多个廉价的单串口单片机实现多路通讯可能比其它的方案成本更低, 技术上也比较容易实现。这种方案比较适合协议转换一类的工作, 这样每个单片机只需要负责一种协议数据的处理, 便于软件编程。

多单片机协同工作必然要涉及到各个单片机之间的数据交换, 这需要一些特殊的通讯技术支持。

2. 4 利用HSI和HSO功能。在现代的单片机应用中, 其具备的主要功能就是高速输入以及高速输出。在实际的应用过程中, 通常是将这些功能串行通讯。在数据接收的过程中通常会应用到高速输出功能, 应用高速输出功能首先是根据单片机的通讯波特频率确定定时时间, 然后在对检测接收数据的起始位用高速输出检测。如果检测到起始位时, 就对其进行中断, 在中断过后对读入的数据进行拼装, 在完成此项工作过后必须储存所有接收的数据。

在利用高速输出进行数据处理时, 可以通过向寄存器写入相关的命令, 然后就可以直接进行数据处理, 并且根据波特率对时间间隔进行处理。发送多位数据则对应多条命令, 也可以利用高速输出中断实现。

2. 5 软件模拟。对于不具备高速输入和高速输出功能, 又不能进行扩展的单片机, 软件模拟是一种增加串口的可行方案。软件模拟是利用软件模拟串行通讯的时序, 因此需要占用较多的软件资源。具体实现时可以利用定时器辅助进行, 下面将给出实现该方案的技术细节。

3 串行通讯的软件模拟实现

利用软件模拟发送的基本思想是, 首先根据通讯速率确定发送每一位的间隔时间, 然后根据数据格式和内容进行逐位操作。间隔时间的控制可以用软件延时, 也可以使用定时器。例如, 对于11. 0592MHz的系统时钟和9600 波特率, 对于MCS - 51 系列单片机, 可以计算出8 位定时器的定时时间常数初值。

若使用MCS - 51 系列单片机定时器0 的工作方式2 作为定时控制, 9600 波特率, 使用Pl. 0 作为发送线模拟串行通讯方式1。

软件模拟接收的基本思想是, 利用外部中断检测起始位, 一旦检测到起始位即进入中断服务程序, 在中断服务程序中延时半个数据位时间后再次检测端口状态, 以防止干扰的影响。检测无误后关闭外部中断, 同时打开定时器中断。在定时器中断服务程序中接收数据位并进行拼装, 接收完毕后即可关闭定时器中断。待主程序处理完接收数据后再打开外部中断以便开始下一个数据的接收。

若使用定时器0 的工作方式2 作为定时控制9600 波特率, 使用P3. 3 作为接收线模拟串行通讯方式1。

4 结束语

多串口通讯技术实践 篇3

C 8051F020单片机是cygnal公司的一种高速、流水线结构的微处理器。完全兼容传统8051单片机, 具体性能参数如下:[2]

(1) 片内64k可在系统编程FLASH程序存储器;

(2) 片内12位、100kbs、8通道AD;

(3) 硬件SPI、SMBUS和两个UART串口;

(4) 5个通用的16位定时计数器;

(5) 具有5个比较/捕捉模块的可编程计数器/定时器阵列 (PCA) ;

(6) 片内看门狗定时器、电源监视器和温度传感器。

2方案设计

2.1系统组成

举例说明, 在一个两自由度稳定观瞄设备中, 安装了可见光摄像机、激光测距仪两个传感器。操作人员通过地面控制计算机的串行口对观瞄设备进行有线操纵, 那么观瞄设备内的通讯控制电路就要完成与地面控制计算机、可见光摄像机、激光测距仪这三方的通讯。如图1所示。

由图1可知, 通讯控制电路需要完成与地面控制计算机、可见光摄像机、激光测距仪这三方不间断的通讯, 就必须使用三个串口进行通讯。由于单片机C8051F020本身已经具有两个硬件串口, 所以只需要再利用单片机内部的PCA可编程计数器模拟一个串口即可满足系统要求。

2.2波特率源

两个硬件串口可使用定时器1做波特率发生器, 节省硬件资源。或者串口0用定时器1而串口2用定时器2做波特率发生器, 可以减少硬件冲突。

PCA使用一个专用的16位计数器/定时器和五个16位的捕捉/比较模块。每个模块都可以被设置为在PCA计数器与相对应的比较模块的内容一致时触发一个中断。由于PCA计数器在产生中断时并不停止运行, 所以该方案可以避免因中断造成延迟累加的问题。

2.3其他考虑

上述的每种定时器源都可以用SYSCLK或一个外部信号作为时钟。在这里使用SYSCLK作为时钟, 而SYSCLK源自外部的11.059 2 MHz晶体。

起始位检测也是软件串行口接收器的一个重要问题。C8051F020单片机提供了很多外部中断源, 其中有几个可被配置用于检测下降沿。

3编程实现

3.1交叉交叉开关译码器的配置

C8051F020单片机的外设接口可根据实际需要灵活分配, 外设引脚的分配由三个交叉开关寄存器的值决定。

配置单片机交叉开关寄存器为XBR0=0x14、XBR1=0x00、XBR2=0x44, 则硬件串口0的TX0 (发送) 和RX0 (接收) 引脚分配到P0.0和P0.1, 硬件串口1的TX1和RX1引脚分配到P0.2和P0.3, 软件串口的TX2和RX2引脚分配到P0.4和P0.5。[3]

3.2软件UART的实现

使用两个PCA模块产生接收和发送波特率 (分别为模块0和1) 。这两个模块被配置为软件定时器方式, 用于产生波特率中断。

在软件定时器方式, 当PCA计数器与某个比较模块中的值一致时, PCA可产生一个中断。由于PCA计数器不会中断运行, 比较模块可在每个位时间被更新以精确产生下一个位时间。另外, PCA还提供一个在起始位检测中很有用的捕捉功能。

PCA模块可通过交叉开关与外部信号连接。这些信号 (对模块n称为CEXn) 可用于触发PCA计数器捕捉。在软件串口接收器中用到这一特性。起始位识别是用模块0实现的, 模块0被配置为在串口引脚出现一个下降沿时捕捉PCA计数器的内容。该功能有两个优点:

(1) 起始位检测容易实现;

(2) 由于捕捉是在检测到下降沿后立即完成的, 所以位采样时间不受中断响应延迟的影响。

发送和接收操作是在PCA中断服务程序的两个独立的状态机中实现的, 如图2所示。

3.3发送状态机

用户可以通过强制PCA模块1产生中断 (设置CCF1=1) 来启动一次发送。在状态0, TX引脚被强制为低电平以产生起始条件。此时读PCA计数器的值, 并将该值加上一个位时间后装入到模块1捕捉寄存器。注意:从产生起始位到读出PCA计数值之间要经过几个系统时钟周期。这是软件中唯一的中断延迟影响位时间的地方。

状态1-9在发生模块匹配中断时执行。在每个状态TDR的LSB被移出, 而一个代表停止位的1被移入, TDR的MSB一个位时间被加到模块1捕捉寄存器以产生下一个位时间。经过9次移位后, 数据字节+停止位被发送出去。最后发送结束标志 (STI) 被置位, 发送忙标志 (STXBSY) 清除, TX状态变量被复位。

3.4接收状态机

当软件串行口被初始化时, PCA模块0被配置为下降沿捕捉方式。它的输入CEX0通过交叉开关接到一个通用I/O引脚 (P0.4, SW_RX) 。在状态机处于状态0时, 如果在SW_RX引脚检测到下降沿, 则会产生一个中断。由于模块工作在捕捉方式, PCA计数器的内容被装入到模块0捕捉寄存器。注意该值与中断响应延迟无关。在检测到起始位后, 模块0被切换到软件定时器方式, 并且3/2个位时间被加到模块0捕捉寄存器中。额外的1/2位时间只在检测到起始位之后使用, 其作用是使采样发生在下一个位周期的中间 (见图3) 。当PCA计数器计到模块0捕捉寄存器中的数值时产生第一个位采样中断 (此处为LSB) 。

状态1-8在模块匹配中断发生时执行。在每个状态, 数据位被从SW_RX采样并移入到变量RXSHIFT。PCA模块0的内容在每个状态都被更新, 以提供下一个位时间中断 (一个位时间被加到比较寄存器) 。状态变量也被加1 。

状态9捕捉停止位, 设置SRI, 最后使接收器返回到等待状态。

4结论

使用Cygnal公司的 C8051F020单片机最多可实现4—5个全双工的串行口, 目前该方案现已在3个型号项目上实现, 工作稳定可靠。与以往采用的单片机加外围扩展电路的方案相比, 具有功耗小、资源省、设计简单的特点, 是一种行之有效的多串口通讯解决方案。

参考文献

[1]李刚、林凌.与8051兼容的高性能、高速单片机.北京:北京航空航天大学出版社, 2002

[2]潘琢金, 施国君.C8051Fxxx高速SOC单片机原理及应用.北京:北京航空航天大学出版社, 2002

上一篇:高校学生管理论文下一篇:一年级数学教学