找回密码
 注册
关于网站域名变更的通知
查看: 205|回复: 1
打印 上一主题 下一主题

【开发教程9】ARM功能手机-串口实验教程

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-6-22 19:20 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 Heaven_1 于 2022-6-30 13:08 编辑 : l. p( L& N* p. ~) k

  b7 S% G; s5 B
串口实验教程
——疯壳·开发板系列

- w2 l- ^3 L6 ^: x& n) T0 e
; ^) H* }( |" I7 u
9 D$ N9 I# C1 X% n1 _1 a- [图1
' ~+ w7 W6 d! L6 @4 A
: Z- [! [( Q2 g: d' i- |# L( d$ L9 ^5 c  ~

3 i6 _2 k! D; P& U$ H6 [第一节串口硬件电路
+ _  A; ^' a+ \  E* w, h
  L2 S" A# T3 N& A+ M串口通过USB口及手环下载调试线引出,连接mcu的P12与P13引脚,如下图所示:
2 I! H6 w& [5 y8 t* z4 A1 m' a% C- A  t5 H  _% ~8 O* U

& L# i- |! |0 h+ `图25 e9 k- A' V2 G
% \% m& r7 {1 x/ P/ @! k* X7 w

/ U3 a; a+ @. X) O9 ]& U" Q9 e- J* x1 z$ e: L& [
第二节 UART寄存器
0 L! r& {" [5 y& E) g3 q. \) u6 q; p) l5 \: y
2.1 UART介绍
' j. O. S* }, W+ _1 Z    这个UART符合工业标准16550,并且可以和外围设备串行通信。主设备(CPU)通过APB总线将数据写进UART并且被转换成串行格式并且发送到目标设备。串行数据也可以通过UART被接收存储之后,主设备读取接收的数据。
5 |+ T/ L0 j. M% l* ?5 n$ VUART模块不支持DMA,但是它有内部FIFOs,并且支持硬件流控制信号(RTS,CTS,DTR,DSR)。
2 v* d! s2 C' A* ?: J0 kUART模块有16字节的发送和接收FIFO;支持硬件流控制(CTS/RTS);影子寄存器来减少软件开销并且有可编程的软件复位;发送寄存器为空的中断模式;IrDA 1.0 SIR模式支持低功耗模式;可编程的字节属性、校验位和停止位(1,1.5,2);可以断开通信及检测通信线是否断开;中断优先级的识别;可编程的串行通信波特率。" q4 u1 p" A3 `' ~+ F# K
2.2 UART寄存器
* J; \  }/ g4 {% l& V! t; F) GUART相关的寄存器比较多,所以我们只介绍常用的寄存器,其它的可以参考官方数据手册DA14580_DS_v3.1.pdf,位于目录:..\WT开发板\硬件资料。) s7 A  l8 \4 r! w3 [5 N
2.2.1 接收缓冲寄存器4 E. I* Q/ Z! N7 p
4 k2 O- d. f: D7 v1 X/ t
' X1 p# D8 Z) W* U$ k- \( m

2 I0 V& l& z  {3 g/ s图32 w( o. e7 g( {4 p3 l, a8 D
15:8位:保留不使用;3 e" |' L1 b2 c) q
7:0位:接收缓存寄存器。' Y, g% [& w1 @" b  r0 R
2.2.2 中断使能寄存器) q) m7 }' R# q6 E  y

8 ~* n& q' D% O
2 {* ^0 M9 [- l: ?! c
! p+ h; I% Y9 S- x: q图4
8 Q7 n! L% {" L+ H+ @: y( d7 G0 O15:8位:保留不使用;' F& Y, G; Z* ?/ G3 z* o6 O% M
7位:发送空中断使能位;3 E& D0 c* g, ?
6:4位:保留不使用;* M) z3 s* ^& K+ A* {
3位:调制状态中断使能位;
, H: z  j& c% B2 b( N( O4 f; Z) k2位:接收状态中断使能位;
, s# A  }7 _: Z# W9 }. @/ F1位:发送结束中断使能位;
: d' ^1 l- T/ @7 Z" J0位:数据接收完使能位。# W% ?& ^0 }& A$ o
2.2.3 中断识别寄存器/FIFO控制寄存器. n2 E( o' s3 L

- J" _$ f% ?7 a; }1 N2 y+ p- t* b4 L2 ]+ t
图58 [/ S; v9 A+ o" l5 c
15:0位:写则为FIFO控制寄存器,读则为中断识别寄存器。
+ e- m. i  S7 j2 g- ]3 v2.2.4 通信线控制寄存器
) ]& H+ U4 n. R: p; A+ u8 Q9 _
' K5 E* l8 g' _
& C, p# V0 B! j5 S% Z, @$ j6 m: t图6! B' H- h6 H5 g- p9 M+ P& Y
15:8位:保留不使用;
" z) Q' V+ l' J/ |; _7位:波特率使能位;
" `* v9 g. t4 w3 r6 d2 r$ X6位:停止控制位;
+ @! K; i! y! n: Z0 }* k5位:保留不使用;6 |5 H# L, l- k' @- ?& R7 M
4位:奇偶校验选择位;
6 Z% s3 d2 m; i: t4 z( o! K3位:校验位;' ]+ q: p( T" A& i4 _0 d( ?
2位:停止位;
& Y2 k& j" H: P* A. k! I9 F* E1:0位:数据长度。* @) r5 |8 V, s* G$ z+ c% E
2.2.5 调制器控制寄存器5 y- J7 e& B* J& A
# h2 a5 `0 B$ P9 Y3 \! _
! Y/ L8 l0 ~+ j; a5 q' g
( w' X# D/ A! [* S# j: }
0 J( K9 y7 Q" i, U9 l5 `' {4 _
图7# ]# ]0 ]" e) W' C# Z; |
15:7位:保留不使用;9 Y8 o9 Z+ ?7 y' V$ h6 z2 q
6位:红外通信使能位;
6 r9 p5 u& N% @) M  u5位:自动流控制使能位;0 |$ Z) U% u  Z$ U- L
4位:回路位,用于测试;& g1 O5 }. d( g$ W
3位:用户指定输出2;
2 S1 J( z' g9 c7 G2位:用户指定输出1;0 m5 |7 U7 P  l: D, @
1位:发送请求;
" M" u  r5 M1 T0 p0位:保留不使用。
9 O7 C5 E8 i1 F, N* n2.2.6 通信线状态寄存器# S% j) m, K! d2 g& V4 R: Z
7 b% t7 w8 `( |! T$ G4 q

. D6 g0 M/ \8 j7 {1 m/ I
! T- `4 w9 g8 b; `( |
- d2 G2 k* v* o; G  X! [0 b( _# J图87 ?6 ^( W+ {9 A' q* f
15:8位:保留不使用;2 Y% v' i# I, V1 n! C! H
7位:接收FIFO错误位;
$ _2 H, j! I+ y+ Q9 ]6位:发送器空位;# s9 T" k! Z  R7 k) a
5位:发送保持寄存器空位;7 R. \. Q2 r: Y: ~( o# W3 S
4位:异常停止中断位;$ |3 v- m3 U$ m7 K/ A9 a
3位:帧错误位;
4 ]% g& Z# d- }8 {' X  M2位:校验错误位;
3 T/ L/ z- h+ w) I3 X  B2 H1位:溢出错误位;
$ @8 t& b' ?: h& l8 d( Y' x0位:数据准备好位。. f5 [6 }1 o; l. e1 h% c8 g
2.3 寄存器配置讲解
2 y! J. ^- y. o#define CLK_PER_REG                 (* ( volatile uint16*)0x50000004)
6 ~3 @# V4 P) v: q; ]#define UART_RBR_THR_DLL_REG        (* ( volatile uint16*)0x50001000)- P7 }1 m3 G  `( \2 m# x8 r: @
#define UART_IER_DLH_REG            (* ( volatile uint16*)0x50001004)
! {& n6 Z' J/ A+ L, s: o$ b#define UART_IIR_FCR_REG             (* ( volatile uint16*)0x50001008)
& ?! Y5 ]5 G8 @: b# ^% j. X#define UART_LCR_REG                (* ( volatile uint16*)0x5000100C)
5 M5 W/ q" Z5 w- {4 N( G  q#define UART_MCR_REG               (* ( volatile uint16*)0x50001010)
0 c4 P: l( K( g' E5 Z4 b% J( |#define UART_LSR_REG                (* ( volatile uint16*)0x50001014)
( D  S& d% a' X: E- {0 b6 G) U#define UART_MSR_REG               (* ( volatile uint16*)0x50001018)) X* @- T8 W" Q; W- Z; G: D# R
#define UART_SCR_REG                (* ( volatile uint16*)0x5000101C)) k7 z& {" v0 c. A# F2 @; F" K
启动UART1模块的时钟CLK_PER_REG |= 0x0080;
& q7 K# R) F" p( ~1 i串口初始化寄存器配置:
( A. }/ A0 f2 q# [/ S: y首先使能波特率配置UART_LCR_REG = 0X08;; E# R; v- u# z  L
配置波特率UART_IER_DLH_REG = 0; UART_RBR_THR_DLL_REG = 9;% R! r) K& O) i7 t# C2 i
8位数据,无校验,1位停止位UART_LCR_REG = 0X03;8 e. k: J7 I: \; x
关闭红外通信功能UART_MCR_REG = 0X00;
( i; I( |3 z8 C- k  i7 [使能FIFO, UART_IIR_FCR_REG = 0X01;) H, ^) F, \+ `/ [! H
关闭中断UART_IER_DLH_REG = 0X00;5 M# ~- N. S2 V( E6 J
接收一个字节,等待接收完成while((UART_LSR_REG&0x01)==0);读取接收数据rx_data = UART_RBR_THR_DLL_REG;# o. S: K% Z) g7 U$ W& n) V8 b
发送一个字节0x55,等待发送为空while((UART_LSR_REG&0x20)==0);填充发送数据UART_RBR_THR_DLL_REG = 0xaa;
  W" j- R$ \0 r3 }: t3 G7 c
3 Z3 n6 R) T7 e8 N/ g1 j( Q) S
8 O' W' T7 c& w
9 {' \3 ^8 x( [第三节 UART实验6 r; N  G0 U* |1 D( u4 J, f
实验需要使用的模块有:手机开发板底板,Jlink调试工具,USB转串模块、杜邦线、3.7V锂电池或Mocro USB线。: t" K1 r$ s' o1 J3 Z
使用USB转串模块连接手机蓝牙串口,连接方式如下:
8 W& P( d; V+ `( I  r# [( o& x    (1)USB转串模块一端只需要使用杜邦线连接RXD、TXD、GND三个引脚,如下图所示:
/ \# f$ c4 s1 s' [' I  s# x1 x6 W2 `. t0 |1 z
# x6 x' v. X) O- J
图9
/ G. q, X' H: O( S$ ~3 V. T: X (2)手机主控底板一端需要使用杜邦线连接左侧J7三个引脚,与USB转串模块的引脚一一对应(串口引脚交叉),分别为RXD-->TXD、TXD-->RXD、GND-->GND,如下图所示:. e! |) N" j& r" \& O+ D8 m! ~
& a0 t6 ]3 O7 [6 F" o

  c% [6 a. d: K0 D$ d1 A1 L图10
& U8 ^- @0 {7 [7 |使用JLINK通过杜邦线连接手机蓝牙,连接方式如下:3 y: s9 X" ^3 {! _
(1)JLINK一端只需要使用杜邦线连接JLINK的SWC、SWD、GND三个引脚,如下图所示:4 u+ B. L& W- |  z- i0 r
) j" W, B9 j: q+ ]
7 g' B# b. e) K" n8 j, A" p
图11! f5 O5 J, Q! ^; W+ J4 t& O0 p
(2)手机蓝牙一端需要使用杜邦线连接上方右侧的J3三个引脚,与JLINK的连接引脚一一对应,分别为SWC-->SWCLK、SWD-->SWDIO、GND-->GND,如下图所示:/ t" ]; A& E/ X; o& b( _' e; l

" R( w* h$ X- V+ R$ {* B% X  O$ y! T
图12
  Z3 m4 v# j% q  T/ t0 m将JLINK插上电脑的USB接口,连接好之后给手机主控底板供电,详细的介绍可以参考《如何上电》教程,路径为:..\WT_Mobile\0.从这里开始\0.开机测试。
* T' c$ G) r# o3 B/ d4 ~$ s$ N1 |& W打开串口实验的Keil工程uart.uvproj,位于目录:..\WT_Mobile\1.初级教程\DA14580\2_初级_串口\projects\target_apps\peripheral_examples\uart\Keil_5,如下图所示:
. f5 f2 t) U6 v4 o* t# w9 i3 K8 U0 L! X% b6 }
# A  d6 o  h% F/ ], D5 p" Q
图13
( L% N( n6 L* K2 S8 I$ D9 x1 l打开串口调试助手连接串口,波特率为115200。在KEIL中,编译代码,点击DEBUG,然后点击全速运行,就可以看到串口调试助手打印出的信息,发送什么就返回什么,例如发送“WT Mobile Test!”就会返回“WT Mobile Test!”,如下图所示:( U9 ?* x1 L, y+ X6 s/ ~, d

4 Y  k" e3 g7 e' O8 J$ v( w: l2 M
1 |! t# T; e6 I. O3 H( k  L9 ]& x9 l' c# L7 O/ _- L

1 {/ M3 S; E  U图149 R6 n% @  G$ }% e9 r& m+ u+ N& f+ W
3 @/ L- l0 w, h' U

$ O5 }/ x1 u( T! Q' x1 G! W$ _% q! A( r图15, {( m$ s* \$ y2 b$ {

9 Z( n4 ^+ T" F7 e% b/ d$ Z9 o# O& C( N, D- G/ W+ u- a9 v
文件下载请点击: 串口教程.pdf (1.43 MB, 下载次数: 0) 1 l: k/ F" k1 B8 Z. [
  • TA的每日心情
    开心
    2023-6-12 15:40
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2022-6-27 18:27 | 只看该作者
    串口是3根线,
    5 S! o& k  _7 r3 S9 j7 T- D! D6 Z一根发送,一根接收,还有一个是地线
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-11-24 03:17 , Processed in 0.140625 second(s), 26 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表