单片机串口时序time sequence
- 格式:doc
- 大小:113.50 KB
- 文档页数:3
单片机串口收发时序引言单片机串口通信是一种常用的通信方式。
在这种通信方式中,通过发送和接收串口数据,可以实现单片机与外部设备之间的数据传输。
而正确的串口收发时序是保证通信正常进行的关键。
串口通信原理串口通信是通过发送和接收电平变化来传输数据的。
一般使用的是异步串口通信方式,其中包括发送端和接收端,发送端将数据进行序列化,并通过串口线发送给接收端,接收端将接收到的数据进行反序列化,得到原始数据。
串口收发时序串口收发时序是指在通信过程中各个时钟信号的变化情况。
下面详细介绍串口收发时序的每个步骤。
时钟信号串口通信中最重要的时钟信号是波特率,即每秒钟发送的比特数。
波特率决定了串口数据传输的速度。
一般常用的波特率有9600、115200等。
发送端时序发送端的时序可以分为以下几个步骤: 1. 准备数据:发送端首先要准备要发送的数据。
2. 数据序列化:发送端将准备好的数据进行序列化,转换成电平变化的串口信号。
3. 起始位:发送端在数据序列前加上一个起始位,用来标识数据的开始。
4. 数据位:发送端按照波特率将数据位一个一个发送出去。
5. 奇偶校验位:发送端可以选择是否加入奇偶校验位,用来检测数据是否传输出错。
6. 停止位:发送端在数据序列后加上一个或多个停止位,用来标识数据的结束。
7. 等待确认:发送端在发送完一个字节的数据后,等待接收端的确认信号,确保数据已经正确接收。
接收端时序接收端的时序可以分为以下几个步骤: 1. 等待起始位:接收端在接收数据前,等待起始位的到来,用来标识数据的开始。
2. 数据位:接收端按照波特率开始接收数据位。
3. 奇偶校验位:如果发送端加入了奇偶校验位,接收端会检测数据是否传输出错。
4. 停止位:接收端在接收完所有数据位后,等待停止位的到来,用来标识数据的结束。
5. 确认信号:接收端在接收完一个字节的数据后,发送确认信号给发送端,表示数据已经正确接收。
时序示意图下图是串口收发时序的示意图:发送端:起始位数据位奇偶校验位停止位低电平高低变化高低变化高电平------ ------- -------- ------接收端:起始位数据位奇偶校验位停止位确认信号低电平高低变化高低变化高电平高电平串口收发时序的注意事项在进行串口通信时,需要注意以下几点: 1. 波特率要设置一致:发送端和接收端的波特率要设置成相同的值,才能保证数据传输的准确性。
单片机的双机串口通信原理单片机的双机串口通信原理是通过串口连接两个单片机,使它们能够进行数据的传输和通信。
串口是一种常见的通信方式,它使用两条信号线进行数据的传输:一条是串行数据线(TXD),用于发送数据;另一条是串行接收线(RXD),用于接收数据。
通过串口通信,两个单片机可以进行双向的数据传输,实现信息的互相交流和共享。
在双机串口通信中,一台单片机充当主机(Master),另一台单片机充当从机(Slave)。
主机负责发起通信请求并发送数据,从机负责接收并响应主机发送的数据。
通信过程中,主机和从机需要遵守相同的协议和通信规则,以确保数据的正确和可靠传输。
双机串口通信的主要步骤如下:1. 端口初始化:在双机串口通信开始之前,两台单片机的串口端口需要初始化。
主机和从机需要设置相同的波特率(Baud Rate),数据位数(Data Bits)、停止位数(Stop Bits)和校验方式(Parity Bit),确保两台单片机之间的通信能够正常进行。
2. 数据发送:主机将要发送的数据写入到串口发送寄存器中,然后通过串口发送线路将数据位一位一位地发送给从机。
主机发送完所有数据位后,等待从机的响应。
3. 数据接收:从机通过串口接收线路接收主机发送的数据位,然后将接收到的数据位存放在串口接收寄存器中,等待从机的处理。
4. 数据处理:从机接收到主机发送的数据后,根据通信协议和通信规则进行数据处理。
从机可能需要对数据进行校验、解析和执行相应的操作,然后将处理结果写入到串口发送寄存器中,以供主机进行相应的处理。
5. 响应发送:从机将处理结果写入到串口发送寄存器中,然后通过串口发送线路将数据位一位一位地发送给主机。
从机发送完所有数据位后,等待主机的进一步操作。
6. 数据接收:主机通过串口接收线路接收从机发送的数据位,然后将接收到的数据位存放在串口接收寄存器中,等待主机的处理。
7. 数据处理:主机接收到从机发送的数据后,根据通信协议和通信规则进行数据处理。
计算机工作时,是在统一的时钟脉冲控制下一拍一拍地进行的。
这个脉冲是由单片机控制器中的时序电路发出的。
单片机的时序就是CPU在执行指令时所需控制信号的时间顺序,为了保证各部件间的同步工作,单片机内部电路应在唯一的时钟信号下严格地控时序进行工作,在学习51单片机的时序之前,我们先来了解下时序相关的一些概念。
既然计算机是在统一的时钟脉冲控制下工作的,那么,它的时钟脉冲是怎么来的呢?要给我们的计算机CPU提供时序,就需要相关的硬件电路,即振荡器和时钟电路。
我们学习的8051单片机内部有一个高增益反相放大器,这个反相放大器的作用就是用于构成振荡器用的,但要形成时钟,外部还需要加一些附加电路。
8051单片机的时钟产生有以下两种方法:1. 内部时钟方式:利用单片机内部的振荡器,然后在引脚XTAL1(18脚)和XTAL2(19脚)两端接晶振,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部时钟电路,外接晶振时,晶振两端的电容一般选择为30PF左右;这两个电容对频率有微调的作用,晶振的频率范围可在1.2MHz-12MHz之间选择。
为了减少寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和电容应尽可能安装得与单片机芯片靠近。
2. 外部时钟方式:此方式是利用外部振荡脉冲接入XTAL1或XTAL2。
HMOS和CHMOS单片机外时钟信号接入方式不同,HMOS型单片机(例如8051)外时钟信号由XTAL2端脚注入后直接送至内部时钟电路,输入端XTAL1应接地。
由于XTAL2端的逻辑电平不是TTL的,故建议外接一个上接电阻。
对于CHMOS型的单片机(例如80C51),因内部时钟发生器的信号取自反相器的输入端,故采用外部时钟源时,接线方式为外时钟信号接到XTAL1而XTAL2悬空。
如下图外接时钟信号通过一个二分频的触发器而成为内部时钟信号,要求高、低电平的持续时间都大于20ns,一般为频率低于12MHz的方波。
片内时钟发生器就是上述的二分频触发器,它向芯片提供了一个2节拍的时钟信号。
uart串口通信时序(原创实用版)目录1.UART 概述2.UART 串口通信时序的基本原理3.UART 串口通信时序的具体实现4.UART 串口通信时序的应用实例5.总结正文1.UART 概述UART,全称为 Universal Asynchronous Receiver/Transmitter,即通用异步收发器,是一种广泛应用于计算机硬件设备之间的串行通信接口。
UART具有全双工通信能力,既可以发送数据,也可以接收数据。
它主要由发送器、接收器和控制器三部分组成,通过将数据字符从并行转换为串行,以及将从串行转换为并行的数据字符进行传输。
2.UART 串口通信时序的基本原理UART 串口通信时序的基本原理是基于波特率进行数据传输。
波特率是指每秒钟传输的比特数,通常用来表示通信速度。
在 UART 通信中,发送方将数据字符从并行转换为串行,按位发送给接收方。
接收方收到串行数据后,再将其转换为并行数据。
发送方和接收方在通信过程中需要保持同步,这就需要通过一定的时序来进行控制。
3.UART 串口通信时序的具体实现UART 串口通信时序的具体实现主要包括以下几个方面:(1)起始位:数据传输开始时,发送方发送一个起始位,表示数据传输即将开始。
接收方检测到起始位后,开始准备接收数据。
(2)数据位:起始位之后,发送方按位发送数据。
数据位可以是 7 位或 8 位,根据不同的通信标准来确定。
接收方在收到数据位后,将其存储在缓冲区,等待后续处理。
(3)奇偶校验位:数据位发送完毕后,发送方会发送一个奇偶校验位。
奇偶校验位可以是奇校验或偶校验,用于检测数据传输过程中的错误。
接收方根据奇偶校验位对数据进行校验,以确保数据传输的正确性。
(4)停止位:奇偶校验位之后,发送方发送一个停止位,表示数据传输结束。
接收方检测到停止位后,开始进行后续处理。
4.UART 串口通信时序的应用实例UART 串口通信时序在电子设备之间进行通信时被广泛应用。
P87LPC76x Low Pincount MicrocontrollersProgramming Specifications1999 Feb 18Philips1. PINOUTFigure 1: 20, 16, 8 pins DIP pinoutThe 20 pin SO package outlines SOT163-1 is attached at the end of this document.123RST / V PP / P1.54V SS567891020191817P0.4 / CIN1A / AD1 / PDA16P0.5 / CMPREF / AD2 / PCL 15V DD 1413121112RST / V PP / P1.53V SS45678161514P0.4 / CIN1A / AD1 / PDA 13P0.5 / CMPREF / AD2 / PCL 12V DD 11109RST / V PP / P1.51V SS2348P0.4 / CIN1A / AD1 / PDA 7P0.5 / CMPREF / AD2 / PCL 6V DD5Figure 2: 44 pins PLCC bondout chipTable 1: 44 PLCC pinout (programming related pins are in bold text)PLCC44717392918286401P IN F UNCTION1VSS234 567 8P1.5/RST/VPP 9 10VSS 1112 13141516171819202122P IN F UNCTION44 43 4241403938P0.4/CIN1A/AD1/PDA 37P0.5/CMPREF/AD2/PCL3635 34333231VDD3029282726252423VDD2. PIN DESCRIPTIONSTable 2: Programming pins in different packages3. GETTING INTO THE SERIAL PROGRAMMING MODE1. Disconnect pins PCL and PDA.2. Connect VDD; the part does not support “hot insertion” into the programming socket3. Wait 20 uSec (Min) and raise V PP to 10.75V +/- 0.25V; V PP rise time is 1uSec to 100 uSec.At this point the part is in the programming mode.4. Wait t INIT = 60 uSec (Min) before beginning the serial communication to the part.5. Get out of the programming mode by connecting V PP = 0V; V PP fall time is 1uSec to 100 uSec.6. Disconnect VDD before removing the part from the socket.The programming mode enables the internal RC oscillator.During the programming mode PDA and PCL pins are Schmitt trigger inputs.Figure 3: Getting into the programming modeMNEMONIC44 pins package PIN NO.20 pins packagePIN NO.16 pins packagePIN NO.8 pins packagePIN NO.TYPE NAME AND FUNCTION VSS 10, 1542P Ground: 0V reference.VDD 23, 3115126P Power Supply: 5V +/-.5VPCL 3716137I Serial clock input for EPROM programming communication.PDA 3817148I/O Serial data I/O for EPROM programming communication.VPP8431PV PP = 10.75V +/- 0.25V I PP = 30mA during programming.PDA PCLVDDVPPtVDD = 4.5V to 5.5V; V PP = 10.75V +/- 0.25V I PP = 30mA during programming; T amb = 10°C to +40°C Table 3: Programming mode timings4. PROGRAMMING MODEThe programming commands are sent by the programmer through the PCL and PDA lines. Each programming command is one byte shifted into the part by 8 clocks.The serial interface is identical to the 51’s 8-bit serial UART mode 0; LSB is the first bit in the serial byte.PCL pin is the clock input from the programmer.PDA pin is the data I/O. Data is enabled on the falling edge of PCL, and is clocked on the rising edge of PCL.Data output from the part is disabled after the rising edge of PCL for the last bit in a data byte.Figure 4: Writing programming commands by the programmerTable 4: Programming commandsSYMBOL FIGUREPARAMETERLIMITS UNIT MIN MAX t VDDVPP V DD HIGH to V PP rising edge20us t VPPLH V PP rise time 1100us t VPPHL V PP fall time1100us t INITV PP = 10.75V to the beginning of serial communication60usNAME OPCODE FUNCTIONNOP00H Not usedLOAD_DATA 02H Load address counter with the next data byteRD_DATA 04H Read data byte addressed by the program counterINC_ADDR 06H Increment address counterLD_ADRR_LO 08H Load 8 LOW address bits into programming counter LD_ADRR_HI 0AH Load 8 HIGH address bits into programming counterSTRT_PRGM 0CH Start programming a data byte; always followed by the Stopt programming command STP_PRGM 0EHStop programming a data byte; always follows the Start programming command.PDALSB bitMSB bitPCLNotes:Wait 2 uSec between any two programming commands (except “Start Programming” to “Stop Programming”)Wait 250uSec between “Start Programming” and “Stop Programming” commands.Example of a sequence of programming commandsTable 5: Sequence of programming commandsFigure 5: Reading data by the programmerLD_ADDR_LO Wait 2uSec XX DATA Wait 2uSec LD_ADDR_HI Wait 2uSec XX DATA Wait 2uSec LOAD_DATA Wait 2uSec XX DATA Wait 2uSec READ_DATA Wait 2uSec XX DATA Wait 2uSec INC_ADDR Wait 2uSec LOAD_DATA Wait 2uSec XX DATA Wait 2uSec STRT_PRGM Wait 250uSec STP_PRGMWait 2uSecSYMBOL FIGUREPARAMETERLIMITS UNIT MINMAX t SC 5Serial clock cycle time0.21000us t WAIT 5Wait between two serial bytes2us t WAITP 5Wait after a “Start Programming” command250us t SDSU 4Serial data setup time to the rising edge of the serial clock 40ns t SDH 5Serial data hold time after the rising edge of the serial clock 10ns t SCLDV 5Serial clock LOW to valid data of the first data bit in a byte 40ns t SCHZ5Serial clock HIGH to data Hi-Z at the last data bit in a byte40nsPDALSBMSB PCLTable 6: Programming commands timingAddress Memory Definition0000H to 0FFFH User’s code; program/read by the programmerFC30H Company signature 15H - Read only by programmerFC31H Part’s signature DDH - Read only by the programmerFC60H Derivative’s signature 00H - Read only by the programmerFCE0H to FCFFH32 bytes used as user’s parameters; program/read by the programmerFD00H User Configuration Reg. #1 (UCFG1) program/read by the programmerFD01H User Configuration Reg. #2 (UCFG2) program/read by the programmerTable 7: EPROM MappingThe programmer programs the user’s code at address 0 to FFFH and configuration registers located at address FCE0H to FD01H. These configuration registers configure the chip’s modes of operation.5. USER CONFIGURATION REG. #1 (UCFG1) AT ADDRESS FD00H76543210 Programmed bits WDTE RPD PRHI BO2.5CLKR FOSC2FOSC1FOSC0Erased State FFHTable 8: User Configuration Register #1WDTE: WatchDog Timer Enable;1 = (Erased) WDT enabled0 = (Programmed) WDT disabledRPD: Reset Pin Disable;1(Erased) External Reset pin disabled (The internal power-on reset is enabled)0 (Programmed) External Reset pin enabledPRHI: Port Reset High;1 = Enable ports to high during and after RESET0 = Enable ports to low during and after RESETBO2.5: Brown out at 2.5V;1 = Enable brown out at 2.5V0 = Enable brown out at 3.8VCLKR: CLock Rate select;1 = Enable divide by 1 of clock (6 clocks per machine cycle)0 = Enable divide by 2 of clock (12 clocks per machine cycle)FOSC2 - FOSC0: Oscillator control bits;FOSC2FOSC1FOSC0External clock input at pin X1111Internal RC clock; 6MHz +/- 25%01132KHz to 100KHz external Crystal/Resonator010100KHz to 4 MHz external Crystal/Resonator0014 MHz to 20 MHz external Crystal/Resonator000Table 9: FOSC2-FOSC0 bit function6. USER CONFIGURATION REG. #2 (UCFG2 AT ADDRESS FD01H)76543210 Programmed bits SEC2SEC1Erased State FFHTable 10: User Configuration Register #2SEC2-SEC1: SECurity bits 2 & 1;11 = Security bits unprogrammed; Programming and Verify allowed.10 = Security bit 2 unprogrammed; 1 programmed; Programming disabled, Verify enabled.00 = Both bits programmed; Programming and Verify disabled7. 32 REGISTERS OF USER’S PARAMETERS (FCE0H TO FCFFH)The 32 registers of user’s parameters are programmed as code located at address FCE0H to FCFFH.The content of the 32 parameter registers and the two configuration registers are defined by the HEX file at addresses:FCE0H to FCFFH32 bytes used as user’s parameters; program/read by the programmerFD00H User Configuration Reg. #1 (UCFG1) program/read by the programmerFD01H User Configuration Reg. #2 (UCFG2) program/read by the programmerThe user should be able to display, edit, program and verify the two configuration registers and the user’s 32 bytes located at address FCE0H to FCFFH.Philips SemiconductorsPackage outlinesSO20:plastic small outline package; 20 leads; body width 7.5 mm SOT163-1。
串行通信(Serial Communication)
方式0。
串行口为同步移位寄存器的输入\输出方式,主要用于扩展并行输入或输出口。
对51单片机,数据由RXD(P3.0)引脚输入或输出,同步移位脉冲由TXD(P3.1)引脚输出。
发送和接收均为8位数据,低位在先,高位在后,波特率固定为f osc/12.
方式1。
方式1是10位数据的异步通信口,其中,1位起始位,8位数据位,1位停止位。
TXD(P3.1)为数据发送引脚,RXD(P3.0)为数据接收引脚。
其传输波特率是可变的,对于51单片机,波特率由定时器1的溢出率决定。
方式1的使用很普遍,需要完全掌握。
方式2,3。
方式2,3为11位数据的异步通信口。
TXD(P3.1)为数据发送引脚,RXD (P3.0)为数据接收引脚。
这两种方式下起始位1位,数据9位(含一位附加的第9位,发送时为SCON的TB8,接收时为RB8),停止位1位,一帧数据为11位。
方式2的波特率固定为晶振频率的1/64或1/32。
方式3的波特率由定时器T1的溢出率决定。
方式2和方式3的差别仅在于波特率的选取方式不同,在两种方式下,接受到的停止位与SBUF、RB8及RI都无关。
串行口基本结构
SBUF相当于一个8位的寄存器。
SBUF共用一个地址99H,但是在物理上是两个独立的寄存器,由指令操作决定访问哪一个寄存器。
接收器具有双缓冲结构,即在从接收寄存器中读出前一个已收到的字节之前,便能接收第二个字节。
若果第二个字节已接收完毕,第一个字节还没有读出,则将丢失第一个字节。
串行口方式1的时序(Time Sequence)
串行口方式1传送一帧数据(A frame of data)的格式如下:
一帧数据供10位,1位起始位(0),8位数据位,最低位在前,最高位在后,1位停止位(1),帧与帧之间有空闲,也可以无空闲。
方式1数据输出时序图如下:
方式1数据输出时序图
当数据被写入SBUF寄存器后,单片机自动开始从起始位发送数据,发送到停止位的开始时,由内部硬件将TI置1,向CPU申请中断,接下来可在中断服务程序中作相应处理,也可以选择不进入中断。
方式1数据输入时序图
用软件置REN为1时,接收器以所选择波特率的16倍速率采样RXD引脚电平,检测到RXD引脚输入电平发生负跳变时,则说明起始位有效,将其移入输入移位寄存器,并开始接收这一帧信息的其余位。
接收过程中,数据从输入移位寄存器右边移入,起始位移至输
入移位寄存器最左边时,控制电路进行最后一次移位,当RI=0,且SM=2(或接收到的停止位为1)时,将接收到的9位数据的前8位数据装入接收SBUF,第9位(停止位)进入RB8,并置RI=1,向CPU请求中断。