嵌入式_USART 串口通讯

嵌入式_USART 串口通讯
嵌入式_USART 串口通讯

USART 串口通讯-存储池方式

【实验目的】

学习USART的特性及功能

学习USART 串口通讯的使用

【实验原理】

1. USART介绍

通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行

数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。它支持同步单向通信和半双工单线通信,也支持LIN(局部互连网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。使用多缓冲器配置的DMA方式,可以实现高速数据通信。

2. USART特性

全双工的,异步通信

标准格式

分数波特率发生器系统

─发送和接收共用的可编程波特率,最高达 4.5Mbits/s

可编程数据字长度(8位或9位)

可配置的停止位-支持1或2个停止位

LIN主发送同步断开符的能力以及LIN从检测断开符的能力

─当USART硬件配置成LIN时,生成13位断开符;检测10/11位断开符发送方为同步传输提供时钟

编码器解码器

─在正常模式下支持3/16位的持续时间

智能卡模拟功能

─智能卡接口支持ISO7816-3标准里定义的异步智能卡协议

─智能卡用到的0.5和 1.5个停止位

单线半双工通信

可配置的使用DMA的多缓冲器通信

─在SRAM里利用集中式DMA缓冲接收/发送字节

单独的发送器和接收器使能位

检测标志

─接收缓冲器满

─发送缓冲器空

─传输结束标志

校验控制

─发送校验位

─对接收数据进行校验

四个错误检测标志

─溢出错误通用同步异步收发器(USART)

─噪音错误

─帧错误

─校验错误

个带标志的中断源

─CTS改变

─LIN断开符检测

─发送数据寄存器空

─发送完成

─接收数据寄存器满

─检测到总线为空闲

─溢出错误

─帧错误

─噪音错误

─校验错误

多处理器通信-- 如果地址不匹配,则进入静默模式

从静默模式中唤醒(通过空闲总线检测或地址标志检测)

两种唤醒接收器的方式:地址位(MSB,第9位),总线空闲

3.储存池进行数据传输

即在RAM中定义了两个缓冲器一个为TXBuffer,一个为RXBuffer, TXBuffer用来存

储USART2要发送给USART3的数据,当USART3收到USART2发送的数据后,把数据存入了RXBuffer这个缓冲器中,这就是利用存储池来进行数据传输。

【步骤与现象】

1. 连接仿真器,打开目标板的电源开关。

2. 打开示例程序工程

\basic_examples\STM32F10x_StdPeriph_Examples\16-USART\01-Polling\RVMDK,

选择进行程序的编译,然后选择,把程序烧进板里,按一下板上的复

位键,就可以运行程序了,当然你也可以进入调试模式按,然后按F10单

步调试,要想进入具体函数可以按F11。

3. 程序说明:

该示例程序演示了通过数据池方式,在两个串口之间传递数据,对于STM3210C开

发板来说,这两个串口分别是USART2和USART3。

通过USARTy将TxBuffer发送给USARTz.然后USARTz读取接收到的数据,将他们存

放在RxBuffer.最后比较发送和接收的数据,检查传输是否正确。

USARTy 和USARTz 的参数配置如下

波特率= 230400 baud

字长= 8 Bits

一个停止位

偶校验

无硬件流控制

4. 配置

连接USART2 Tx 引脚(PD.05) to USART3 Rx 引脚(PC.11)

连接USART2 Rx 引脚(PD.06) to USART3 Tx 引脚(PC.10)

观察LCD显示传输成功与否。

int main(void)

{/* System Clocks Configuration */

RCC_Configuration();

/* Configure the GPIO ports */

GPIO_Configuration();

USART_https://www.360docs.net/doc/0a8623609.html,ART_BaudRate = 230400;

USART_https://www.360docs.net/doc/0a8623609.html,ART_WordLength = USART_WordLength_8b; USART_https://www.360docs.net/doc/0a8623609.html,ART_StopBits = USART_StopBits_1;

USART_https://www.360docs.net/doc/0a8623609.html,ART_Parity = USART_Parity_Even;

USART_https://www.360docs.net/doc/0a8623609.html,ART_HardwareFlowControl =

USART_HardwareFlowControl_None;

USART_https://www.360docs.net/doc/0a8623609.html,ART_Mode = USART_Mode_Rx | USART_Mode_Tx; /* Configure USARTy */

USART_Init(USARTy, &USART_InitStructure);

/* Configure USARTz */

USART_Init(USARTz, &USART_InitStructure);

/* Enable the USARTy */

USART_Cmd(USARTy, ENABLE);

/* Enable the USARTz */

USART_Cmd(USARTz, ENABLE);

while(TxCounter < TxBufferSize)

{

/* Send one byte from USARTy to USARTz */

USART_SendData(USARTy, TxBuffer[TxCounter++]);

/* Loop until USARTy DR register is empty */

while(USART_GetFlagStatus(USARTy, USART_FLAG_TXE) == RESET)

{

}

/* Loop until the USARTz Receive Data Register is not empty */

while(USART_GetFlagStatus(USARTz, USART_FLAG_RXNE) == RESET)

{

}

/* Store the received byte in RxBuffer */

RxBuffer[RxCounter++] = (USART_ReceiveData(USARTz) & 0x7F);

}

/* Enable the USART3 Pins Software Remapping */

GPIO_PinRemapConfig(GPIO_PartialRemap_USART3, DISABLE);

/* Initialize the LCD */

STM3210C_LCD_Init();

/* Clear the LCD */

LCD_Clear(White);

/* Set the LCD Text Color */

LCD_SetTextColor(Black);

printf(" STM3210C-EVAL \n");

printf("USART with interrupt\n");

/* Check the received data with the send ones */

if(Buffercmp(TxBuffer, RxBuffer, TxBufferSize))

printf("UART2 transmitted successful\n");

else

printf("UART2 transmitted failed\n");

/* TransferStatus = PASSED, if the data transmitted from USARTz and received by USARTy are the same */

/* TransferStatus = FAILED, if the data transmitted from USARTz and received by USARTy are different */

while (1)

{ }}

传输完成后:

传输完成前:

2020年嵌入式串口通信设计参照模板

***************** 实践教学 ******************* 兰州理工大学 计算机与通信学院 2013年春季学期 嵌入式系统开发技术课程设计 题目:嵌入式串口通信设计 专业班级:通信工程四班 姓名: 学号: 指导教师: 成绩:

嵌入式是以应用为中心,以计算机技术为基础,软件硬件可剪裁,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。随着嵌入式系统的发展和大规模应用,为了提升系统的整体性能,必须实现PC机和嵌入式计算机之间的通信。在实际开发应用中,串口通信是不可缺少的部分。 目前嵌入式系统与PC机之间一种非常重要而且普遍应用的通信方式。本文通过基于2410F 的嵌入式串口通信的实现,按照嵌入式系统的软、硬件结构组成,较为详细地介绍了串口通信的硬件电路和软件实现方法。通过与计算机串口间的接,实现在ARM 平台上,传输速率115200bps,接收来自串口(通过超级终端)的字符并将接收到的字符发送到超级终端,实现监测。与外部设备通信的基本功能。 关键字:嵌入式系统,串口通信,Linux系统

前言 ------------------------------------------------------------------------------------------- - 4 - 一、串口通信概述--------------------------------------------------------------------------- - 5 - 1.1 串口通信的原理 ------------------------------------------------------------------ - 5 - 1.2 串口通信的开发工具 ------------------------------------------------------------ - 5 - 1.2.1 2410F硬件平台简介---------------------------------------------------------- - 5 - 1.3 串口通信的基本任务 ------------------------------------------------------------ - 8 - 二、系统分析--------------------------------------------------------------------------------- - 9 - 三、串口驱动程序设计 ------------------------------------------------------------------- - 17 - 3.1 串口操作需要的头文件 -------------------------------------------------------- - 17 - 3.2 打开串口 -------------------------------------------------------------------------- - 17 - 3.3 串口设置 -------------------------------------------------------------------------- - 18 - 3.4 串口读写 -------------------------------------------------------------------------- - 20 - 3.5 关闭串口 -------------------------------------------------------------------------- - 22 - 四、总结-------------------------------------------------------------------------------------- - 23 - 参考文献-------------------------------------------------------------------------------------- - 24 - 附录----------------------------------------------------------------------------------------- - 25 -

C#和232串口通信方法

本例程主要讲解使用C#,实现与232串口通信。达到采集串口数据,监控,可视化处理等。 一.概述 在Visual Studio 中编写串口通讯程序,一般都使用MicrosoftCommunicationControl(简称MSComm)的通讯控件,只要通过对此控件的属性和事件进行相应编程操作,就可以轻松地实现串口通讯。但在技术广泛应用的今天,Visual 没有将此控件加入控件库,所以人们采用了许多方法在Visual 来编写串口通讯程序:第一种方法是通过采用Visual Studio 中原来的MSComm 控件这是最简单的,最方便的方法,但需要注册;第二种方法是采用微软在.NET 推出了一个串口控件,基于.NET的P/Invoke调用方法实现;第三种方法是自己用API写串口通信,虽然难度高,但可以方便实现自己想要的各种功能。 现在微软推出了最新版本的Visual Studio 2005开发工具,可以不再采用第三方控件的方法来设计串口通讯程序。NET Framework 类库包含了SerialPort 类,方便地实现了所需要串口通讯的多种功能,为了使MSComm编程方法快速转换到以SerialPort类为核心的串口通讯的设计方法,本文着重讨论了Visual Studio 的MSComm控件和SerialPort 类设计方法的异同点。 二.SerialPort常用属性、方法和事件 1.命名空间 命名空间包含了控制串口重要的SerialPort类,该类提供了同步I/O 和事件驱动的I/O、对管脚和中断状态的访问以及对串行驱动程序属性的访问,所以在程序代码起始位置需加入Using 。 2.串口的通讯参数 串口通讯最常用的参数就是通讯端口号及通讯格式(波特率、数据位、停止位和校验位),在MSComm中相关的属性是CommPort和Settings。SerialPort类与MSComm有一些区别: a.通讯端口号

RS232串口通信详解

RS232串口通信详解(引脚定义,电气特性,传输格式,接收过程,单片机晶振,RS485,RS422) 通信原理知识2010-01-03 20:53 阅读1 评论0 字号:大中小RS232串口通信详解(引脚定义,电气特性,传输格式,接收过程,单片机晶振,RS485,RS422) 串口是计算机上一种非常通用的设备通信协议。 --------------------------------- 串口的引脚定义: 信号方向来 9芯 缩写描述 自 1调制解调器CD载波检测 2调制解调器RXD接收数据 3PC TXD发送数据 4PC DTR数据终端准备好 5GND信号地 6调制解调器DSR通讯设备准备好 7PC RTS请求发送 8调制解调器CTS允许发送 9调制解调器RI响铃指示器

两个串口连接时,接收数据针脚与发送数据针脚相连,彼此交叉,信号地对应相接即可。 --------------------------------- 串口的电气特性: 1)RS-232串口通信最远距离是50英尺 2)RS232可做到双向传输,全双工通讯,最高传输速率20kbps 3)RS-232C上传送的数字量采用负逻辑,且与地对称 逻辑1:-3 ~-15V 逻辑0:+3~+15V 所以与单片机连接时常常需要加入电平转换芯片: --------------------------------- 串口通信参数: a)波特率:RS-232-C标准规定的数据传输速率为每秒50、75、 100、150、300、600、1200、2400、4800、9600、19200波特。 b)数据位:标准的值是5、7和8位,如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位);扩展的ASCII码是0~255(8位)。 c)停止位:用于表示单个包的最后一位,典型的值为1,1.5和2位。由于数是在传输线上定时的,并且每一

串口通信基本接线方法要点

串口通信基本接线方法 龚建伟2001.6.20 目次:1.DB9和DB25的常用信号脚说明 2.RS232C串口通信接线方法 3.串口调试中要注意的几点 目前较为常用的串口有9针串口(DB9)和25针串口(DB25),通信距离较近时(<12m),可以用电缆线直接连接标准RS232端口(RS422,RS485较远),若距离较远,需附加调制解调器(MODEM)。最为简单且常用的是三线制接法,即地、接收数据和发送数据三脚相连,本文只涉及到最为基本的接法,且直接用RS232相连,以回答前段网友的咨询。 1.DB9和DB25的常用信号脚说明 2.RS232C串口通信接线方法(三线制) 首先,串口传输数据只要有接收数据针脚和发送针脚就能实现:同一个串口的接收脚和发送脚直接用线相连,两个串口相连或一个串口和多个串口相连 ?同一个串口的接收脚和发送脚直接用线相连对9针串口和25针串口,均是2与3直接相连; ?两个不同串口(不论是同一台计算机的两个串口或分别是不同计算机的串口)

上面表格是对微机标准串行口而言的,还有许多非标准设备,如接收GPS数据或电子罗盘数据,只要记住一个原则:接收数据针脚(或线)与发送数据针脚(或线)相连,彼些交叉,信号地对应相接,就能百战 百胜。 3.串口调试中要注意的几点: ?不同编码机制不能混接,如RS232C不能直接与RS422接口相连,市面上专门的各种转换器卖,必须通过转换器才能连接; ?线路焊接要牢固,不然程序没问题,却因为接线问题误事; ?串口调试时,准备一个好用的调试工具,如串口调试助手、串口精灵等,有事半功倍之效果; ?强烈建议不要带电插拨串口,插拨时至少有一端是断电的,否则串口易损坏。

单片机串口通信C程序及应用实例

一、程序代码 #include//该头文件可到https://www.360docs.net/doc/0a8623609.html,网站下载#define uint unsigned int #define uchar unsigned char uchar indata[4]; uchar outdata[4]; uchar flag; static uchar temp1,temp2,temp3,temp; static uchar R_counter,T_counter; void system_initial(void); void initial_comm(void); void delay(uchar x); void uart_send(void); void read_Instatus(void); serial_contral(void); void main() { system_initial(); initial_comm(); while(1) { if(flag==1) { ES = 0; serial_contral(); ES = 1; flag = 0; } else read_Instatus(); } } void uart_send(void) { for(T_counter=0;T_counter<4;T_counter++) { SBUF = outdata[T_counter]; while(TI == 0);

TI = 0; } T_counter = 0; } uart_receive(void) interrupt 4 { if(RI) { RI = 0; indata[R_counter] = SBUF; R_counter++; if(R_counter>=4) { R_counter = 0; flag = 1; } } } void system_initial(void) { P1M1 = 0x00; P1M0 = 0xff; P1 = 0xff; //初始化为全部关闭 temp3 = 0x3f;//初始化temp3的值与六路输出的初始值保持一致 temp = 0xf0; R_counter = 0; T_counter = 0; } void initial_comm(void) { SCON = 0x50; //设定串行口工作方式:mode 1 ; 8-bit UART,enable ucvr TMOD = 0x21; //TIMER 1;mode 2 ;8-Bit Reload PCON = 0x80; //波特率不加倍SMOD = 1 TH1 = 0xfa; //baud: 9600;fosc = 11.0596 IE = 0x90; // enable serial interrupt TR1 = 1; // timer 1 RI = 0; TI = 0; ES = 1; EA = 1; }

串口通信的接线方法

目前较为常用的串口有9针串口(DB9)和25针串口(DB25),通信距离较近时(<12m),可以用电缆线直接连接标准RS232端口(RS422、RS485较远),若距离较远,需附加调制解调器(MODEM)。最为简单且常用的是三线制接法,即地、接收数据和发送数据三脚相连,本文只涉及到最为基本的接法,且直接用RS232相连。 1、DB9和DB25的常用信号脚说明 2、RS232C串口通信接线方法(三线制) 首先,串口传输数据只要有接收数据针脚和发送针脚就能实现:同一个串口的接收脚和发送脚直接用线相连,两个串口相连或一个串口和多个串口相连同一个串口的接收脚和发送脚直接用线相连对9针串口和25针串口,均是2与3直接相连; 两个不同串口(不论是同一台计算机的两个串口或分别是不同计算机的串口) 图2 上面表格是对微机标准串行口而言的,还有许多非标准设备,如接收GPS数据或电子罗盘数据,只要记住一个原则:接收数据针脚(或线)与发送数据针脚(或线)相连,彼些交叉,信号地对应相接,就能百战百胜。 3、串口调试中要注意的几点: 不同编码机制不能混接,如RS232C不能直接与RS422接口相连,市面上专门的各种转换器卖,必须通过转换器才能连接; 线路焊接要牢固,不然程序没问题,却因为接线问题误事;

串口调试时,准备一个好用的调试工具,如串口调试助手、串口精灵等,有事半功倍之效果; 强烈建议不要带电插拨串口,插拨时至少有一端是断电的,否则串口易损坏。 RS232C标准串口接线方法 (第二版) 检验仪器与微机的通讯主要是以RS232C标准接口为主,而串口的接线方法也有一定的标准,在此谈谈几种常用的串口接法,仅作参考: 一、标准接法 1、9对9(包括9针对9孔,9孔对9孔,9针对9针): 说明:以下的孔、针指串口线两端的串口,不过2、3有可能不交换 2-------------3 3-------------2 4-------------6 5-------------5 6-------------4 7-------------8 8-------------7 2、9对25(包括9孔对25孔,9孔对25针) 2-------------3 (备注:2、3有可能不交换) 3-------------2 4-------------6 5-------------7 6-------------20 7-------------5 8-------------4

Qt编写串口通信程序

Qt编写串口通信程序图文详解 (说明:我们的编程环境是windows xp下,在Qt Creator中进行,如果在Linux下或直接用源码编写,程序稍有不同,请自己改动。) 在Qt中并没有特定的串口控制类,现在大部分人使用的是第三方写的qextserialport类,我们这里也是使用的该类。我们可以去 https://www.360docs.net/doc/0a8623609.html,/projects/qextserialport/files/ 进行下载,也可以去下载我上传到网上的: https://www.360docs.net/doc/0a8623609.html,/bbs/read.php?tid=22847 下载到的文件为:qextserialport-1.2win-alpha.zip 其内容如下图: 我们在windows下只需要使用其中的6个文件: qextserialbase.cpp和qextserialbase.h,qextserialport.cpp和qextserialport.h,win_qextseri alport.cpp和win_qextserialport.h 如果在Linux下只需将win_qextserialport.cpp和win_qextserialport.h 换为posix_qextserialpo rt.cpp和posix_qextserialport.h即可。 第一部分: 下面我们将讲述编程的详细过程,这里我们先给出完整的程序,然后到第二部分再进行逐句分析。 1.打开Qt Creator,新建Qt4 Gui Application,工程名设置为mycom,其他使用默认选项。(注意:建立的工程路径不能有中文。) 2.将上面所说的6个文件复制到工程文件夹下,如下图。

嵌入式UART接口模块的设计

嵌入式UART接口模块的设计 引言 在计算机的数据通信中,外设一般不能与计算机直接相连,它们之间的信息交换主要存在以下问题: (1)速度不匹配。外设的工作速度和计算机的工作速度不一样,而且外设之间的工作速度差异也比较大。 (2)数据格式不匹配。不同的外设在进行信息存储和处理时的数据格式可能不同,例如最基本的数据格式可分为并行数据和串行数据。 (3)信息类型不匹配。不同的外设可能采用不同类型的型号,有些是模拟信号,有些是数字信号,因此采用的处理方式也不同。 为了解决外设和计算机之间的信息交换问题,即需要设计一个信息交换的中间环节接口。UART控制器是最常用的接口。 通用异步收发器(UniversalAsynchrONousReceiv2er/Transmitter,UART)是辅助计算机与串行设备之间的通信,作为RS232通信接口的一个重要的部分,目前大部分的处理器都集成了UART。 1 UART的数据格式 UART的数据传输格式。 图1 UART的数据传输格式 由于数字图像亚像素在计算机中是用8位二进制表示,因此UART传输的有效数据位为8位。传输线在空闲时为高电平,因此有效数据流的开始位设为0。 接着传输8位有效数据位,先从最低位开始传送。奇偶检验位可以设置为奇检验、偶校验或者不设置校验位,由于本系统使用的传输速率不高,为了加快开发进程,减少电路面积,因此没有设计奇偶检验模块,数据流中不设奇偶检验位。最后停止位为高电平。 2 UART的基本结构 设计的UART主要由UART内核、信号检测器、移位寄存器移位寄存器、波特率发生器和计数器组成,。 图2 UART基本结构 UART各个功能模块的功能如下文所述。 2.1 信号检测器模块 信号检测器用于对RS232的输入信号进行实时监测,一旦发现新的数据则立即通知UART 内核。信号检测器的仿真波形。 图3 信号检测器仿真波形图 其中,RxD第一次为低时,new_data信号阐述输出,之后RxD又变低,但由于信号检测器处于锁定状态,所以new_data信号并没有输出;最后,reset_n信号将信号检测器复位,RxD再次变低时,new_data又有输出。可见信号检测器的实现完全正确,其功能完全符合设计要求。 2.2 移位寄存器模块 移位寄存器模块的作用是存储输入或者输出数据。 当UART接收RS232输入时,移位寄存器在波特率模式下采集RS232输入信号,且保存结果;当进行RS232输出时,UART内核首先将数据加载到移位寄存器内,再使移位寄存器在波特率模式下将数据输出到RS232输出端口上。移位寄存器的仿真波形图。关键字:嵌入式嵌

工业控制--串口通讯方法(精)

工业控制--串口通讯方法(WINAPI实现)介绍介绍工业控制领域利用串口和外围设备进行通讯。正文前言:总所周之,利用串口进行数据通讯在在通讯通讯领域重占有着重要的地位。利用RS232-RS485进行数据信号的采集和传递是VC 编程的又一大热点。串口通讯在通讯软件重有着十分广泛的应用。如电话、传真、视频和各种控制等。在各种开发工具中间,VC由于功能强大和灵活,同时也得到了Microsoft的最大支持,所以在一般进行涉及硬件操作的通讯编程重,大都推荐使用VC作为开发工具。然而工业控制串口通讯这个又不同于一般的串口通讯程序,因为控制外围设备传送的大都是十六进制数据(BYTE类型),所以,为了提高程序的运行稳定性,我们在编写程序进行通讯时可以不考虑传送BYTE类型数 据的工作。串口通讯目前流行的方法大概有两种:一是利用Microsoft提供的CMSCOMM控件进行通讯,不过现在很多程序员都觉应该放弃这种方式。二是利用WINAPI函数进行编程,这种编程的难度最高,要求你要掌握很多的API函 数。三是利用现在网络上面提供的一些串口通讯控件进行编写,比如CSerial类等。程序实现:我在经过许多的项目的开发和实践中发现,采用WIN API函数进行串口的开发能够给程序员很大的控件,并且程序运也很稳定。所以我将与串口接触的函数进行封装,然后在各个工程中进行调用,效果还是比较好的,现将各个函数和调用方法列举出来,希望对各位有所帮助。一、设置串口相关工作 #define MAXBLOCK 2048 #define XON 0x11 #define XOFF 0x13 BOOL SetCom(HANDLE &m_hCom, const char *m_sPort, int BaudRate, int Databit, CString parity, CString stopbit { COMMTIMEOUTS TimeOuts; ///串口输出时间超时设置 DCB dcb; ///与端 口匹配的设备 m_hCom=CreateFile(m_sPort, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL; // 以重叠方式打开串口 if(m_hCom==INVALID_HANDLE_VALUE { AfxMessageBox("设置串口部分,串口打开失败"; /////重叠方式异步通信(INVALID_HANDLE_VALUE)函数失败。return FALSE; } SetupComm(m_hCom,MAXBLOCK,MAXBLOCK; //设置缓冲区memset(&TimeOuts,0,sizeof(TimeOuts; TimeOuts.ReadIntervalTimeout=MAXDWORD; // 把间隔超时设为最大,把总超时设为0将导致ReadFile立即返回并完成操作

java串口通讯程序

java串口通讯程序 1、下载java Communications api开发包。| 是Sun公司提供的,用于开发平台独立的通讯应用程序的扩展API。 2、将拷贝入C:\j2sdk1.4.2_04\bin 3、将拷贝入C:\j2sdk1.4.2_04\jre\lib\ext 4、将拷贝入C:\j2sdk1.4.2_04\jre\lib 5、编译文件 import .*; import .*; import .*; public class CommTest{ public static void main(String[] args){ SerialPort serialPort=null; DataOutputStream doutput=null; InputStream inputStream; CommPortIdentifier portId=null; String messageString="hello \n"; try{ portId=("COM1"); }catch(NoSuchPortException ne) { "ne"); (); } try{ serialPort=(SerialPort) ("TestComm", 5); OutputStream output = (); doutput=new DataOutputStream(output); inputStream = (); }catch(PortInUseException ex) { "ex"); (); }catch(IOException ie) { "ie"); (); //(); } try { (9600, , , ; } catch (UnsupportedCommOperationException e) {} } try { ()); } catch (IOException e) {}

测试电脑的串口是否是好的最完整最可靠的方法就是连接一个真实的串口通信线路

测试电脑的串口是否是好的 最完整最可靠的方法就是 连接一个真实的串口通信线 路(总5页) -CAL-FENGHAI.-(YICAI)-Company One1 -CAL-本页仅作为文档封面,使用请直接删除

测试电脑的串口是否是好的最完整最可靠的方法就是连接一个真实的串口通信线路,2 端用相应软件,如串口调试助手之类的,相互发送发送数据,看另外一端是否能正常接收! 当然,也可以简单的单台机器测试,即短接串口的 2、3 两针,用相应软件,如串口调试助手,发送数据,看能否回显发送的数据 串口测试工具使用说明之一——串口调试工具 回复 6|人气 1387|收藏|打印|推荐给版主 分享文章到: ye_w 个人主页给TA发消息加TA为好友发表于:2010-09-30 19:52:48 楼主 使用串口实现网络通讯,不仅仅需要熟悉控制双方的指令和相关的协议,而且还需要善于使用串口测试工具。在串口测试工具中,最常用的就是串口调试工具。这个串口调试工具网络上一大把,大家百度一下就能下载到(包括我逐步发布的调试工具,都不会提供资源,请大家直接去网络上查找),常用的包括:串口调试助手,串口精灵,Comm等。我也一直使用串口调试助手,下面就是用图形并茂的方式来介绍,请大家指出不足,以便共同进步。 串口调试助手,网络上的版本也有不少,我截2个不同版本的图,但本质没有区别 版本一 怎样测试串口和串口线是否正常? 一步:把串口线或者USB转串口线插到计算机上。 二步:打开串口调试助手 接着选择串口,串口线和USB转串口的端口号查看路径: 电脑上--右键--属性--硬件--设备管理器-端口(COM和LPT),点 开端口前面的+号查看即可。 注释:1、USB-SERIAL CH340(COM4)就是USB转串口的端口号 2、通讯端口(COM1)是计算机原来自带的端口号 第三步:设置串口调试助手(见下图) 1、串口:COM4是和串口线或者USB转串口线在上述路径中查看到的端口号。 2、发送的字符/数据:图片上输入的是59,你可以随便输入2位数字。 3、其余设置按照下图。

51单片机串口通信的原理与应用流程解析

51单片机串口通信的原理与应用流程解析 一、原理简介 51 单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行;既可接收又可发送,但不能同时进行的称为半双工;能同时接收和发送的串行口称为全双工串行口。串行通信是指数据一位一位地按顺序传送的通信方式,其突出优点是只需一根传输线,可大大降低硬件成本,适合远距离通信。其缺点是传输速度较低。 与之前一样,首先我们来了解单片机串口相关的寄存器。 SBUF 寄存器:它是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据,可通过指令对SBUF 的读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作。从而控制外部两条独立的收发信号线RXD(P3.0)、TXD(P3.1),同时发送、接收数据,实现全双工。 串行口控制寄存器SCON(见表1)。 表1 SCON寄存器 表中各位(从左至右为从高位到低位)含义如下。 SM0 和SM1 :串行口工作方式控制位,其定义如表2 所示。 表2 串行口工作方式控制位 其中,fOSC 为单片机的时钟频率;波特率指串行口每秒钟发送(或接收)的位数。 SM2 :多机通信控制位。该仅用于方式2 和方式3 的多机通信。其中发送机SM2 = 1(需要程序控制设置)。接收机的串行口工作于方式2 或3,SM2=1 时,只有当接收到第9 位数据(RB8)为1 时,才把接收到的前8 位数据送入SBUF,且置位RI 发出中断申请引发串行接收中断,否则会将接受到的数据放弃。当SM2=0 时,就不管第位数据是0 还是1,都将数据送入SBUF,并置位RI 发出中断申请。工作于方式0 时,SM2 必须为0。

用C编写的RS232串口通信程序

void main() { delayms(100); init(); //初始化系统 delayms(100); init_wdt(); //初始化看门狗 while(1) { while(!RI_0) //是否收到数据 { clr_wdt(); } RI_0=0; //清除接收中断标志 buffer=S0BUF; if(buffer==0x5a) //检测祯头0 start0=1; if(buffer==0x54) //检测祯头1 start1=1; if(buffer==0x5a) //检测祯尾0 end0=1; if(buffer==0xfe) //检测祯尾1 end1=1; if((start0==1)&(start1==1)) { buff[i]=buffer; //从祯头1开始存储数据 i++; } if((end0==1)&(end1==1)) //是否已经接收祯尾 { count=i; //数据长度为count个 i=1; if((buff[2]==0x03)&(count==107)) //是否422指令 { buff[0]=0x5a; //重填祯头0 buff[count-4]=0; //校验和清零 for(k=2;k<(count-4);k++) //计算校验和 { buff[count-4]+=buff[k]; } for(k=0;k

S0BUF=buff[k]; while(!TI_0); //等待发送完成 TI_0=0; //清除发送中断标志 } reset(); } else if((buff[2]==0x05)&(count==7)) //是否AD测试指令 { sendad(); reset(); } else if((buff[2]==0x18)&(count==7)) //是否发送时序信号指令 { sendpaulse(); reset(); } else //如果接收错误,则恢复各标志位为初始状态以便下次接收 { reset(); } } } } void reset() { start0=0; //祯头祯尾标志位清零 start1=0; end0=0; end1=0; for(k=0;k

基于linux的嵌入式串口通信

天津电子信息职业技术学院《嵌入式软件编程》课程报告 课程名称:基于linux的嵌入式串口通信 课程代码:115229 姓名:甘琦 学号:48 专业:物联网应用技术 班级:物联S14-1 完成时间:2016 年10 月28日

目录 摘要 (1) 前言 (2) 一、嵌入式串口通信概述 (2) 1.1 嵌入式串口通信的原理 (2) 1.2 嵌入式串口通信的开发工具 (2) 1.2.1 CC2530功耗 (2) 1.2.2 ARM简介 (3) 1.2.3 Linux系统简介 (3) 1.3 嵌入式串口通信的基本任务 (4) 1.4嵌入式串口通信协议及实现 (4) 二、 RS-232C标准 (5) 2.1引脚定义 (5) 2.2 字符(帧)格式 (6) 2.3握手协议 (8) 2.4 双机互连方式 (9) 2.4.1无硬件握手情况 (9) 2.4.2 DTR和DSR握手情况 (9) 三、嵌入式串口驱动程序设计 (10) 3.1 嵌入式串口操作需要的头文件 (10) 3.2 打开串口 (10) 3.3 串口设置 (11) 3.4 串口读写 (13) 3.5 关闭串口 (14) 四、源程流程图 (15) 五、源程序代码 (15) 总结 (19)

摘要 随着Internet的发展和后PC时代的到来,嵌入式系统以其可靠性强、体积小、专用性、成本低等特性得到日益广泛的应用。目前嵌入式系统技术已经成为了最热门的技术之一。与此同时,一个独立的嵌入式系统的功能缺陷也逐渐暴露出来。新一代嵌入计算系统的功能集成和应用模式使之迅速向网络化嵌入计算的方向发展,标准和统一的TCP/IP通信协议是独立于任何厂家的硬件的,因此嵌入环境下的实时网络通信成为嵌入计算技术研究的重点和热点。本文通过基于2410F 的嵌入式串口通信的实现,按照嵌入式系统的软、硬件结构组成,较为详细地介绍了串口通信的硬件电路和软件实现方法。 关键词:嵌入式串口通信 2410F

三菱_FX系列PLC串口通讯配置方法

WebAccess 与三菱 FX系列PLC串口通讯配置方法 WebAccess三菱FX系列驱动支持以下型号PLC:FX, FX0, FX0N, FX1N,FX2N,FX1S等。FX系列PLC与上位机软件的通讯方式分为:RS232与RS485两种模式,默认通讯参数如下:波特率:9600,数据位:7位,停止位:1位,奇偶校验:偶校验,下面分别从两个方面进行配置说明: 一、RS232方式通讯 通常情况下,三菱FX系列PLC通过编程口(PS/2)与上位机软件进行RS232模式通讯,此时PLC中不需要做特殊配置,只需在WebAccess中将PLC对应的通讯参数匹配即可。步骤如下: 1、添加通讯端口 图1 添加通讯端口 数据流控(Flow Control):Rts、Dtr握手协议 当使用RS232/RS485转换器进行通讯连接时,数据流控信号将根据该转换器的流 控功能来决定。有些RS232/RS485转换器不需要软件做任何类型的握手协议,而有些 则需要软件进行Rts信号握手协议。强烈建议用户选择具有自动流控的RS232/RS485 转换器。 2、添加设备

图2 设备参数配置 单元号:实际PLC的串行地址号,即Device ID。单个PLC可以默认0进行通讯。 3、添加IO点 根据下图中的“参数”栏选择合适的参数类型(模拟量、数字量)和相应的转换代码。 图3 添加IO点

表1

二、RS485方式通讯 为便于远距离通讯,三菱FX2N系列PLC通过FX2N-485-BD模块实现RS485方式与WebAccess软件通讯,安装FX2N-485-BD需设置PLC的D8120寄存器,请参照《FX通讯用户手册》。FX2N-485-BD通讯模块如下图: FX2N-485-BD模块安装位置图: 图4 FX2N-485-BD模块及接线图 (1)三菱PLC配置方法步骤 1、FXGP/WIN-C编程软件配置方法 使用FXGP/WIN-C编程软件来进行串行口设置。用SC-09编程电缆连接电脑与PLC,在“PLC”下拉菜单中选择“串行口设置(D8120)” 图5 FXGP/WIN-C编程软件串口通讯参数配置 如下图所示,在“硬件”下拉框中选择“RS-485”,在“控制线”下拉框中选择“H/W mode”。

PC机串口通信的工作原理

PC机串口通信的工作原理 MCU资料2008-08-27 09:03:59 阅读22 评论0 字号:大中小订阅 串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB 混淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。 典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配: a,波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。 b,数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。 c,停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。 d,奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,校验位位1,这样就有3个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步 ------------------------- 一、RS485串口通信电路图

串行通讯原理说明--RS232_UART

串行通讯原理说明--RS232,UART电平等介绍 串行通讯:一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。 串行通讯的特点是:数据位传送,传按位顺序进行,最少只需一根传输线即可完成,成本低但送速度慢。串行通讯的距离可以从几米到几千米。 根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。 能够完成上述“串<- ->并”转换功能的电路,通常称为“通用异步收发器” (UART:Universal Asynchronous Receiver and Transmitter), 典型的芯片有:Intel 8250/8251,16550。 EIA-RS-232C对电器特性、逻辑电平和各种信号线功能都作了规定。 在TxD和RxD上:逻辑1(MARK) =-3V~-15V 逻辑0(SPACE)=+3~+15V 在RTS、CTS、DSR、DTR和DCD等控制线上: 信号有效(接通,ON状态,正电压)=+3V~+15V 信号无效(断开,OFF状态,负电压) = -3V~-15V 数据传输时,低位在前,高位在后 数据位:1位、2位 停止位:1位、1.5位、2位 .流控制在串行通讯中的作用 解决丢失数据的问题 .硬件流控制 硬件流控制常用的有RTS/CTS(请求发送/清除发送)流控制和DTR/DSR(数据终端就绪/ 数据设置就绪)流控制 .软件流控制 一般通过XON/XOFF来实现软件流控制。 奇校验:所有传送的数位(含字符的各数位和校验位)中,“1”的个数为奇数,如: 1 0110,0101 0 0110,0001 偶校验:所有传送的数位(含字符的各数位和校验位)中,“1”的个数为偶数,如: 1 0100,0101

51单片机与蓝牙串口通信程序

#include #include #include #include "LCD1602.h" #include "matrix_key.h" #define uint unsigned int #define uchar unsigned char #define Nop() _nop_() sbit P10 = P1^0; /*定义独立对地按键端口*/ sbit P11 = P1^1; /*定义独立对地按键端口*/ sbit P12 = P1^2; /*定义独立对地按键端口*/ sbit P13 = P1^3; /*定义独立对地按键端口*/ //shift键 bit shift_flag; bit call_flag ; bit CallIn_flag=0; bit reci_flag; bit reci_flag1; sbit sled_en_port = P3^6; /*定义数码管数据锁存器控制端口*/ sbit led_en_port = P2^5; /*定义发光二极管数据锁存器控制端口*/ sbit ds1302_en_port = P2^2; /*定义时钟的选片脚*/ uchar CallIn_Num[15];//={"00000000000"}; uchar CallOut_Num[15]={" "}; uchar m=0; //拨号指针 uchar temp='?'; uchar code clr[16]={" "}; uchar code lcd_table[16] = {"Ky: Cm: Re: "}; //uchar send_buff[15]; uchar reci_buff[15]={" "}; uchar z; //接收缓冲区指针 uchar time;//定时器中断次数 uchar code mun_to_char[]={"0123456789ABCDEF"}; /*1MS为单位的延时程序*/ void init(); void send(uchar cc); void send_f(uchar ccc); void interrupt_pro(); void key_pro(); void call_out();

相关文档
最新文档