|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本文档介绍嵌入式上串口通用的基础知识和测试方法。% r0 L4 m p9 A5 V
请注意文档中,关于硬件的很多描述都带有“一般情况”这样的字样,表明是有特殊情况
" R/ d! S' s7 C* P G) a的,但是在大多数情况下,去掉“一般情况”都是正确的。硬件很多情况下是“模糊”,偏向
6 g& {7 e6 a6 D' Y3 R于“差不多”,执着于“硬件系统长时间在特定环境下稳定运行最重要”,在设计上一定有
8 ~2 A/ w6 U1 S {6 R+ u7 }1 J3 h“取舍”,虽然有一个“最优解”,我们只能尽量接近“最优解”,但是永远不能到达。0 O3 i7 _0 u2 C. Q z
硬件不像软件,每一个接口都是严格定义,不允许有差不多的情况。
# t( ^: N/ G0 A, J& a6 p1 基础电平知识
" p( ^; h4 M2 b; S1 ~1.1 TTL 电平和 CMOS 电平: u4 v( Z- G i
在大学电子专业课《数字电路分析》中,有提到电平的概念,通常有 TTL 和 CMOS 电
: `- }0 E$ H. R+ \3 F, E9 f( ~平,TTL 和 CMOS 又各自细分为多种电平,这里为了方便文字描述,统称为 TTL 电平。TTL
3 t7 Q* l0 p5 A; ?; U( g* z. T" w和 CMOS 是有很大区别的,但是对于纯粹的数字电路,区别不是很大,唯一要注意的是信号
: Q0 {; Y# J! L7 O4 f4 P的电压值,电压不一样则需要使用电平转换芯片,抬高或者降低信号的电压。! {# o" h D: k; j( }( e
另外为了达成文档目标--为了让大家能够快速掌握串口的快速测试,这里将 TTL 根据电平
8 Y0 ^% o; A* g& U, ~$ g3 Y值分为 1.8VTTL 电平、3.3VTTL 电平和 5VTTL 电平。0 ^7 ]# ?. R: Y, r! D9 x
TTL 电平在一般情况下,高电平(1.8V、3.3V 或者 5V)表示逻辑 1,0V 表示逻辑 0。
. U2 b4 i/ {( i0 T( h0 t一般情况下,CMOS 和 TTL 进行数据传输的时候,只要电平相同和 IO 的类型,就可以正+ f" L; X+ W( N( H" F3 b" {
常通信。
: n; j: A+ K0 X& c' r那么这里有一个基本的结论:TTL 电平的串口,无论是只要开发板和模快的 TTL 电平值相
6 D% V/ e7 [' s- A# p同。开发板的 TX 和测试模组 RX 相接,开发板的 RX 和测试模组 TX 相接,共 GND 地,就可& R4 C. P( l, Y, u
以正常通信。8 D5 q; @, H7 z. {1 ~
1.2 RS232 电平# ], b* R- c; G4 [( V
接着来介绍 RS232 电平,关于 RS232 的知识,网上非常多,作者只介绍大家在使用过程
" v1 s' Z/ }, z/ L- H/ h J) }中最不容易和最重要的部分。" |/ A/ t( s+ W9 W' ]) Y! M
RS232 的电平要表示逻辑 1,电平是在-3V~-15V 之间,逻辑 0 的电平是在 3V~15V 之- Z& v1 Z4 I, m7 G- ~! T3 y; e* Z
间,如果电平在-3V~3V 之间,是没有任何意义的。
6 J: Y1 |) \+ H6 E' ?3 ^那么显然,无论是什么电平的 TTL 都是无法直接和 RS232 通信,一个用高电平表示逻辑
: p' Z/ D' t: P1 ]2 \2 L) A! K1,一个用高电平表示逻辑 0。& H8 C* A0 B. _, p) `! g
1.3 232 电平转换芯片-TTL 串口和 RS232 的通信1 \. Y) w' z1 _8 X0 S
为了能够让 TTL 的串口和 RS232 串口通信,则需要将 TTL 电平的串口转化为 RS232 电9 n2 j) F. ^2 x ^1 ~1 }% k+ \& y
平。( I \! a) E9 O% N$ A* j; h
将 TTL 的 5V 串口转换为 RS232 串口信号,需要 MAX232 芯片(MAX 是美信的意思,, M" T6 {; q, x4 I. c% e2 B
是一个家公司的简写),将 TTL 的 3.3V 串口转化为 RS232 串口信号,需要 MAX3232。
. O Q; G. X9 r: K% m V现在很多 PC 上没有串口接口,但是可以使用 USB 转串口,一般情况下,我们默认 USB I% W5 X# M/ A/ ~) N8 A
转出来都是 RS232 串口信号(也有 USB 转 TTL 串口芯片)。8 V R' R* ~. e0 O1 I
只要都转成了 RS232 电平,TX 接 RX,RX 接 TX,双方就可以通信了。) t* Q. }) I1 p$ x: ~; Y1 b8 L
1.4 串口和模块通信需要注意的地方
2 L# [% Y5 E/ Q+ I7 v5 o/ v: m特别要注意的只有一点:一定要弄清楚电平!
: V1 N3 [* H* ~, L5 V8 F6 E& H模块如果说是串口,那么它有可能是 RS232 电平的串口,可能是 TTL1.8V 串口,可能是
; X2 Z, e: _& a; v- P& k" RTTL3.3V 电平的串口,还有可能是 TTL5V 的串口。
" k; V9 M6 U) \' O- f: r. B2 N+ m关于开发板串口,参考用户手册上第一章,串口相关的小节,上面描述了每一个串口的电
2 r, s1 a5 R$ C平、网络标号、复用情况还有软件相关的设备节点。
8 O b1 s4 f% d9 V/ y另外就是 TX 和 RX 不同的硬件工程师,命名的时候可能不太一样,如果 TX 接 RX 不能正( ~2 u4 h# q) Q5 e4 l" N" z6 [
常通信,可以交换一下。* m" u! Q/ u( B& _' D
2 快速测试方法$ l) C, Q T5 J) z0 C
本节介绍如何快速测试开发板的串口,用于判断串口是否发送和接收正常。
' W2 B6 ^2 F2 Y3 H9 Z先了解一下几个概念“全双工”、“半双工”和“单工”。
, h0 J* @' K6 D' \6 t$ Y- a单工指的是,通信的双方,一端负责发,另外一端负责收,典型的例如收音机。! `5 S9 Y+ O5 y, A
半双工指的是,通信的双方,两端都可以收发,但是同一时间点,一端发,另外一端就只
; `- k) O& O) w% K2 F. }能收,不能同时收发。典型的如 RS485 和 USB 设备。" c& [7 B$ I3 E# i$ r
全双工指的是,通信的双方,两端可以同时收发,最典型的就是串口,发送的同时也可以% }% j) z! c! j) F3 ?# ]3 h& W
接收。也就是串口的 TX 和 RX 相互不干扰,可以同时工作。( W7 k* R9 k1 u9 N' H' @
串口是全双工的,那么如果开发板串口的 TX 和 RX 短接,会出现什么情况呢?当然是正
5 X* n* Y7 y4 T) `% I2 o常的自发自收,发什么收什么。2 z% B+ ^$ n3 O) s8 ]( f t
例如为了测试 USB 转串口模块,可以将串口端的 TX 和 RX 端口短接(USB 速率远高于- K# D2 a1 q" K8 u. b; I
串口,半双工的 USB 不会影响串口的自发自收),那么就会出现发送什么数据,就接收什么$ |$ w8 j8 ~4 ~
数据。2 Z2 Q+ ]4 i4 _9 u0 y& P: b7 F
快速测试开发板的串口,也可以用 TX 和 RX 短接的方法,最简单的方法使用一把小镊子
8 c: [5 W6 h: L- w" J. _0 w; R(导线也成),镊子的两个尖端,一端接 TX,一端接 RX,然后运行串口自发自收的测试程
4 s) h+ a; L* d& i0 ]" z序。
6 p; a; \3 l% @# M1 E0 bTX 和 RX 短接可以是 TTL 电平也可以是 RS232 电平,如下图所示,是 iTOP-4412 精英8 m5 x! o% E p' t' J" N
版(迅为其它开发板类似)MAX3232 部分的原理图。
' ?& s0 C* b/ r% p$ k+ l2 `: g
H* L& u+ `/ r& s
如上图所示,上面 4 个方框中的两个 pin 脚都可以短接,效果一样。R20 和 RS21 左端可) _. X, q, p( X0 W
以短接、MAX3232 的 pin9 和 pin10、MAX3232 的 pin7 和 pin8 可以短接、CON2! Q7 e, N! b6 l3 x6 Q5 v6 {
(DB9)的 pin2 和 pin3 可以短接,这样开发板就可以实现自发自收。4 V: `8 |# ?6 {8 t" A3 Y1 G
请注意,如果要测试串口,请务必参考对应开发板的用户使用手册上第一章,串口相关的
: Q: ?: i ]2 V/ T小节,因为有一些模块需要用到串口,有一些串口是复用的。1 I6 Y; X) n! r/ [* ? |- i; q0 x
将开发板的串口 TX 和 RX 短接,使用“iTOP-4412-Android-串口测试文档(升级版)
) I5 H9 |8 i* s- {9 u; L+ \2 @0 D3 a_V2.0.zip”独立文档中的串口程序,发送什么字符串,开发板就接收一样的字符串。
3 }% H6 }9 [) ^8 X! v- G |
|