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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本帖最后由 Heaven_1 于 2022-6-30 13:08 编辑 ' u: u2 ]% ]. t+ m& v3 R) o% j7 h
6 S  k4 _% |/ X% B5 j
串口实验教程
——疯壳·开发板系列

8 b$ G1 S& E. A9 F+ o/ h, g: v3 y2 p2 ]

$ @4 b( X& O6 x- d, W; |图1
. Y' V4 Z# N$ |- U( d6 _6 ?6 N2 h
1 k" @. l& o$ U1 \- g7 h6 [  O7 D( q8 z' @

% p7 r! r; D9 `第一节串口硬件电路% A2 n: a8 k2 P4 d7 N+ r$ L; g
, b0 W7 v. g5 E, q8 Z5 t! O
串口通过USB口及手环下载调试线引出,连接mcu的P12与P13引脚,如下图所示:
% e7 c4 n' h/ |! Y9 v7 j+ a. V* P/ a* k9 i: @

# x6 q, T  u2 k! i图2$ y% T7 s( \) O. L/ N: B2 ^1 D
- B$ g) p9 j( q# n. `3 J

" I. R/ y8 ]" D5 I4 I
5 K  P* P# i, ]7 V! P6 x/ Y4 _第二节 UART寄存器
5 r6 B7 v8 Y6 E" B) C
# E5 d6 F$ U4 Z, u& h3 ]2.1 UART介绍! x* U4 n2 [1 V$ m
    这个UART符合工业标准16550,并且可以和外围设备串行通信。主设备(CPU)通过APB总线将数据写进UART并且被转换成串行格式并且发送到目标设备。串行数据也可以通过UART被接收存储之后,主设备读取接收的数据。
: W4 M) N8 r8 h. ~. L, w# dUART模块不支持DMA,但是它有内部FIFOs,并且支持硬件流控制信号(RTS,CTS,DTR,DSR)。
; n% k) I$ r. h7 W  `0 B' q! O: u/ \UART模块有16字节的发送和接收FIFO;支持硬件流控制(CTS/RTS);影子寄存器来减少软件开销并且有可编程的软件复位;发送寄存器为空的中断模式;IrDA 1.0 SIR模式支持低功耗模式;可编程的字节属性、校验位和停止位(1,1.5,2);可以断开通信及检测通信线是否断开;中断优先级的识别;可编程的串行通信波特率。" l% o7 x8 k9 T9 m6 y' I* l
2.2 UART寄存器
2 w. h* U9 w7 ~$ H5 SUART相关的寄存器比较多,所以我们只介绍常用的寄存器,其它的可以参考官方数据手册DA14580_DS_v3.1.pdf,位于目录:..\WT开发板\硬件资料。
7 h4 `  ?. J6 w6 p3 U6 p/ ?2.2.1 接收缓冲寄存器8 n) P' B! ]+ W6 h2 W+ x5 \4 N( l

7 E* z4 E3 b8 x  |* }) @
. y- k( |" ^9 u/ f# |& U5 N( ]0 X" P& I, B# |/ |
图3: v) C! a/ T2 S' b* C  L
15:8位:保留不使用;
3 P) Q! z+ H. H' i/ R7:0位:接收缓存寄存器。8 \" o% x- S2 V1 T
2.2.2 中断使能寄存器# T% p- I9 w5 I" M2 i, s5 \8 Q, h
& x9 G" [! j8 f  ^  x$ v

2 c' K! Z7 }1 e" t& |9 x1 ^7 |
! |" }  j  E+ I2 O1 H4 J图42 R- x+ x( B& {
15:8位:保留不使用;+ ^) D% q6 N2 [
7位:发送空中断使能位;
6 c: o2 Y. b- _6:4位:保留不使用;
& h, v' Y0 V3 @  X6 b+ P* v$ L3位:调制状态中断使能位;
' V5 R; r* p" s' O& I  H2位:接收状态中断使能位;! l& E5 q! \/ K
1位:发送结束中断使能位;" ^/ M9 Y4 T* ~
0位:数据接收完使能位。: u0 `$ M8 f  K  ~
2.2.3 中断识别寄存器/FIFO控制寄存器1 K0 h7 u2 r4 S; Y
+ y6 M  {% }$ A7 D& I. K' U0 t
& W3 @0 Z9 ]4 |
图5
' ]0 W, ~" W7 O' l  K15:0位:写则为FIFO控制寄存器,读则为中断识别寄存器。
. y3 I: E" D- R2 c0 M: U+ f) F2.2.4 通信线控制寄存器' X, e4 _- T6 ~7 a$ N; S4 T
) e& l. e! n( Y7 s5 A! q$ z; s

! h3 _5 G$ i$ C+ o. ~图6
8 c$ O  ~6 z% T15:8位:保留不使用;
1 x$ d, i1 w7 [$ L7位:波特率使能位;, [* C: ^; p' }- a# u# r
6位:停止控制位;' B3 B4 n! U5 N/ O. {/ K0 w
5位:保留不使用;
. U, T+ ^2 c3 n4 n* G5 D8 F4位:奇偶校验选择位;, E' ]3 T, {/ B' o
3位:校验位;4 Y) X' C8 }; Y4 N( K
2位:停止位;! E# q3 Y& |3 I! t: v3 K
1:0位:数据长度。+ x% ^* U% X% M; M; S
2.2.5 调制器控制寄存器
4 ?" M, W0 ^. V' J
1 b, W' w% ^. ]( E0 H+ d9 Z. b! |6 m  [

6 M4 d2 L+ }7 b7 k/ W& U/ h8 O: y8 [1 i/ H" V4 Q# g; X
图77 l! O6 n! l9 f% @- p" R/ p
15:7位:保留不使用;
: _& a) b$ J/ R& \* t/ U" {. X6位:红外通信使能位;
9 J0 w2 B5 M! R2 b: J+ X5位:自动流控制使能位;
2 n3 M2 c) U. P7 |4位:回路位,用于测试;
2 ]5 V% k$ ?6 r) \: W3位:用户指定输出2;
# P1 E8 ?  S. z: M9 E* U( x2位:用户指定输出1;
. ^' e8 d# p' z1位:发送请求;6 O3 D( v" Q* V: N' O: O6 D
0位:保留不使用。* c' S; s6 v- P) ]: X7 E  `- |
2.2.6 通信线状态寄存器
4 W6 P! V4 n! a/ M5 z6 J: T& p/ c! {; A% a% d+ i' k% A8 i' K  F
1 @! ^9 ]9 L' c$ f4 e
; }1 Y  V8 u# f% [8 N

- e- H! o$ j4 {& ~  q: c+ E. j图8
9 F; [  p2 W. L% I15:8位:保留不使用;9 n0 k3 E1 K" h0 i% E' r; M" l
7位:接收FIFO错误位;
2 D# s3 q. O( B1 E, D6 [6位:发送器空位;
7 d6 r3 N! E5 ?7 m6 Z' [5位:发送保持寄存器空位;. ?) }4 c$ D0 Z+ v6 t
4位:异常停止中断位;
) n5 {; p6 Z' M3位:帧错误位;
2 R1 I( B( b! e! v2 F! v  V6 H2位:校验错误位;" [( K! j( h' C5 m7 z
1位:溢出错误位;+ Y8 o* l& A* D
0位:数据准备好位。6 [- {! Q  o& z& g# O: ]) N! E! F
2.3 寄存器配置讲解
! D' w2 g' Y$ G% ]+ o9 V$ c#define CLK_PER_REG                 (* ( volatile uint16*)0x50000004); c( V3 U( p" f" k( s" m6 T8 z
#define UART_RBR_THR_DLL_REG        (* ( volatile uint16*)0x50001000)
, j9 s$ \/ O$ r#define UART_IER_DLH_REG            (* ( volatile uint16*)0x50001004)2 v6 v1 \8 D. a; c* t9 r! d  c! y6 |
#define UART_IIR_FCR_REG             (* ( volatile uint16*)0x50001008)
. q1 C* X: K: Y7 O, W#define UART_LCR_REG                (* ( volatile uint16*)0x5000100C)8 \! E, j" C- }( m
#define UART_MCR_REG               (* ( volatile uint16*)0x50001010)1 T  w$ S0 V* J+ X1 }
#define UART_LSR_REG                (* ( volatile uint16*)0x50001014)
! Q$ n' Q4 B* Y" M8 m! ^#define UART_MSR_REG               (* ( volatile uint16*)0x50001018)
. g9 o- {: d$ ]# t  I; v- D#define UART_SCR_REG                (* ( volatile uint16*)0x5000101C)9 r/ r/ j. X, x' I( ^/ Z
启动UART1模块的时钟CLK_PER_REG |= 0x0080;
. j2 L0 y6 Z8 ~+ L; b串口初始化寄存器配置:- L+ A1 E0 n+ \% z! Y! D
首先使能波特率配置UART_LCR_REG = 0X08;
: q5 m; ?# T& p. l0 V配置波特率UART_IER_DLH_REG = 0; UART_RBR_THR_DLL_REG = 9;
/ q, d2 i) q5 a5 `8位数据,无校验,1位停止位UART_LCR_REG = 0X03;( ?  y$ L" [6 f1 U7 p4 L
关闭红外通信功能UART_MCR_REG = 0X00;
& U/ E6 S, Y; g( n3 m2 Q: u9 s1 \使能FIFO, UART_IIR_FCR_REG = 0X01;
9 A' d3 Z5 ~3 T5 a" K' N5 P, `关闭中断UART_IER_DLH_REG = 0X00;# ^9 ^" x# \/ J3 U  ?# x, ?8 S
接收一个字节,等待接收完成while((UART_LSR_REG&0x01)==0);读取接收数据rx_data = UART_RBR_THR_DLL_REG;. z" d+ }; ~7 k8 u  r1 {
发送一个字节0x55,等待发送为空while((UART_LSR_REG&0x20)==0);填充发送数据UART_RBR_THR_DLL_REG = 0xaa;
7 _. }8 r& m% F# S" T
5 b% z  ]0 \2 A9 q0 ^* r9 E, w+ e  k4 H/ W% K) H1 \, X
8 D3 T8 ^( s7 ?7 m! a3 j4 b' R' q
第三节 UART实验
& Z+ A6 }2 Y' }! o6 y7 F实验需要使用的模块有:手机开发板底板,Jlink调试工具,USB转串模块、杜邦线、3.7V锂电池或Mocro USB线。
+ `% r& f1 Q+ r  ~) H8 ]  \2 i* m使用USB转串模块连接手机蓝牙串口,连接方式如下:: g+ ~3 o/ e) `" i- z( j7 a$ E
    (1)USB转串模块一端只需要使用杜邦线连接RXD、TXD、GND三个引脚,如下图所示:
, X- G7 \7 c' z; Q- _- R/ I- C& e4 y# j; I8 ^- ~1 ~  J

1 b" U) D9 g: ^图9' G  R7 s) z+ T7 ?: t5 L
(2)手机主控底板一端需要使用杜邦线连接左侧J7三个引脚,与USB转串模块的引脚一一对应(串口引脚交叉),分别为RXD-->TXD、TXD-->RXD、GND-->GND,如下图所示:. Z7 [# S5 r+ J
" X% K5 T" n, H( ?' U' z( s1 {
$ B3 @+ C9 q+ U+ k- |8 `0 h2 |7 {+ k
图10
, r/ }2 a  d' D5 l' W+ m& S1 x使用JLINK通过杜邦线连接手机蓝牙,连接方式如下:1 a- j6 ?/ ^. D2 q+ c% E
(1)JLINK一端只需要使用杜邦线连接JLINK的SWC、SWD、GND三个引脚,如下图所示:5 q4 ~; U' t5 [4 z6 [4 P
& ^* D6 \, t: g# h6 T7 W! I0 B
8 P/ b. _: F: L3 `6 H5 r
图11
6 h# R) p! }$ `; i2 \* @  ]" R(2)手机蓝牙一端需要使用杜邦线连接上方右侧的J3三个引脚,与JLINK的连接引脚一一对应,分别为SWC-->SWCLK、SWD-->SWDIO、GND-->GND,如下图所示:
% Y* n- s9 L3 @; e; l, q
0 y9 v" T9 k+ l4 P7 e3 I* b9 p3 j7 c2 |" e4 [2 r7 X" G
图12
* z, W+ O+ t; h  X, c: J# |9 v将JLINK插上电脑的USB接口,连接好之后给手机主控底板供电,详细的介绍可以参考《如何上电》教程,路径为:..\WT_Mobile\0.从这里开始\0.开机测试。
# t5 m; E1 h; K打开串口实验的Keil工程uart.uvproj,位于目录:..\WT_Mobile\1.初级教程\DA14580\2_初级_串口\projects\target_apps\peripheral_examples\uart\Keil_5,如下图所示:
4 w) r4 W6 N% [1 [/ P% M
/ Q  O% A6 u; h9 D+ Y9 O. K" I, @$ D  q
图13
4 X5 t/ j. c5 Q9 u打开串口调试助手连接串口,波特率为115200。在KEIL中,编译代码,点击DEBUG,然后点击全速运行,就可以看到串口调试助手打印出的信息,发送什么就返回什么,例如发送“WT Mobile Test!”就会返回“WT Mobile Test!”,如下图所示:* K& _& g2 S% d+ r

/ Q& s. z) `) ^4 j  z" J* n7 ~3 k  v$ h
3 c0 a! _* l0 ?6 C! C

6 ]+ [; c1 ~( {0 N" K% j图140 `7 C% Q! Y" ~- {, \! h6 v7 {
( n( T' `& b3 j5 x/ c% _. t
& f, U: Y8 j, ^! s9 f1 N
图15
/ c# }0 L) I- Q/ N  v% O5 ~+ T5 x- Z
6 n' [( C# c! K
文件下载请点击: 串口教程.pdf (1.43 MB, 下载次数: 0) # C" E5 b( N) z
  • TA的每日心情
    开心
    2023-6-12 15:40
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2022-6-27 18:27 | 只看该作者
    串口是3根线,
    # _9 \8 ~, p8 }# f( c* ]. T' b一根发送,一根接收,还有一个是地线
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-6-17 11:09 , Processed in 0.093750 second(s), 26 queries , Gzip On.

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

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

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