<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>UART &#8211; 张三太爷</title>
	<atom:link href="https://www.somedoc.net/tag/uart/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.somedoc.net</link>
	<description>看前面，黑洞洞</description>
	<lastBuildDate>Tue, 31 Mar 2020 09:40:22 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.1</generator>

<image>
	<url>https://www.somedoc.net/wp-content/uploads/2016/12/cropped-dandycheung-1-32x32.jpg</url>
	<title>UART &#8211; 张三太爷</title>
	<link>https://www.somedoc.net</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>UART 基础知识</title>
		<link>https://www.somedoc.net/2020/03/31/uart-%e5%9f%ba%e7%a1%80%e7%9f%a5%e8%af%86/</link>
					<comments>https://www.somedoc.net/2020/03/31/uart-%e5%9f%ba%e7%a1%80%e7%9f%a5%e8%af%86/#respond</comments>
		
		<dc:creator><![CDATA[张三太爷]]></dc:creator>
		<pubDate>Tue, 31 Mar 2020 09:40:22 +0000</pubDate>
				<category><![CDATA[备忘录]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[UART]]></category>
		<category><![CDATA[串口]]></category>
		<guid isPermaLink="false">http://www.somedoc.net/?p=4419</guid>

					<description><![CDATA[文章内容主要来自于 http://www.elecfans. <a href="https://www.somedoc.net/2020/03/31/uart-%e5%9f%ba%e7%a1%80%e7%9f%a5%e8%af%86/" class="more-link">[&#8230;]</a>]]></description>
										<content:encoded><![CDATA[<p>文章内容主要来自于 http://www.elecfans.com/emb/jiekou/20171206595886.html。</p>
<h2><strong>UART 串口</strong></h2>
<p>通用异步接收器和发送器（Universal Asynchronous Receiver and Transmitter） 简称为 UART，通常是嵌入式设备中默认都会配置的通信接口。这是因为，很多嵌入式设备没有显示屏，无法获得嵌入式设备实时数据信息，通过 UART 串口和超级终端相连，可以打印嵌入式设备输出的信息。在对嵌入式系统进行跟踪和调试时，UART 串口也是必要的通信手段。比如网络路由器、交换机等都要通过串口来进行配置。UART 串口还是许多硬件数据输出的主要接口，如 GPS 接收器就是通过 UART 串口输出 GPS 接收数据的。</p>
<h2><strong>UART 功能</strong></h2>
<p>计算机内部采用并行数据，不能直接把数据发到 Modem，必须经过 UART 整理才能进行异步传输。其过程为：CPU 先把准备写入串行设备的数据放到 UART 的寄存器（临时内存块）中，再通过 FIFO（First Input First Output，先入先出队列）传送到串行设备，若是没有 FIFO，信息将变得杂乱无章，不可能传送到 Modem。</p>
<p>UART 是用于控制计算机与串行设备的芯片。有一点要注意的是，它提供了 RS-232C 数据终端设备接口，这样计算机就可以和调制解调器或其它使用 RS-232C 接口的串行设备通信了。作为接口的一部分，UART 还提供以下功能：将由计算机内部传送过来的并行数据转换为输出的串行数据流。将计算机外部来的串行数据转换为字节，供计算机内部并行数据的器件使用。在输出的串行数据流中加入奇偶校验位，并对从外部接收的数据流进行奇偶校验。在输出数据流中加入启停标记，并从接收数据流中删除启停标记。处理由键盘或鼠标发出的中断信号（键盘和鼠标也是串行设备）。可以处理计算机与外部串行设备的同步管理问题。有一些比较高档的 UART 还提供输入输出数据的缓冲区，比较新的 UART 是 16550，它可以在计算机需要处理数据前在其缓冲区内存储 16 字节数据，而通常的 UART 是 8250。如果你购买一个内置的调制解调器，此调制解调器内部通常就会有 16550 UART。</p>
<h2><strong>UART 基本结构</strong></h2>
<div><a href="http://www.somedoc.net/wp-content/uploads/2020/03/uart-1.jpg" class="highslide-image" onclick="return hs.expand(this);"><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-4420" src="http://www.somedoc.net/wp-content/uploads/2020/03/uart-1.jpg" alt="" width="498" height="229" /></a></div>
<ol>
<li>输出缓冲寄存器，它接收 CPU 从数据总线上送来的并行数据，并加以保存；</li>
<li>输出移位寄存器，它接收从输出缓冲器送来的并行数据，以发送时钟的速率把数据逐位移出，即将并行数据转换为串行数据输出；</li>
<li>输入移位寄存器，它以接收时钟的速率把出现在串行数据输入线上的数据逐位移入，当数据装满后，并行送往输入缓冲寄存器，即将串行数据转换成并行数据；</li>
<li>输入缓冲寄存器，它从输入移位寄存器中接收并行数据，然后由 CPU 取走；</li>
<li>控制寄存器，它接收 CPU 送来的控制字，由控制字的内容，决定通信时的传输方式以及数据格式等。例如采用异步方式还是同步方式，数据字符的位数，有无奇偶校验，是奇校验还是偶校验，停止位的位数等参数；</li>
<li>状态寄存器。状态寄存器中存放着接口的各种状态信息，例如输出缓冲区是否空，输入字符是否准备好等。在通信过程中，当符合某种状态时，接口中的状态检测逻辑将状态寄存器的相应位置“1”，以便让 CPU 查询。</li>
</ol>
<h2><strong>异步通信和同步通信</strong></h2>
<p><a href="http://www.somedoc.net/wp-content/uploads/2020/03/uart-2.jpg" class="highslide-image" onclick="return hs.expand(this);"><img decoding="async" class="aligncenter size-full wp-image-4421" src="http://www.somedoc.net/wp-content/uploads/2020/03/uart-2.jpg" alt="" width="781" height="610" /></a></p>
<p style="text-align: center;"><strong>图 同步信号与异步信号</strong></p>
<h3><strong>同步通信技术</strong></h3>
<p>在发送数据信号的时候，会同时送出一根同步时钟信号， 用来同步发送方和接收方的数据采样频率。如图2-56所示，同步通信时，信号线1是一根同步时钟信号线，以固定的频率进行电平的切换，其频率周期为t，在每个电平的上升沿之后进行对同步送出的数据信号线2进行采样（高电平代表1，低电平代表0），根据采样数据电平高低取得输出数据信息。如果双方没有同步时钟的话，那么接收方就不知道采样周期，也就不能正常的取得数据信息。</p>
<h3><strong>异步通信技术</strong></h3>
<p>在异步通信技术中，数据发送方和数据接收方没有同步时钟，只有数据信号线，只不过发送端和接收端会按照协商好的协议（固定频率）来进行数据采样。数据发送方以每秒钟57600bits的速度发送数据，接收方也以57600bits的速度去接收数据，这样就可以保证数据的有效和正确。通常异步通信中使用波特率（Baud-Rate）来规定双方传输速度，其单位为bps（bits per second每秒传输位数）。</p>
<h3>数据的串行和并行通信方式</h3>
<p>串行通信好比是一列纵队，每个数据元素依次纵向排列。如图2-57所示，传输时一个比特一个比特的串行传输，每个时钟周期传输一个比特，这种传输方式相对比较简单，速度较慢，但是使用总线数较少，通常一根接收线，一根发送线即可实现串行通信。它的缺点是要增加额外的数据来控制一个数据帧的开始和结束。</p>
<p>并行通信好比一排横队，齐头并进同时传输。这种通信方式每个时钟周期传输的数据量和其总线宽度成正比，但是实现较为复杂。UART通信采用的是串行方式进行通信的。</p>
<p><a href="http://www.somedoc.net/wp-content/uploads/2020/03/uart-3.jpg" class="highslide-image" onclick="return hs.expand(this);"><img decoding="async" class="aligncenter size-full wp-image-4422" src="http://www.somedoc.net/wp-content/uploads/2020/03/uart-3.jpg" alt="" width="769" height="518" /></a></p>
<p style="text-align: center;"><strong>图 串行数据通信与并行数据通信</strong></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.somedoc.net/2020/03/31/uart-%e5%9f%ba%e7%a1%80%e7%9f%a5%e8%af%86/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>串口和串口，不能串了口</title>
		<link>https://www.somedoc.net/2020/03/18/%e4%b8%b2%e5%8f%a3%e5%92%8c%e4%b8%b2%e5%8f%a3%ef%bc%8c%e4%b8%8d%e8%83%bd%e4%b8%b2%e4%ba%86%e5%8f%a3/</link>
					<comments>https://www.somedoc.net/2020/03/18/%e4%b8%b2%e5%8f%a3%e5%92%8c%e4%b8%b2%e5%8f%a3%ef%bc%8c%e4%b8%8d%e8%83%bd%e4%b8%b2%e4%ba%86%e5%8f%a3/#comments</comments>
		
		<dc:creator><![CDATA[张三太爷]]></dc:creator>
		<pubDate>Wed, 18 Mar 2020 03:25:18 +0000</pubDate>
				<category><![CDATA[备忘录]]></category>
		<category><![CDATA[技术]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[RS232]]></category>
		<category><![CDATA[TTL]]></category>
		<category><![CDATA[UART]]></category>
		<category><![CDATA[串口]]></category>
		<guid isPermaLink="false">http://www.somedoc.net/?p=4387</guid>

					<description><![CDATA[去年有一阵子，手里有好几块板子。有 Orange Pi Ze <a href="https://www.somedoc.net/2020/03/18/%e4%b8%b2%e5%8f%a3%e5%92%8c%e4%b8%b2%e5%8f%a3%ef%bc%8c%e4%b8%8d%e8%83%bd%e4%b8%b2%e4%ba%86%e5%8f%a3/" class="more-link">[&#8230;]</a>]]></description>
										<content:encoded><![CDATA[<p>去年有一阵子，手里有好几块板子。有 Orange Pi Zero/Zero Plus，Nano Pi，也有 Rock Pi，甚至还试了华硕的一块 TinkerBoard。在系统引导出现问题的时候，一开始束手无策，到后来才经高人指点，说有一种东西叫 TTL 串口，可以把板子上的针脚和电脑的 USB 连起来，然后就可以在串口程序里观测到板子启动早期的很多输出信息。一直以来对串口的认识就是电脑上的九针 D 口，TTL 串口的出现吹皱了一池春水。</p>
<p>这几天看资料，又看到了 UART，这个东西也是很久以前遇到又放开了的，例如 MTK 解决方案的手机，有很多的里面都有 UART 相关的设置项，当时看上去和串口通讯也是有关联的。于是想把这些略微串一下。</p>
<p><strong>UART 与 COM</strong></p>
<p>嵌入式里面说的串口，一般是指 UART 口， 但是我们经常搞不清楚它和 COM 口的区别,  以及 RS232、TTL 等的关系。 实际上 UART、COM 指的是物理接口的形式（硬件），而 TTL、RS-232 是指的电平标准（电信号）。</p>
<p>UART 有 4 个针脚（也就是 pin），分别为 VCC、GND、RX、TX，用的 TTL 电平，低电平为 0（0V），高电平为 1（3.3V+）。</p>
<p><a href="http://www.somedoc.net/wp-content/uploads/2020/03/4pin-ttl.jpg" class="highslide-image" onclick="return hs.expand(this);"><img loading="lazy" decoding="async" class="aligncenter  wp-image-4399" src="http://www.somedoc.net/wp-content/uploads/2020/03/4pin-ttl.jpg" alt="" width="140" height="191" /></a></p>
<p>COM 口是 PC 上面常用的外设接口，9 个针脚， 用的 RS232 电平。它是负逻辑电平，其定义 +5~+12V 为低电平，而 -12~-5V 为高电平。</p>
<p><a href="http://www.somedoc.net/wp-content/uploads/2020/03/9pin-rs232.jpg" class="highslide-image" onclick="return hs.expand(this);"><img loading="lazy" decoding="async" class="aligncenter  wp-image-4400" src="http://www.somedoc.net/wp-content/uploads/2020/03/9pin-rs232.jpg" alt="" width="422" height="179" /></a></p>
<p><strong>UART 的特征</strong></p>
<p>UART 控制器在嵌入式系统里面一般都跟 CPU 做在一起。像飞思卡尔的 IMX6 芯片，有多个 UART 控制器。</p>
<p><strong>针脚介绍</strong>（COM 口常用的也是这几个）：</p>
<ul>
<li><strong>VCC：</strong>供电针脚。一般是 3.3v，板子上若没有过电保护，这个 pin 一般不接更安全；</li>
<li><strong>GND：</strong>接地。有的时候 rx 接受数据有问题可以接上这个 pin，一般也可不接；</li>
<li><strong>RX：</strong>接收数据 pin；</li>
<li><strong>TX：</strong>发送数据 pin。</li>
</ul>
<p>调试的时候多数情况下只引出 rx，tx 即可。比如调试 GPS 模块，IC 数据直接通过 UART 上报，直接用两条线引出了 rx、tx，连上串口转 USB 小板，电脑可以从串口直接获取数据，这样就跳过了开发板。</p>
<p><strong>使用方法</strong></p>
<p>用 UART 口进行调试，数据要传到电脑上分析就要匹配电脑的接口，COM 口或 USB 口（最终在电脑上其实是一个虚拟的 COM 口），但是要想连上这两种接口都要需要进行硬件接口转换和电平转换。</p>
<p>如果连接电脑 COM 口，需要一个类似下图的转换小板，它实现了 TTL 电平和 RS232 电平的互转。</p>
<p><a href="http://www.somedoc.net/wp-content/uploads/2020/03/ttl-rs232.jpg" class="highslide-image" onclick="return hs.expand(this);"><img loading="lazy" decoding="async" class="aligncenter  wp-image-4401" src="http://www.somedoc.net/wp-content/uploads/2020/03/ttl-rs232.jpg" alt="" width="316" height="254" /></a></p>
<p>如果要连接电脑 USB 接口，则需要类似下面的小板。它实现了 TTL 电平和 USB 电平的转换，这种现在使用的较多。</p>
<p><a href="http://www.somedoc.net/wp-content/uploads/2020/03/ttl-usb.png" class="highslide-image" onclick="return hs.expand(this);"><img loading="lazy" decoding="async" class="aligncenter  wp-image-4402" src="http://www.somedoc.net/wp-content/uploads/2020/03/ttl-usb.png" alt="" width="261" height="192" /></a></p>
<p>电路图和连接如下，通常上面有个专门转换芯片。</p>
<p><a href="http://www.somedoc.net/wp-content/uploads/2020/03/ttl-usb-diag.jpg" class="highslide-image" onclick="return hs.expand(this);"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-4403" src="http://www.somedoc.net/wp-content/uploads/2020/03/ttl-usb-diag.jpg" alt="" width="598" height="251" /></a></p>
<p><strong>总结</strong></p>
<p>1、串口、COM 口是指的物理接口形式（硬件）。而 TTL、RS-232、RS-485 是指的电平标准（电信号）；<br />
2、接设备的时候，一般只接 GND RX TX。不会接 VCC 或者+3.3v 的电源线，避免与目标设备上的供电冲突；<br />
3、PL2303、CP2102 芯片是 USB 转 TTL 串口 的芯片，用 USB 来扩展串口（TTL 电平）；<br />
4、MAX232 芯片是 TTL 电平与 RS232 电平的专用双向转换芯片，可以 TTL 转 RS-232，也可以 RS-232 转 TTL；<br />
5、TTL 标准是低电平为 0，高电平为 1（+5V 电平）；RS-232 标准是正电平为 0，负电平为 1（±15V 电平）；<br />
6、RS-485 与 RS-232 类似，但是采用差分信号负逻辑（略）。</p>
<p><strong>其他</strong></p>
<p>串口进行通信的方式有两种：同步通信方式和异步通信方式。</p>
<ul>
<li>SPI（Serial Peripheral Interface：串行外设接口）；</li>
<li>I2C（INTER IC BUS：IC 间总线），一（host）对多，以字节为单位发送；</li>
<li>UART（Universal Asynchronous Receiver Transmitter：通用异步收发器）， 一对一，以位为单位发送。</li>
</ul>
<p>更新</p>
<ul>
<li>CSDN 太小气，不让外链图片，所以本地化了一下。</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.somedoc.net/2020/03/18/%e4%b8%b2%e5%8f%a3%e5%92%8c%e4%b8%b2%e5%8f%a3%ef%bc%8c%e4%b8%8d%e8%83%bd%e4%b8%b2%e4%ba%86%e5%8f%a3/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
