欢迎来到广东泰测电子有限公司官方网站!
官方微信 | 网站地图
在做项目的时候是不是发现串口是***常用的通信接口,所以我自己整理了一下关于串口的一些常识性知识,方便自己学习。
关键词:Loto虚拟示波器,串口时序,电平标准,模拟串口
我们常说的串口按电平分类的话有两种2g 示波器,一种是TTL电平的串口,一种是232电平的串口。
首先我们先看一下这两种电平的区别。
TTL电平标准:输出L:2.4V,输入L:2.0V
TTL器件输出低电平要小于0.8V,高电平要大于2.4V,输入,低于1.2V就认为是0,高于2.0就认为是1.于是TTL电平的输入低电平的噪声容限就只有(O.8-0)/2=0.4V,高电平的噪声容限为
(5-2.4)/2=1.3V.
RS232标准:
逻辑1的电平为-3~-15V,逻辑0的电平为+3~+15V,注意电平的定义反相了一次。
然而TTL电平的串口还可以分为两种UART与USART。我们打开看到有2个UART和3个USART。在日常我们就可以说,它有5个串口,因为USART可以配置成UART。
UART与USART都是单片机上的串口通信,他们之间的区别如下:
首先从名字上看:
UART: and 通用异步收/发器
USART: and 通用同步/异步收/发器
从名字上可以看出,USART在UART基础上增加了同步功能,即USART是UART的增强型,事实也确实是这样。但是具体增强到了什么地方呢?
其实当我们使用USART在异步通信的时候,它与UART没有什么区别,但是用在同步通信的时候,区别就很明显了:大家都知道同步通信需要时钟来触发数据传输,也就是说USART相对UART的区别之一就是能提供主动时钟。如STM32的USART可以提供时钟支持的智能卡接口。
在实际的项目中用的***多的还是UART,配置为:N, 8 ,1.波特率常用的有2400,9600,57600,.我们用串口来干什么呢?用过一些模块的工程师会知道2g 示波器,很多模块都是通过串口来控制或者通过串口透传数据的,比如gsm(2g,4g),gps,wifi,蓝牙等等,这些模块都是通过串口来控制。所以作为一个工程师,必须要搞懂串口。
首先我们了解一下我们的工具,大家可以到我的淘宝店里看看:
想要的可以联系我。
下面我们通过Loto虚拟示波器采集不同波特率的TTL的UART波形:
波特率9600
波特率2400
波特率57600
波特率
对比理论的时序图,我们找找起始位和停止位,这个数据是多少?
有时候我们面试会考一个题目,那就是UART波特率9600的时候,它的一个bit是多长时间,这个怎么算?初学者肯定蒙了,我用串口直接就配置然后发数据就行了,从来没算过,下面我总结一下:
波特率2400:1/2400≈416.67*10^(-6)s=416.67us
波特率4800:1/4800≈208.33*10^(-6)s=208.33us
波特率9600:1/9600≈104.17*10^(-6)s=104.17us
波特率19200:1/19200≈52.08*10^(-6)s=52.08us
波特率57600:1/57600≈17.36*10^(-6)s=17.36us
波特率:1/≈8.68*10^(-6)s=8.68us
对比我们用Loto虚拟示波器采集的数据看看是不是一致呢?
我们算这个数据有什么用呢?是的!没错!就是模拟串口!当单片机串口不够用的时候项目中会用到。部分代码如下:
void (u8 Data)
{
u8 i = 0;
= 0;
();
for(i = 0; i
{
if(Data&0x01)
= 1;
else
= 0;
();
Data = Data>>1;
}
= 1;
();
}