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

【疯壳·ARM开发教程5】ARM功能手机-串口实验教程

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 Heaven_1 于 2022-8-31 13:46 编辑
* E8 W% v& I/ M/ I# z9 p4 B
$ D# h; b) v& u9 c
ARM功能手机
——疯壳·开发板系列
串口实验教程
# [( t, ^2 D" _

% ^- o3 x7 @% e3 x4 X2 z2 G6 o3 D
* [* B  D: m, C) A1 R% u4 D- p) P$ u  I, p  B6 Q1 f0 }! Z

& ~: A! g" q" F3 M图1! y, O3 U  B; Y5 t* Y/ ]& G. }
# \% m& E* p  p1 T+ `, m/ w

* V; S4 i7 e" [3 Y, x4 w2 L5 g8 g! E4 M0 i. S$ H6 {
第一节串口硬件电路$ t9 n1 n" Z- o( ~" _3 }
1 [9 Q; z- K- N$ m5 ]- b, S
串口通过USB口及手环下载调试线引出,连接mcu的P12与P13引脚,如下图所示:
& @- m7 }5 h) y7 }4 J; R1 D" Y5 z2 i, b7 r7 p/ E$ e  Q6 X

1 ?( T: N3 \1 s; t% q7 B  ?
) S$ J3 b( Y- Z, x% X图2
3 ~+ C3 B4 [/ I* N" S+ Q6 z. O2 `& C7 T1 v! @! K9 R

1 m) M+ E3 g" P+ z: t! V+ B! O; n# F# ?1 d9 D6 Y6 t
第二节 UART寄存器' h4 A; d& _6 H( A, S
# H. Q/ |  N* k. ~
2.1 UART介绍
- J7 A! V7 D1 L, ~9 }) |    这个UART符合工业标准16550,并且可以和外围设备串行通信。主设备(CPU)通过APB总线将数据写进UART并且被转换成串行格式并且发送到目标设备。串行数据也可以通过UART被接收存储之后,主设备读取接收的数据。; c- ]! a5 u' b5 a* O
UART模块不支持DMA,但是它有内部FIFOs,并且支持硬件流控制信号(RTS,CTS,DTR,DSR)。. j7 V* [# h% U
UART模块有16字节的发送和接收FIFO;支持硬件流控制(CTS/RTS);影子寄存器来减少软件开销并且有可编程的软件复位;发送寄存器为空的中断模式;IrDA 1.0 SIR模式支持低功耗模式;可编程的字节属性、校验位和停止位(1,1.5,2);可以断开通信及检测通信线是否断开;中断优先级的识别;可编程的串行通信波特率。
. q$ w$ r4 |; i/ A3 D2.2 UART寄存器5 h/ B$ R1 F) R: J$ g- C
UART相关的寄存器比较多,所以我们只介绍常用的寄存器,其它的可以参考官方数据手册DA14580_DS_v3.1.pdf,位于目录:..\WT开发板\硬件资料。
( P1 w* B/ i0 ?  d+ u+ S) z2.2.1 接收缓冲寄存器
, k  i2 \) h- P2 C3 x
. N9 u7 d1 |" U9 T' l& m4 c 6 i4 ^3 X3 b1 ^" P' E

: L+ h: e/ w3 ?6 H: M( l- r图3
  e. Z" ^' H* z6 J+ c6 Q15:8位:保留不使用;4 I. n: \  E  b1 v! `
7:0位:接收缓存寄存器。* t6 ^' n! Y, e2 q+ Q
2.2.2 中断使能寄存器
5 B/ \# F6 M% j7 G" b- u
. h; \1 Z( ~+ T& s. ~- b ; F/ E3 f2 e" q; Q& B9 R

+ f3 b5 E4 B0 F$ r/ z% }# x图4
9 n3 j, s4 @1 U4 S; S  I5 c15:8位:保留不使用;: m2 f* \, l5 J. Z7 T% O2 B
7位:发送空中断使能位;
: P" r1 _2 D9 H9 ~! C* b$ S# r6:4位:保留不使用;5 d2 |# n1 n! e( ^8 x; ]4 I9 B
3位:调制状态中断使能位;/ e$ J6 I* o$ @& ~  H6 ?: V2 d
2位:接收状态中断使能位;
* Z! F1 |+ `/ {1位:发送结束中断使能位;
; L& c- k' e8 _0位:数据接收完使能位。2 f9 z- c6 i+ b  F; c5 E
2.2.3 中断识别寄存器/FIFO控制寄存器
1 ], O8 }* d+ k3 r/ k3 e5 I
+ G+ d: B. K' e9 b
3 H: C. {4 y5 R6 }/ h图5
4 h: I' {8 ^+ j( H4 ~7 x15:0位:写则为FIFO控制寄存器,读则为中断识别寄存器。
7 ?5 R8 X# p$ ~2.2.4 通信线控制寄存器7 B/ Q8 L( n5 n
: c9 U/ r$ Y: x7 L$ X6 Q

2 v  u& k" Y: y图6
" D% L2 t$ W7 @15:8位:保留不使用;
( `* P) Z( ], w1 V) o7位:波特率使能位;! T+ _" V4 h+ p1 I8 d  N
6位:停止控制位;
- P. p* q8 V+ h: R1 d% z1 e5位:保留不使用;# I8 ^; a' [" B2 }
4位:奇偶校验选择位;
+ f" m0 \) m1 b4 E7 v9 c3位:校验位;
1 U/ c9 e+ b3 g- N5 D# ^# C2位:停止位;3 {- e& G  u( g1 j4 x
1:0位:数据长度。
! u$ b+ x9 s3 {: j# N2.2.5 调制器控制寄存器
8 t+ ]) K0 t3 g$ G/ V
! [' r1 D4 Y+ e" ~2 D3 ~* s; y   a6 C  u2 w, O

3 B3 x6 l- r) a3 M9 v  R' h ( b1 D* U/ m# @) G4 V! S' @
图7( p9 Z4 G, H* Q& U, p% T
15:7位:保留不使用;
+ T/ D' ]  }  N' l6位:红外通信使能位;- K4 Y4 N$ e: d* K) O
5位:自动流控制使能位;
& ], x* }/ ^1 F4 h5 e4位:回路位,用于测试;, j# |# c) o$ N: A
3位:用户指定输出2;
9 y# `4 q! {6 B/ n" d2位:用户指定输出1;
3 W+ c3 |  v& U  b  J' C1位:发送请求;: T! C3 k5 ~# x/ e6 W2 g
0位:保留不使用。) y% X- v- G! u/ }: q! J
2.2.6 通信线状态寄存器
" E0 B: G) ^6 a& x" J3 b
8 _' ^' u: O0 f) ^( ~4 \" \  B
1 }9 x  [  n9 {& @$ A4 x
; X5 s* N* E7 k! c! }2 n7 o / z8 E2 t0 t) C* X) B% p
图8# U. k  U9 F0 J2 d! d  a% T2 x0 a
15:8位:保留不使用;
' [9 p& I) l0 |' q3 e7位:接收FIFO错误位;
3 `/ m: e2 o- M2 I: H3 w6位:发送器空位;2 j" q3 D1 B8 o) I4 _8 a4 x
5位:发送保持寄存器空位;/ N" g8 ^$ `1 E7 q
4位:异常停止中断位;+ ]6 l/ u2 b& l2 Y' Y
3位:帧错误位;$ ^6 i3 y2 G8 F3 C4 z6 |
2位:校验错误位;* R9 }; l$ L5 e* ^1 ^
1位:溢出错误位;
' }4 ?% C' g- ]8 A. t' t) @* n$ U0位:数据准备好位。8 i' ?1 ]8 P* ?* V6 R+ q" j. Y
2.3 寄存器配置讲解
9 h9 i+ Y7 q& }# }( A" g  E: G3 ~#define CLK_PER_REG                 (* ( volatile uint16*)0x50000004)0 L% u7 @0 q1 M
#define UART_RBR_THR_DLL_REG        (* ( volatile uint16*)0x50001000)
+ K: U& b) K8 y) Z#define UART_IER_DLH_REG            (* ( volatile uint16*)0x50001004)8 c8 t3 E7 ^+ t) T* Q$ N( e: n3 r
#define UART_IIR_FCR_REG             (* ( volatile uint16*)0x50001008)% ?, F9 J8 C2 S' Q6 q
#define UART_LCR_REG                (* ( volatile uint16*)0x5000100C)! g- ?) T& z* v% P1 g3 y. \
#define UART_MCR_REG               (* ( volatile uint16*)0x50001010)
4 ^  P1 Z& C/ W; d& N4 _9 l( Y#define UART_LSR_REG                (* ( volatile uint16*)0x50001014)( _# `# w/ P' `
#define UART_MSR_REG               (* ( volatile uint16*)0x50001018)2 A, y# f7 a7 E+ L" t5 Z/ f2 n8 j% M; u
#define UART_SCR_REG                (* ( volatile uint16*)0x5000101C)
/ L) ]6 p* \7 T2 R启动UART1模块的时钟CLK_PER_REG |= 0x0080;
) x- p7 n( m( y3 ]串口初始化寄存器配置:
/ d( f! `! r, f6 O, q首先使能波特率配置UART_LCR_REG = 0X08;
. B! F" Y* W; G4 W: a配置波特率UART_IER_DLH_REG = 0; UART_RBR_THR_DLL_REG = 9;
$ X  F  H. w. ~# ^8位数据,无校验,1位停止位UART_LCR_REG = 0X03;8 p/ N4 F# h6 \8 Z3 S
关闭红外通信功能UART_MCR_REG = 0X00;0 _/ {) m, r& A1 ?: X  d& c( [0 W
使能FIFO, UART_IIR_FCR_REG = 0X01;
8 m- f, O! `5 d关闭中断UART_IER_DLH_REG = 0X00;
$ Z  ~0 [/ {: |+ _接收一个字节,等待接收完成while((UART_LSR_REG&0x01)==0);读取接收数据rx_data = UART_RBR_THR_DLL_REG;! I* F$ O& ]- k3 ^
发送一个字节0x55,等待发送为空while((UART_LSR_REG&0x20)==0);填充发送数据UART_RBR_THR_DLL_REG = 0xaa;
! z7 E' F; B) {$ K
, O  m# w9 ?  w. Z6 g3 K6 N* M: c! J6 S& G# u
; h0 v, ?5 v3 [5 K, M* T
第三节 UART实验5 D# I3 s. A7 _0 F, ^
实验需要使用的模块有:手机开发板底板,Jlink调试工具,USB转串模块、杜邦线、3.7V锂电池或Mocro USB线。
% N7 i  a5 Z# @使用USB转串模块连接手机蓝牙串口,连接方式如下:8 K3 u) K& ?' w
    (1)USB转串模块一端只需要使用杜邦线连接RXD、TXD、GND三个引脚,如下图所示:8 v5 S5 W8 |5 P; t4 m) A

6 _# f1 `5 s, {: m% q " x* G; r6 E. k3 c3 p; ]
图90 l! l5 ^1 ~0 Q% M
(2)手机主控底板一端需要使用杜邦线连接左侧J7三个引脚,与USB转串模块的引脚一一对应(串口引脚交叉),分别为RXD-->TXD、TXD-->RXD、GND-->GND,如下图所示:, S, U# G2 k! @

7 w# h: ~6 j/ V' ?7 l
. Z% J6 X- ~* |0 k9 Q图10  W. i1 @1 }+ p
使用JLINK通过杜邦线连接手机蓝牙,连接方式如下:
5 Z7 L7 `( M4 a) t(1)JLINK一端只需要使用杜邦线连接JLINK的SWC、SWD、GND三个引脚,如下图所示:  s- g" [5 G9 _$ e

5 k6 y3 V- V" D) j9 e
, C6 i- o* ~- ?" m' N图11
( q; E' Y; J9 ]0 `3 o(2)手机蓝牙一端需要使用杜邦线连接上方右侧的J3三个引脚,与JLINK的连接引脚一一对应,分别为SWC-->SWCLK、SWD-->SWDIO、GND-->GND,如下图所示:
0 |2 K2 b$ k, k3 X+ }' e8 M& _2 Q* T

  o2 j# O: r% E9 A- E/ K图12
) B, l; j+ ?8 ?+ Y( z& n将JLINK插上电脑的USB接口,连接好之后给手机主控底板供电,详细的介绍可以参考《如何上电》教程,路径为:..\WT_Mobile\0.从这里开始\0.开机测试。/ g0 W( _( k  b  }
打开串口实验的Keil工程uart.uvproj,位于目录:..\WT_Mobile\1.初级教程\DA14580\2_初级_串口\projects\target_apps\peripheral_examples\uart\Keil_5,如下图所示:. o$ C6 v3 v3 c

/ l3 _. L: P" i& j2 y" x
5 {7 d8 U0 ]5 G5 m图13
, q8 S4 u3 [1 J7 _* C打开串口调试助手连接串口,波特率为115200。在KEIL中,编译代码,点击DEBUG,然后点击全速运行,就可以看到串口调试助手打印出的信息,发送什么就返回什么,例如发送“WT Mobile Test!”就会返回“WT Mobile Test!”,如下图所示:' J6 X( w1 b" P; g
5 @" r+ a/ p6 }  i% `% l

; m. ~0 @. N1 U: G: p9 I# T+ K
7 I+ ]$ a  v8 s8 P$ }
8 I; d$ f; N; K0 N5 y" @图14
( ]# q; w. h+ V" M. Q& i
) A4 x' h4 E1 Z  F. u2 F/ ?6 m
6 B9 b4 |; ?& j  w  y0 f; U) ~: x" V- k- q

  i! T( H; C& S# }$ k% c+ Z% V+ u- E- W" j/ I

; w6 n, K& }0 C( b0 m文件下载请点击: 串口教程.pdf (1.43 MB, 下载次数: 0)         ) ^2 t) c4 L0 T+ \2 ]

  _% r% w( X. e; q) M0 ^
  • TA的每日心情
    开心
    2023-1-11 15:38
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2022-8-31 13:43 | 只看该作者
    调试开发板
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-10-28 17:42 , Processed in 0.171875 second(s), 27 queries , Gzip On.

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

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

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