本帖最后由 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
|