打印
[51单片机]

kafeng初识嵌入式 1 - USB转TTL/RS-232

[复制链接]
880|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kafeng|  楼主 | 2015-8-22 17:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 kafeng 于 2015-8-28 10:59 编辑

首先说明一下本系列**的性质,主要是用于厘清对一些问题的了解,权当做读书笔记。故将全力保证正确性,废话少说进入正题。

IEEE对于ES(Embedded system,嵌入式系统)的定义是:“Devices Used to Control,Monitor or Assist the Operation of Equipment,Machinery or Plants”,用于控制、监视或者辅助操作机器和设备的装置。这样不论是基于古董的 Intel 8051 架构的 STC89C52RC,还是基于高大上的 ARM Cortex-M架构的STM32F103VET6, 就都属于嵌入式芯片啦。

PC要连接上面这些玩意,基本都是从USB口开始的。然后很多会有一个转接过程,接到芯片的UART/USART口,本文主要想搞清楚这个转接是个什么鬼。

先解释几个名词:
串行接口:Serial Port
串行通信:Serial Communication
指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。
USB:Universal Serial Bus,通用串行总线
UART: Universal Asynchronous Receiver/Transmitter,通用异步收发传输器
USART:Universal Synchronous/Asynchronous Receiver/Transmitter,通用同步/异步收发传输器

再来两个原理:
SYNC:Synchronous Data Communication,同步通信
指在约定的通信速率下,发送端和接收端的时钟信号频率和相位始终保持一致(同步),保证通信双方在发送和接收数据时具有完全一致的定时关系。
同步通信把许多字符组成一个信息组(信息帧),由同步字符、数据字符和校验字符(CRC)组成。其中同步字符位于帧开头,用于确认数据字符的开始。数据字符在同步字符之后,个数没有限制,由所需传输的数据块长度来决定;校验字符有1到2个,用于接收端对接收到的字符序列进行正确性的校验。

ASYNC:Asynchronous Data Communication,异步通信
又称起止式异步通信,指是以字符(构成的帧)为单位进行传输的,字符之间没有固定的时间间隔要求,但每个字符中的各位则以固定的时间传送。
数据通常以字符或者字节为单位组成字符帧传送。字符帧由发送端逐帧发送,通过传输线被接收设备逐帧接收。发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,互不同步。接收端检测到传输线上发送过来的即字符帧起始位时,确定发送端已开始发送数据,每当接收端收到字符帧中的停止位时,就知道一帧字符已经发送完毕。

好了,感觉知道的差不多了,下面来搞清楚到底是怎么接的。

PC上的USB接口基本都是一致的,为USB A型插座,接口为4Pin(USB 2.0,USB 3.0更多,但向下兼容,不考虑),Pin1(红)为VCC,接+5V;Pin2(白)D-,接Data-;Pin3(绿)为D+,接Data+;Pin4(黑)为GND,接地。靠Data+和Data-传输数据,输出的是差分信号。

差分传输是一种信号传输的技术,区别于传统的一根信号线一根地线的做法,差分传输在这两根线上都传输信号,这两个信号的振幅相等,相位相反。在这两根线上传输的信号就是差分信号。

在限定的电压范围内,当(D+)-(D-)>200mV时,为差分的“1”,当(D-)-(D+)>200mV时,为差分的“0”。当然在各种不同情况下会有很多不同,J态K态什么的,但原理大约是这样。USB 2.0的通信协议有数百页之巨,实在才疏学浅,接收批评指正。

然后另一边,芯片的接口引脚是TTL或者CMOS的。
TTL:Transistor-Transistor Logic,逻辑门电路,主要由BJT(Bipolar Junction Transistor 即双极结型晶体管),晶体三极管和电阻构成
CMOS:Complementary Metal Oxide Semiconductor,互补金属氧化物半导体,CMOS数字集成电路的基本单元
对于TTL电路,逻辑“1”输入标准高电平3.6V,最小值2.0V,逻辑“0”输入标准低电平0.3V,最大值0.8V。
对于CMOS电路,逻辑“1”输入标准高电平接近5.0V,最小值2.8V,逻辑“0”输入标准低电平接近0.0V,最大值2V。
两者的电平信号部分是可以兼容的。(此处电压为参考值,与实际器件有关)

这样,两边的情况基本上清楚了,显然两者不能直接通信,需要进行转换。
开发板上貌似有两种情况,一种直接带有各型USB接口,一种带有RS-232接口。

前者直接用CH340G这样的芯片将USB差分信号转为TTL电平,比较清楚。上一张典型电路图片,来源为STC官方,然后自己画的,可查看STC89C52RC官方手册。

后者先由一根USB转RS-232线,将USB差分信号转为RS-232电平。
RS-232:异步传输标准接口,有DB-9与DB-25两种形态,DB-9就是9针。其逻辑“1”(传号)的电平低于-3V,逻辑“0”(空号)的电平高于+3V;对于控制信号;接通状态(ON)即信号有效的电平高于+3V,断开状态(OFF)即信号无效的电平低于-3V,也就是当传输电平的绝对值大于3V时,电路可以有效地检查出来,介于-3~+3V之间的电压无意义,低于-15V或高于+15V的电压也认为无意义,因此,实际工作时,应保证电平在-3V~-15V或+3V~+15V之间。
基本9针只用到了TXD和RXD再加地,在线里面比较大的那一头用类似PL2303+MAX232之类将USB差分信号转为RS-232电平。接到板子上的RS-232接口中.然后再在板子上装一个MAX232将RS-232电平转换为TTL电平。
下图便是MAX232将RS-232电平转换为TTL电平电路典型电路。同样来源于STC官方STC89C52RC手册。

最后说明下RXD、TXD。
RXD:Receive(rx) Data,接收数据
TXD:Transmit(tx) Data,发送数据



编号:QR - 1







相关帖子

沙发
xyz549040622| | 2015-8-23 07:07 | 只看该作者
支持下!

使用特权

评论回复
板凳
john_lee| | 2015-8-23 09:02 | 只看该作者
“将USB差分信号转为RS-232电平”。
说得轻巧,中间最重要的和最复杂的部分被你华丽的忽略了,就好像说“将沙石转化为房屋”一样。

使用特权

评论回复
地板
kafeng|  楼主 | 2015-8-23 11:01 | 只看该作者
本帖最后由 kafeng 于 2015-8-23 12:36 编辑
john_lee 发表于 2015-8-23 09:02
“将USB差分信号转为RS-232电平”。
说得轻巧,中间最重要的和最复杂的部分被你华丽的忽略了,就好像说“将 ...

确实如此:$,新手初识,只有极其肤浅的认识,写点类似笔记的东西,慢慢学习了:)~~希望各位大神多多指正:handshake。

使用特权

评论回复
5
kafeng|  楼主 | 2015-8-23 12:37 | 只看该作者

感谢支持~:)

使用特权

评论回复
6
kafeng|  楼主 | 2015-8-25 09:35 | 只看该作者
结帖啦,分给两位前辈~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

54

帖子

3

粉丝