android模拟电平波形,虚拟示波器验证串口波形时序

原标题:虚拟示波器验证串口波形时序

关注我们

在做项目的时候是不是发现串口是最常用的通信接口,所以自己整理了一下关于串口的一些常识性知识,方便自己学习。

关键词:Loto虚拟示波器,串口时序,电平标准,模拟串口

我们常说的串口按电平分类的话有两种,一种是TTL电平的串口,一种是232电平的串口。

首先我们先看一下这两种电平的区别。

TTL电平标准:输出L: <0.8V; H: >2.4V,输入L: <1.2V: H: >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。我们打开stm32cubeMX看到stm32F103有2个UART和3个USART。在日常我们就可以说,它有5个串口,因为USART可以配置成UART。

bfc591094984745f3e6724a14c9df019.png

5bf57a08aff2a0fb9a19eae09200dae0.png

UART与USART都是单片机上的串口通信,他们之间的区别如下:

首先从名字上看:

UART:universal asynchronous receiver and transmitter通用异步收/发器

USART:universal synchronous asynchronous receiver and transmitter通用同步/异步收/发器

从名字上可以看出,USART在UART基础上增加了同步功能,即USART是UART的增强型,事实也确实是这样。但是具体增强到了什么地方呢?

其实当我们使用USART在异步通信的时候,它与UART没有什么区别,但是用在同步通信的时候,区别就很明显了:大家都知道同步通信需要时钟来触发数据传输,也就是说USART相对UART的区别之一就是能提供主动时钟。如STM32的USART可以提供时钟支持ISO7816的智能卡接口。

在实际的项目中用的最多的还是UART ,配置为:N, 8 ,1.波特率常用的有2400,9600,57600,115200.我们用串口来干什么呢?用过一些模块的工程师会知道,很多模块都是通过串口来控制或者通过串口透传数据的,比如gsm(2g,4g),gps,wifi,蓝牙等等,这些模块都是通过串口来控制。所以作为一个工程师,必须要搞懂串口。

下面我们通过Loto虚拟示波器采集不同波特率的TTL的UART 波形:

24b1bc4e6b5f7894c5d92a318ee29497.gif

4756af129a558ffb5dbf2a802c743f4e.gif

d03957c8a6d6b680a7b93df1e7ad73df.gif

d3cad95eb872c6f2117254075b56d8af.gif

c4f2be274f8c4c9a9b2fea556f4735da.png

对比理论的时序图,我们找找起始位和停止位,这个数据是多少?

有时候我们面试会考一个题目,那就是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

波特率115200:1/115200≈8.68*10^(-6)s=8.68us

对比我们用Loto虚拟示波器采集的数据看看是不是一致呢?

a2b91cccdb3de8010db6196cb8b7bbdd.png

b902c97a504ef07bc8a7720b8e495ffa.png

611c614bb1a54233597e4434e7969463.png

c1d5f9ff9937c331ebe03d56b3728ed1.png

优势物料

ST

VIPER22ADIP-E A/D转换器

ST

STP26NM60NMOS

ST

STW26NM60N MOS

NXP

BAS316,115 二极管

复制型号登陆融创芯城(www.digiic.com)搜索购买!

融创芯城(www.digiic.com) ,专业服务小批量的采购和配单要求, 提供一站式电子元器件,PCB,PCBA购买服务; 并提供项目众包、方案共享平台、商家免费入驻、工程师交流论坛、共享电子圈、行业最前沿、人才招聘!返回搜狐,查看更多

责任编辑:

1、无需安装,启动即用; 2、支持同时刷新多达10个通道的单精度浮点型数据; 3、支持多种格式的通道数据导入、导出及回放; 4、支持全屏浏览; 5、支持图表数据统计、测量及缩放; 6、支持蓝牙适配器; 7、支持各通道独立刷新; 8、支持3D轨迹显示; 9、3D立方体显示; 10、航空仪表; 11、灵活可屏蔽的快捷键支持。 (1)数据输入: DataScope_Get_Channel_Data( rand()/100000000 , 1 ); 实现的是将数据写入通道,这里选择的是通道1,如果选择多个通道,可以写成如下形式:DataScope_Get_Channel_Data( 1.0 , 1 ); //将数据 1.0 写入通道 1 DataScope_Get_Channel_Data( 2.0 , 2 ); //将数据 2.0 写入通道 2 DataScope_Get_Channel_Data( 3.0 , 3 ); //将数据 3.0 写入通道 3 DataScope_Get_Channel_Data( 4.0 , 4 ); //将数据 4.0 写入通道 4 DataScope_Get_Channel_Data( 5.0 , 5 ); //将数据 5.0 写入通道 5 DataScope_Get_Channel_Data( 6.0 , 6 ); //将数据 6.0 写入通道 6 DataScope_Get_Channel_Data( 7.0 , 7 ); //将数据 7.0 写入通道 7 DataScope_Get_Channel_Data( 8.0 , 8 ); //将数据 8.0 写入通道 8 DataScope_Get_Channel_Data( 9.0 , 9 ); //将数据 9.0 写入通道 9 DataScope_Get_Channel_Data( 10.0 , 10); //将数据 10.0 写入通道 10 (2) 数据转换(转换为上位机可以理解的数据格式):Send_Count = DataScope_Data_Generate(1); (3) 传输数据到电脑(上位机):for( i = 0 ; i SR&0X40;)==0); USART1->DR = DataScope_OutPut_Buffer[i]; } Delay(0xFFFFFF); 里面有具体的使用说明,不会的可以及时联系我
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值