|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本文档介绍嵌入式上串口通用的基础知识和测试方法。
# B \6 Z3 z8 u3 }! Z请注意文档中,关于硬件的很多描述都带有“一般情况”这样的字样,表明是有特殊情况
' W3 Q: H8 b- B1 ~' N的,但是在大多数情况下,去掉“一般情况”都是正确的。硬件很多情况下是“模糊”,偏向2 ~6 k' w& F- |8 J, J6 B
于“差不多”,执着于“硬件系统长时间在特定环境下稳定运行最重要”,在设计上一定有5 h8 t) I4 ~9 R: h- A$ V
“取舍”,虽然有一个“最优解”,我们只能尽量接近“最优解”,但是永远不能到达。' E6 _ [# b3 G4 d( x& v4 j
硬件不像软件,每一个接口都是严格定义,不允许有差不多的情况。
% [! N( g& h, J7 `% ~1 基础电平知识
; v- I0 Q5 T" {* U- e' J1.1 TTL 电平和 CMOS 电平
+ T" D( D- ~$ u$ b( K- U: q在大学电子专业课《数字电路分析》中,有提到电平的概念,通常有 TTL 和 CMOS 电( t' ]/ {5 c5 x: l1 |5 S8 H* Z
平,TTL 和 CMOS 又各自细分为多种电平,这里为了方便文字描述,统称为 TTL 电平。TTL. X# v& G) V& t+ m+ ~
和 CMOS 是有很大区别的,但是对于纯粹的数字电路,区别不是很大,唯一要注意的是信号; ~# I: @2 H6 L5 Y
的电压值,电压不一样则需要使用电平转换芯片,抬高或者降低信号的电压。
: _2 o, s0 j0 N7 v8 A! o4 B另外为了达成文档目标--为了让大家能够快速掌握串口的快速测试,这里将 TTL 根据电平4 F3 e3 ^* [# i& b; p2 M7 e4 h/ j
值分为 1.8VTTL 电平、3.3VTTL 电平和 5VTTL 电平。/ U. K4 f8 U% L
TTL 电平在一般情况下,高电平(1.8V、3.3V 或者 5V)表示逻辑 1,0V 表示逻辑 0。6 K, n, u% V& r7 r3 t
一般情况下,CMOS 和 TTL 进行数据传输的时候,只要电平相同和 IO 的类型,就可以正( {. ^" `/ M/ p1 f1 e5 U" g+ I
常通信。
; Z" e5 @- @, D4 `那么这里有一个基本的结论:TTL 电平的串口,无论是只要开发板和模快的 TTL 电平值相8 F7 l+ A1 Y9 J Y/ T5 r
同。开发板的 TX 和测试模组 RX 相接,开发板的 RX 和测试模组 TX 相接,共 GND 地,就可
9 [. f- W, }( l; ?' R4 O1 _以正常通信。
( t* N1 n; O% x1.2 RS232 电平) m& P2 c) X8 t
接着来介绍 RS232 电平,关于 RS232 的知识,网上非常多,作者只介绍大家在使用过程% z' i7 F7 O9 U: }1 z
中最不容易和最重要的部分。
& I& |2 A; W4 E( ]' ^# ]RS232 的电平要表示逻辑 1,电平是在-3V~-15V 之间,逻辑 0 的电平是在 3V~15V 之8 z" O0 z* F- g$ } h# z4 o2 X) E& [
间,如果电平在-3V~3V 之间,是没有任何意义的。
1 z! G: z* \6 ~& W; U. R' j, p那么显然,无论是什么电平的 TTL 都是无法直接和 RS232 通信,一个用高电平表示逻辑
) F S4 t, V: A1 `# ]' q9 F1,一个用高电平表示逻辑 0。
, z7 D: ?5 d w- L. V! y1.3 232 电平转换芯片-TTL 串口和 RS232 的通信
5 |6 A' @" P( W为了能够让 TTL 的串口和 RS232 串口通信,则需要将 TTL 电平的串口转化为 RS232 电' O) G/ ~% r( O
平。
6 Y9 P6 [& f$ ?+ a5 ^将 TTL 的 5V 串口转换为 RS232 串口信号,需要 MAX232 芯片(MAX 是美信的意思,
4 o, w6 y6 }! t- u是一个家公司的简写),将 TTL 的 3.3V 串口转化为 RS232 串口信号,需要 MAX3232。) b' w. Q! k& \( P: }
现在很多 PC 上没有串口接口,但是可以使用 USB 转串口,一般情况下,我们默认 USB
! v% i( T4 C* R( ^1 q转出来都是 RS232 串口信号(也有 USB 转 TTL 串口芯片)。
8 `: s% m4 O! Z只要都转成了 RS232 电平,TX 接 RX,RX 接 TX,双方就可以通信了。8 g' t8 N+ P8 ]1 }9 V+ `
1.4 串口和模块通信需要注意的地方
7 R. t6 _* i% K特别要注意的只有一点:一定要弄清楚电平!
5 O" U" a9 \9 ~7 r模块如果说是串口,那么它有可能是 RS232 电平的串口,可能是 TTL1.8V 串口,可能是( E# V: E* p5 ~% j5 J
TTL3.3V 电平的串口,还有可能是 TTL5V 的串口。
+ R, p0 X4 ]' c- m: X$ C5 R8 E# v关于开发板串口,参考用户手册上第一章,串口相关的小节,上面描述了每一个串口的电
: A ~' l& ]; J2 J' \/ |平、网络标号、复用情况还有软件相关的设备节点。
9 F" A, `5 l% U; E* S* w% N另外就是 TX 和 RX 不同的硬件工程师,命名的时候可能不太一样,如果 TX 接 RX 不能正
0 H: O9 i) o4 ^% }3 ]3 [. f常通信,可以交换一下。4 L+ P3 x6 u' i4 `8 m
2 快速测试方法
6 x3 @0 S7 y# z4 c本节介绍如何快速测试开发板的串口,用于判断串口是否发送和接收正常。' w& f8 \# d3 Y& q) h2 L( Q
先了解一下几个概念“全双工”、“半双工”和“单工”。1 L4 g/ r7 P) M: l" I# }' ?( P
单工指的是,通信的双方,一端负责发,另外一端负责收,典型的例如收音机。; j" L5 L) P# G
半双工指的是,通信的双方,两端都可以收发,但是同一时间点,一端发,另外一端就只' p7 N# `: p7 E) q/ g; s& u1 P
能收,不能同时收发。典型的如 RS485 和 USB 设备。# {: L' i: c* f3 N+ {& ?/ k/ C+ ~% C
全双工指的是,通信的双方,两端可以同时收发,最典型的就是串口,发送的同时也可以) ]/ {5 U! i0 |, r" T
接收。也就是串口的 TX 和 RX 相互不干扰,可以同时工作。
8 r) `- |( Q1 ?- l串口是全双工的,那么如果开发板串口的 TX 和 RX 短接,会出现什么情况呢?当然是正- X A; Z X. C+ k/ L
常的自发自收,发什么收什么。
! V$ t3 W2 |0 v4 r9 U例如为了测试 USB 转串口模块,可以将串口端的 TX 和 RX 端口短接(USB 速率远高于
% _) F7 ]. O F) S串口,半双工的 USB 不会影响串口的自发自收),那么就会出现发送什么数据,就接收什么; m- a' L' x! H5 Z1 o
数据。2 ^! g6 o8 N$ p1 A) x2 h
快速测试开发板的串口,也可以用 TX 和 RX 短接的方法,最简单的方法使用一把小镊子
7 f) v" j) W$ S0 q(导线也成),镊子的两个尖端,一端接 TX,一端接 RX,然后运行串口自发自收的测试程: a+ o3 K, S8 D7 Y1 M
序。# {8 v: `6 V. B) o9 M
TX 和 RX 短接可以是 TTL 电平也可以是 RS232 电平,如下图所示,是 iTOP-4412 精英5 @9 z, q! y% E6 g2 O% G
版(迅为其它开发板类似)MAX3232 部分的原理图。' T. p* m3 s% n: l7 N
0 I3 K% c' e% Y% j
如上图所示,上面 4 个方框中的两个 pin 脚都可以短接,效果一样。R20 和 RS21 左端可6 }3 s1 O- ^1 P# D& K
以短接、MAX3232 的 pin9 和 pin10、MAX3232 的 pin7 和 pin8 可以短接、CON23 W- H2 \2 E* \
(DB9)的 pin2 和 pin3 可以短接,这样开发板就可以实现自发自收。
s( {5 A+ ~3 P& R请注意,如果要测试串口,请务必参考对应开发板的用户使用手册上第一章,串口相关的
$ F8 M) B; n$ o x小节,因为有一些模块需要用到串口,有一些串口是复用的。$ j! D' v' h* s8 Q% P* {8 k3 p0 m) K
将开发板的串口 TX 和 RX 短接,使用“iTOP-4412-Android-串口测试文档(升级版)# q1 ]9 @7 n: I% a
_V2.0.zip”独立文档中的串口程序,发送什么字符串,开发板就接收一样的字符串。
( U: M1 d* r5 }5 Y; r4 A% O. x |
|