UART学习之路(一)基本概念
第一篇博客,首先记录一下这一个多星期来的学习内容。
UART学习之路第一篇,是UART的基本概念介绍。后续会用STM32F103的串口与PC机通信。最后使用Verilog HDL写出串口发送模块和接收模块,完成仿真,在ZedBoard板上完成通信。
首先明确什么是UART,COM口,TTL,RS-232。
通用异步收发传送器(Universal Asynchronous Receiver/Transmitter, UART)有4个管脚分别为VCC,GND,TX,RX,电平标准为TTL电平。低电平为0,高电平(3.3V)为1。左图为UART转USB接口。
VCC | UART的电源口,电压为3.3V |
GND | UART的地 |
TX/TXD | UART的数据发射口 |
RX/RXD | UART的数据接收口 |
串行通讯端口(Cluster Communication Port, COM)为DB9或者DB25。电平标准为RS-232,低电平为+5~+12V,高电平为-12~-5V。电平接口的详细定义见下图。
扩展:
1.RS-485是将数据用负逻辑差分信号的形式传送的。+2V~+6V表示低电平,- 6V~- 2V表示高电平;
2.芯片上的某类引脚可以被设置为UART的RX和TX口。使用杜邦线将RX和TX与外设连接起来就可以实现信息传递,例如控制智能液晶屏(USART HMI);
3.UART转成COM口需要将TTL电平转换成RS-232电平,可以用芯片MAX232实现。
4.UART转成USB的电平需要使用PL2303芯片。
总结:
UART和COM是硬件上的接口方式,而TTL和RS-232规定了电平的标准。UART一般使用杜邦线将TX和RX与外设连接,而COM口则使用DB9与外设连接。对比两种连接方式,杜邦线是导线直接连接,在连接端一般有卡槽用来卡紧接口,DB9自带锁紧螺钉,接口的扎实程度上DB9要好很多。但是杜邦线比较小巧和灵活,而DB9则要大很多。使用哪种硬件接口取决于当时的需求,而采用哪种电平标准则看从设备和主设备支持怎样的电平。所以重点在电平标准与需求的搭配。
补充:
通用同步/异步串行接收/发送器(Universal Synchronous/Asynchronous Receiver/Transmitter, USART)可以理解为UART的升级版本,在时钟上可以设置为同步时钟或者异步时钟。但在使用USART的时候一般是作为UART使用的。
波特率、比特率和奇偶校验
1.波特率:在某通道下,每秒传送被定义的符号(symbol)的速率。也就是每秒调制状态变化的次数。单位是baud, symbol/s。
2.比特率:每秒传送的比特数,单位是bit/s。
3.奇偶校验:根据传送的一组二进制码中1的个数是奇数还是偶数来进行校验,采用奇数为标准就是奇校验,反之为偶校验。
举例子详细说明:
1.波特率和比特率
定义传送的符号为一个字节(8bit),如果每秒能传送240个字节,则波特率为240Baud。串口的比特率为9600bit/s,则串口的波特率为9600/8=1200Baud。如果定义传送的的符号为一个比特(1bit),如果每秒能传送9600个bit,则波特率为9600Baud,而比特率是9600bit/s。
2.奇偶校验
假设传送的一组数据为1100。以奇校验为例子,该组数据的1的个数为2个,则奇偶校验位是0。将数据以1100 0的形式发送,在接收端接收的数据为1101 0,此时数据为1101,奇偶校验位应该为1,而收到的奇偶校验位是0,因此说明数据错误。
UART学习之路(一)基本概念的更多相关文章
- UART学习之路(四)VerilogHDL实现的简单UART,VIVADO下完成仿真
用VerilogHDL实现UART并完成仿真就算是对UART整个技术有了全面的理解,同时也算是Verilog入门了.整个UART分为3部分完成,发送模块(Transmitter),接收模块(Recei ...
- UART学习之路(三)基于STM32F103的USART实验
关于STM32串口的资料可以在RM0008 Reference Manual中找到,有中文版的资料.STM32F103支持5个串口,选取USART1用来实验,其对应的IO口为PA9和PA10.这次的实 ...
- UART学习之路(二)基本时序介绍
这次我们来介绍一下UART的基本时序,了解一下底层信号怎么传送的.方便以后使用Verilog HDL实现收发逻辑. 9600bit/s 的意思是每秒发送9600bit,因此可以理解为将1s分解为960 ...
- spring源码学习之路---AOP初探(六)
作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 最近工作很忙,但当初打算学习 ...
- Linux内核学习之路
每当学习到一定阶段自己觉得还行时,就会搜一些别人的文章. 这篇文章是原作者14年3月写的.转过来与自己共勉.学习累了就换着学也挺好 原文: 现在回首看看,接触Linux已经很长时间了. 在大三的时候开 ...
- OpenGL学习之路(一)
1 引子 虽然是计算机科班出身,但从小对几何方面的东西就不太感冒,空间想象能力也较差,所以从本科到研究生,基本没接触过<计算机图形学>.为什么说基本没学过呢?因为好奇(尤其是惊叹于三维游戏 ...
- [EntLib]微软企业库5.0 学习之路——第一步、基本入门
话说在大学的时候帮老师做项目的时候就已经接触过企业库了但是当初一直没明白为什么要用这个,只觉得好麻烦啊,竟然有那么多的乱七八糟的配置(原来我不知道有配置工具可以进行配置,请原谅我的小白). 直到去年在 ...
- WPF学习之路初识
WPF学习之路初识 WPF 介绍 .NET Framework 4 .NET Framework 3.5 .NET Framework 3.0 Windows Presentation Found ...
- 初次踏上GUI编程之路(有点意思,详细介绍了菜鸟的学习之路)
初次踏上GUI编程之路 —— 我的Qt学习方法及对Qt认识的不断转变 -> 开始接触GUI与开始接触Qt: 话说,我第一次看见“Qt”这一个名词,好像是在CSDN网站的主页上吧,因为CSDN好像 ...
随机推荐
- 在VisualStudio中远程调试IIS站点
如何在本地调试服务器上的站点? 如果要在本地调试服务器上的站点我们需要用到一个远程调试工具msvsmon.exe. 我们可以再VS安装目录中找到它 如:C:\Program Fil ...
- 沉淀再出发:java中的equals()辨析
沉淀再出发:java中的equals()辨析 一.前言 关于java中的equals,我们可能非常奇怪,在Object中定义了这个函数,其他的很多类中都重载了它,导致了我们对于辨析其中的内涵有了混淆, ...
- 定义类、System.Object对象、构造函数与析构函数、抽象类与静态类
一.类定义 class MyClass { //类成员 } 1.访问级别 默认访问级别为internal(内部类),也可以是public(公共类) internal(内部类):当前项目中的代码才能访问 ...
- URAL-1018 Binary Apple Tree---树形DP
题目链接: https://cn.vjudge.net/problem/URAL-1018 题目大意: 给你一棵树,每条边有一个边权,求以1为根节点,q条边的子数(q+1个点),边权和至最大. 解题思 ...
- (八)Linux之挂载命令
挂载命令 其实挂载在Linux中可以理解为分配盘符的意思.想一下,比如一张光盘插入了Linux系统的 电脑上,要想读取其中的内容,需要做哪些操作呢?首先你要考虑的是这张外来光盘的的数据也是 外来的,如 ...
- Python version 3.6 required, which was not found in the registry错误解决
问题: 安装pywin32出现Python version 3.6 required, which was not found in the registry错误解决 解决: 建立一个文件 regis ...
- js中时间的操作
var myDate = new Date();myDate.getYear(); //获取当前年份(2位)myDate.getFullYear(); //获取完整的年份(4位,1 ...
- JNI由浅入深_9_JNI 异常处理
1 .本地代码中如何缓存和抛出异常 下面的代码中演示了如何声明一个会抛出异常的本地方法.CatchThrow这个类声明了一个会抛出IllegalArgumentException异常的名叫doit的本 ...
- LWIP network interface 即 LWIP 的 硬件 数据 接口 移植 详解 STM32 以太网数据 到达 的第二站: void ethernetif_input( void * pvParameters )
根据 上一篇 文章 , ETH DMA 数据中断 会 发送 一个信号量 ,我使用 全局 搜索 这个信号量 s_xSemaphore 得到 一下 几个 值 根据 这个 分析 我们找到了 数据 的 ...
- C#中HttpWebRequest的用法详解(转载)
1.HttpWebRequest和HttpWebResponse类是用于发送和接收HTTP数据的最好选择.2.命名空间:System.Net3.HttpWebRequest对象不是利用new关键字创建 ...