当前位置: 首页 > news >正文

TTL和RS232之间的详细对比

【背景】

之前就听过TTL,一直没搞懂其和RS232的区别。

最近,打算去买个USB转RS232的芯片,结果找到此产品:

六合一多功能USB转UART串口模块CP2102 usb TTL485 232互转自恢复

正面:

six-in-one cp2102 usb ttl 485 232 front

背面:

six-in-one cp2102 usb ttl 485 232 rear

其中的:

six-in-one usb rs232 ttl rs485 chip functions

以及引脚说明:

six-in-one cp2102 usb ttl 485 232 pins note

都提到了,不仅仅支持RS232,还支持TTL。

所以,再次遇到TTL,需要去搞清楚,TTL和RS232的区别。

 

【折腾过程】

1.参考:

RS-232 vs. TTL Serial Communication

整理如下:

常见的微控制器中,都有了内置的UART(Universally Asynchronous Receiver/Transmitter)。

UART可以用来已串行方式收发数据。

UART是,以固定的某个速率(1200bps,9600bps,115200bps等),一次只能只传输一个bit比特位(所以叫做串行传输)

这种串行通信的方法,有时候也被叫做TTL(Transistor-Transistor Logic)Serial。

这种串行通信,在TTL级别上来说,对应的物理电平,始终是在0V和Vcc之间,其中常见的Vcc是5V或3.3V。

其中:

逻辑高电平==’1’==Vcc

逻辑低电平==’0’==0V

 

与此相对应的是:

你的(台式机,笔记本等)电脑中的串口,是和RS232(通信标准)所兼容的(所一致的) => 不是和TTL的标准所一致的

RS232和TTL在软件协议层面是一样的

RS232的标准中,和你的微控制器中的串行信号所一样的,有:

  • 也是:一次只传输一个bit比特位 -> 表示是serial
  • 也是:也是以某个固定的速率去传输的->baudrate
  • 也是:带或不带,parity极性->即校验位
  • 也是:带或不带,停止位stop bit(s)

 

RS232和TTL唯一不同在于硬件:电平表示的逻辑含义不同(相反)

RS232和TTL,唯一的,最根本的不同在于:

硬件(机制)不同:

(1)TTL

逻辑高电平==’1‘==Vcc==3.3V或5V

逻辑低电平==’0‘==0V==0V

 

(3)RS232:

逻辑高电平==’0‘==负电压== -3V~-25V==常为:-13V

逻辑低电平==’1‘==正电压== 3V~25V==常为:13V

 

为何RS232中要(很奇怪的)用负电压表示逻辑高电平呢?

按理来说:

TTL用正电压(3.3V或5V)表示逻辑1,用0电压表示逻辑0,是相对来说,比较符合人类的逻辑的

但是,为何RS232却,很奇怪的,用负电压表示逻辑高电平==1,呢?

那是因为:

此设计(用负电压表示逻辑1,正电压表示逻辑0)相对来说,更加:

  • 抗(外界的电磁)干扰
  • 抗外界的(电磁信号)噪音干扰
  • 抗(信号的)衰减
    • 使得和同样的TTL信号相比,RS232信号可以传输的更远

由此使得:

信号传输,相对更加稳定和可靠。

 

RS232和TTL时序图对比

对于同样传输0b01010101来说,RS232和TTL的时序对比:

 

rs232 vs ttl timing diagram

 

RS232和TTL之间的转换

RS232和TTL之间的转换,不仅仅是简单的电平转换,还要考虑到其他一些因素,比如调节和矫正一些电平(提高或降低对应的电平),确保可能的有害的RS232电压不会破坏微控制器的串口针脚。

关于如何在RS232和TTL之间转换,目前已经有很多种解决方案了。

比如:

RS-232 vs. TTL Serial Communication

中的MAX-232。

 

总结

很多知识,都是慢慢积累,才慢慢逐渐更加清楚的。。。

包括这个TTL。

相关文章:

  • NSMutableArray崩溃信息
  • 艰困之道中学到的经验教训
  • 【JAVA秒会技术之随意切换数据库】Spring如何高效的配置多套数据源
  • 国外的搜索引擎,能查到好多资料
  • 基于nginx的负载均衡概述与实现
  • 总结2016,规划2017
  • GreenOpenPaint的实现(二)打开显示图片
  • CSS命名规范:
  • 桌面开发者的界面故事,该醒醒了
  • yii2中session跨域名的问题
  • MVC,MVP,MVVM
  • android设备分辨率及sp、px计算
  • mysql information_schema介绍
  • js == 与 ===
  • 基于MODBUS 协议的CRC16程序实现
  • 《剑指offer》分解让复杂问题更简单
  • Angular Elements 及其运作原理
  • Elasticsearch 参考指南(升级前重新索引)
  • exports和module.exports
  • JAVA SE 6 GC调优笔记
  • overflow: hidden IE7无效
  • SpiderData 2019年2月23日 DApp数据排行榜
  • Vue.js-Day01
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 观察者模式实现非直接耦合
  • 类orAPI - 收藏集 - 掘金
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 一天一个设计模式之JS实现——适配器模式
  • 阿里云服务器购买完整流程
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • #QT(TCP网络编程-服务端)
  • (09)Hive——CTE 公共表达式
  • (BFS)hdoj2377-Bus Pass
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (一)插入排序
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .gitignore文件---让git自动忽略指定文件
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET Framework杂记
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .NET轻量级ORM组件Dapper葵花宝典
  • .NET上SQLite的连接
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • [ vulhub漏洞复现篇 ] Celery <4.0 Redis未授权访问+Pickle反序列化利用
  • [ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042
  • [ 手记 ] 关于tomcat开机启动设置问题
  • [1159]adb判断手机屏幕状态并点亮屏幕
  • [16/N]论得趣