uart通信过程,uart通信协议主要内容

http://www.itjxue.com  2023-01-22 14:37  来源:未知  点击次数: 

三种通信模式SPI、UART、I2C它们的工作原理

这三种通信模式都是串行总线。

SPI总线

MOTOROLA公司的SPI总线的基本信号线为3根传输线,即SI、SO、SCK。传输的速率由时钟信号SCK决定,SI为数据输入、SO为数据输出。采用SPI总线的系统如图8-27所示,它包含了一个主片和多个从片,主片通过发出片选信号-CS来控制对哪个从片进行通信,当某个从片的-CS信号有效时,能通过SI接收指令、数据,并通过SO发回数据。而未被选中的从片的SO端处于高阻状态。主设备通过产生移位时钟来发起通讯。通讯时,数据由SO

输出,SI

输入,数据在时钟的上升或下降沿由SO

输出,在紧接着的下降或上升沿由SI

读入,这样经过8/16

次时钟的改变,完成8/16

位数据的传输。

I2C总线

I2C(Inter-Integrated

Circuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C串行总线有两根信号线:一根双向的数据线SDA;另一根是时钟线SCL。所有接到I2C总线上的设备的串行数据都接到总线的SDA线,各设备的时钟线SCL接到总线的SCL。

I2C总线按字节传输,即每次传输8bits二进制数据,传输完毕后等待接收端的应答信号ACK,收到应答信号后再传输下一字节。等不到ACK信号后,传输终止。空闲情况下,SCL和SDA都处于高电平状态。

UART通信

UART:Universal

Asynchronous

Receiver/Transmitter,通用异步接收/发送装置。UART首先将并行数据转换成串行数据来传输。消息帧从一个低位起始位开始,后面是5~8个数据位,一个可用的奇偶位和一个或几个高位停止位。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用来与PC进行通信。

UART什么意思

我这有很多解释(从各个角度,望采纳):

UART就是Universal Asynchronous Receiver/Transmitter的缩写,通用异步接收/发送装置,UART是一个并行输入成为串行输出的芯片,通常集成在主板上,多数是16550AFN芯片。

UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用来与PC进行通信,包括与监控调试器和其它器件,如EEPROM通信。

因为计算机内部采用并行数据,不能直接把数据发到Modem,必须经过UART整理才能进行异步传输,其过程为:CPU先把准备写入串行设备的数据放到UART的寄存器(临时内存块)中,再通过FIFO(First Input First Output,先入先出队列)传送到串行设备,若是没有FIFO,信息将变得杂乱无章,不可能传送到Modem。

它是用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了。作为接口的一部分,UART还提供以下功能:将由计算机内部传送过来的并行数据转换为输出的串行数据流。将计算机外部来的串行数据转换为字节,供计算机内部使用并行数据的器件使用。在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验。在输出数据流中加入启停标记,并从接收数据流中删除启停标记。处理由键盘或鼠标发出的中断信号(键盘和鼠标也是串行设备)。可以处理计算机与外部串行设备的同步管理问题。有一些比较高档的UART还提供输入输出数据的缓冲区,现在比较新的UART是16550,它可以在计算机需要处理数据前在其缓冲区内存储16字节数据,而通常的UART是8250。现在如果您购买一个内置的调制解调器,此调制解调器内部通常就会有16550 UART。

UART是计算机中串行通信端口的关键部分。在计算机中,UART相连于产生兼容RS232规范信号的电路。RS232标准定义逻辑“1”信号相对于地为-3到-15伏,而逻辑“0”相对于地为3到15伏。所以,当一个微控制器中的UART相连于PC时,它需要一个RS232驱动器来转换电平。

Uart这里指的是TTL电平的串口;RS232指的是RS232电平的串口。

TTL电平是3.3V的,而RS232是负逻辑电平,它定义+5~+12V为低电平,而-12~-5V为高电平。

Uart串口的RXD、TXD等一般直接与处理器芯片的引脚相连,而RS232串口的RXD、TXD等一般需要经过电平转换(通常由Max232等芯片进行电平转换)才能接到处理器芯片的引脚上,否则这么高的电压很可能会把芯片烧坏。

我们平时所用的电脑的串口就是RS232的,当我们在做电路工作时,应该注意下外设的串口是Uart类型的还是RS232类型的,如果不匹配,应当找个转换线(通常这根转换线内有块类似于Max232的芯片做电平转换工作的),可不能盲目地将两串口相连

谁和我说一下UART串口通信是如何接收发送数据的,while里面我这么编写, 下面是我的理解和问题

串口只有一条数据线一条地线, 所以数据是以串行方式发送的,所谓串行就是数据按bit位依次发送,如下图

除了数据本身外一头一尾加上起始位和停止位(通知接收端表示数据的开始和结束), 有时还有校验位(发送数据的奇偶校验码), 取决于串口的工作方式.

比如你在串口助手上发送字符串abc, 实际串口发送是发送字母a,再发送字母b,c等

再详细一点,字母a,二进制数表示是1100001, 发送它的流程是:

1)发送停止位

2)依次发送 1 0 0 0 0 1 1 ?(低位在前)

3)发送校验位

4)发送停止位

5)空闲

.....(下一字母发送)

单片机的串行通信UART

定时器1工作在自动重装模式时,不需要软件加以干预,就可以为uart的波特率提供连续稳定的时钟。之所以只能用定时器1作为uart的波特率时钟,这是由单片机内部硬件所决定的。但并不是定时器1工作在自动重装模式时才成为uart的波特率,定时器1工作在其它模式也可以为uart提供波特率时钟,比如工作在模式1(16位定时/计数),uart在低速率运行时就可以采用这种定时器模式,但由于这种工作模式不能自动重装计数初值,这就需要软件的干预,在定时器计数溢出时,通过软件指令装填计数初值,使定时器执行新一轮计数循环,以便为uart的波特率提供连续时钟。以上拙见仅供参考,希望对你有帮助。

(责任编辑:IT教学网)

更多

推荐测评专题文章