Uart接口TTL电平详解

Uart接口TTL电平详解Uart接口的详细解释我面试的时候一般喜欢问应聘者一个问题:UART与RS232/RS485的区别与联系?很多人对于这个问题答得都不是很好。还有些人压根就没有想过这个问题,一直认为他们是同一个东西,就是咱们俗称的串口。我刚入嵌入式的大门时,对这个问题也困惑过很久,后来终于弄明白了。跟大家一起分享一下吧。简单来说,区别在于UART是一种接口,而RS232/RS485是一…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Uart接口的详细解释

 

我面试的时候一般喜欢问应聘者一个问题:UARTRS232/RS485的区别与联系?很多人对于这个问题答得都不是很好。还有些人压根就没有想过这个问题,一直认为他们是同一个东西,就是咱们俗称的串口。

 

我刚入嵌入式的大门时,对这个问题也困惑过很久,后来终于弄明白了。跟大家一起分享一下吧。

 

简单来说,区别在于UART是一种接口,而RS232/RS485是一种总线。UART这个接口,后面可以接TTL电平,这就是我们俗称的普通的串口。而UART如果接了RS232/RS485的转换芯片,那么后面的总线上就是按照RS232/RS485规则来传输数据。RS232/RS485总线的具体规则我们后续再讨论,本篇主要详解TTL下的情况。UARTTTL电平时,+5V等价于逻辑“1”,0V等价于逻辑“0”。

如下例子主要说明一下UARTTTL电平这种方式是怎么传输二进制数据的。这是我在项目中的一个例子,用STM32F429Uart4口采集TOF模块测量得到的距离信息。

UARTRx连接测距模块TOFTxTOFUART发送了0x32 0x33 0x6d 0x6d 0x0a 五个字节,对应的ASCII码是23mm,表示测到的距离。

 

0x32 0x33 0x6d 0x6d 0x0a 对应的示波器上测到波形如下所示,我们来一起分析一下。

 

 Uart接口TTL电平详解

 

 

首先,UART的波特率,配置的是9600。对于串口来说,波特率=比特率,所以串口现在比特率为9600,所以每一个bit需要的时间为100us。所以示波器抓的波形对应的比特流是:

00100110010110011001010110110101011011010010100001

 

对于Uart,我配置的代码如下:

 

USART_InitStructure.USART_BaudRate = UART4_BAUD; //9600

USART_InitStructure.USART_WordLength = USART_WordLength_8b;

USART_InitStructure.USART_StopBits = USART_StopBits_1;

USART_InitStructure.USART_Parity = USART_Parity_No ;

USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;

USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

USART_Init(UART4, &USART_InitStructure);

 

所以Uart的数据位宽为8bit,再加上起始位0,结束为1.所以比特流分割为如下:

0  0100 1100  1

0  1100 1100  1

0  1011 0110  1

0  1011 0110  1

0  0101 0000  1

考虑硬件总线上的数据时序,CPU接收到后的比特序列颠倒:  

0100 1100 颠倒为  0011 0010  即为0x32

1100 1100 颠倒为  0011 0011  即为0x33

1011 0110 颠倒为  0110 1101  即为0x6d

1011 0110 颠倒为  0110 1101  即为0x6d

0101 0000 颠倒为  0000 1010  即为0x0a

 

完美! 发送的0x32 0x33 0x6d 0x6d 0x0a 字节与示波器上测量到的高低电平信号完美相符。

作为嵌入式软件工程师,对软硬件的接口分析到这种程度,一般情况下,就够用了。

转载于:https://www.cnblogs.com/stay-foolish1984/p/8883225.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193952.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python基础之小数据池[通俗易懂]

    一,id,is,==在Python中,id是什么?id是内存地址,比如你利用id()内置函数去查询一个数据的内存地址:那么is是什么?==又是什么?==是比较的两边的数值是否相等,而

    2022年3月29日
    29
  • rapidjson指针[通俗易懂]

    rapidjson指针[通俗易懂]博客搬家,原地址:https://langzi989.github.io/2017/05/27/rapidjson指针/本系列文章以例子的方式进行呈现。#include”rapidjson/document.h”#include”rapidjson/pointer.h”#include<iostream>usingnamespacerapidjson;/…

    2022年10月27日
    0
  • 大一c语言图书管理系统_基于java的图书管理系统

    大一c语言图书管理系统_基于java的图书管理系统C课程设计——图书管理系统1、题目意义图书馆,作为文献的聚集地和展示平台,常常扮演着引领文化前进的角色,是每个大学不可或缺的基础设施,而图书管理系统则是一个图书馆能够正常运转的关键。本次课程设计使用C语言制作程序来实现图书的登记,删除,查询,浏览以及读者的借阅,还书,会员登录,修改密码等功能。程序中涉及到数据链表和文件指针的操作,包括结构体数据定义,使用及文件的读写,定位,修改等。2、设计思…

    2022年10月11日
    0
  • java 应用监控_java监控服务器运行状态

    java 应用监控_java监控服务器运行状态每天记录学习,每天会有好心情。*^_^*每天都要认真学习,才能更加进步。└(^o^)┘在工作和学习的过程中要善于思考,勤于学习。并做出适当的记录,才能最快速的学习并掌握一项知识。希望在这个平台和大家一起共同成长,和大家分享一个SSM(MYECLIPSE)项目,该项目名称为基于web的java舆情监测系统。采用当前非常流行的B/S体系结构,以JAVA作为开发技术,主要依赖SSM技术框架,mysql数…

    2022年9月2日
    3
  • kbengine教程_如何简单的介绍自己

    kbengine教程_如何简单的介绍自己之前想分析一个开源服务器很久了,思前想后,还是选择了kbengine。KBEngine的服务端底层框架使用c++编写,游戏逻辑层使用Python(支持热更新)。现在服务器大多数是用C++做的,pyth

    2022年8月6日
    5
  • 关系数据库设计理论中,起核心作用的是_关系数据库设计理论主要包括

    关系数据库设计理论中,起核心作用的是_关系数据库设计理论主要包括关系数据库设计理论设计一个好的关系数据库系统,关键是要设计一个好的数据库模式(数据库逻辑设计问题)数据库逻辑设计主要解决的问题关系数据库应该组织成几个关系模式关系模式中包括哪些属性“不好”的数据库设计举例:为学校设计一个关系数据库关系模式:UN(Sno,Cno,G,Sdept,MN)Sno:描述学生Sdept:描述系名MN:描述系…

    2022年10月16日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号