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

【开发教程6】疯壳·AI语音人脸识别-串口

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
CC3200AI实验教程
——疯壳·开发板系列
串口
) G# m* `$ u* e$ C5 ?) O* z

2 p, x- D( ?$ C9 k  M
6 D1 l5 q/ w- z8 \: P" T; d* x) J  _3 O* Q; @# Z
    串行接口分为异步串行接口和同步串行接口两种。异步串行接口统称为通用异步收发器(UART)接口,同步串行接口有SPI和I2C等,同步串行接口除了包含数据线外,还包含时钟线。
0 z4 f2 A" h) c8 O3 J6 @    本次实验中我们使用的是UART,也就是异步串行通信接口。UART的相关标准规定了接口的机械特性、电气特性和功能特性等,UART的电气特性标准包括 RS-232C、RS-422、RS-423和RS-485等,其中RS-232C是最常用的串行通信标准。RS-232C是数据终端设备(DTE)和数据通信设备(DCE)之间串行二进制数据交换接口技术标准,其中DTE包括微机、微控制器和打印机等,DCE包括调制解调器MODEM、GSM模块和Wi-Fi模块灯。       
8 Y% R; n' A! o% w    RS-232C机械特性规定使用25针D型连接器,后来简化为9针D型连接器。RS-232C的电气特性采用负逻辑:逻辑“1”的电平低于-3V,逻辑“0”的电平高于+3V,这个TTL的正逻辑(逻辑“1”表示高电平,逻辑“0”表示低电平)不同,因此通过RS-232C和TTL器件通信时必须进行电平转换。9 d9 z/ `4 j" {" V& Q. O/ u' [
    目前微控制器的UART接口采用的是TTL正逻辑,和TTL器件连接不需要电平转换。和采用负逻辑的计算机相连接时需要进行电平转换(我们一般使用USB转串模块)。( J* P9 t+ l3 P1 A3 D8 B
    CC3200包含两个可编程UART接口(UARTA0~1),主要特性如下:6 L7 q2 N  H, `; o2 t; P8 Y6 l: n
    a、可编程的波特率发生器,允许速度高达3Mbps;  T5 Z& E0 ]5 I5 f+ y( Z2 {1 ~
    b、独立的16*8发送和接口FIFO,减轻CPU中断处理负载;
$ ?  y0 d6 C7 L    c、可编程FIFO长度,包括提供传统双缓冲接口的单字节操作;
- E- m- J4 g: o8 ?  _: W! R) s- M. F    d、FIFO触发阈值包括1/8、1/4、1/2、3/4和7/8;
1 G- s) }# w$ ^) u6 K6 k    e、标准的异步通信起始、停止和奇偶校验位。8 S) d" B8 D+ P  x* z9 ?9 E4 K  c# r
    CC3200的UART接口具有以下可编程串行接口特性:
1 ]3 y8 h7 P! _& Z' K2 t# F    a、可编程的5、6、7或8位数据;
6 v& N- V9 K" [! L1 N  N5 `    b、偶、奇或无校验生成/检测;
4 W* U9 s+ `/ p! m1 e9 }    c、1或2个停止位生成;% o* J" g. e  V% S3 d4 J' W
    d、支持RTS和CTS调制解调器握手;) i. `8 ?" T: {, |3 G7 j: Q
    e、标准的FIFO阈值中断和传输结束中断。: ~$ g; m: {, I0 {4 c$ i' L
    CC3200的UART支持DMA,使用DMA可实现高效传输,UART具有单独的DMA发送和接收通道。支持当FIFO中有数据的单个请求接收和可编程FIFO阈值的突发请求接收以及FIFO中有空间的单个请求发送和可编程FIFO阈值的突发请求发送。
7 l& E: k+ `8 {# v. B    1.1寄存器2 o0 ?; P$ d. ?* b" F
    UARTDR为数据寄存器(也是FIFOs的接口)。! m: N$ ~5 E, k  {2 C- Y5 \. h) P
    在发送数据时,如果FIFO使能了,则写入该寄存器的数据会发送到发送FIFO 中。如果FIFO关闭,数据会被存储在发送保持寄存器中(发送FIFO最低一个字)。写该寄存器意味着通过串口发送。& _; o2 O1 N8 v1 r2 r
    在接收数据时,如果FIFO使能了,数据字节和4位状态位被发送到12位宽的接收FIFO中。如果FIFO关闭,数据字节和状态被存储在接收保持寄存器中(接收FIFO中的最低一个字)。可以通过读取该寄存器来获取接收数据。如图1.0.1所示为UARTDR寄存器,如图1.0.2为其位定义。; h8 g0 C  l* W

8 c( F( j( I. P0 X- O2 a     : e0 e5 {  H' S7 W! @
    图1.0.1 UARTDR寄存器
/ t1 U0 D" I7 e4 p& `( H; \
3 J+ A* t1 O  u     0 X& d* v2 i( }( n. f  [; K; H
    图1.0.2 UARTDR寄存器位定义
* R2 P; r2 |# @3 k    UARTRSR_UARTECR是接收状态寄存器/错误清除寄存器。除了UARTDR寄存器之外,接收的状态位也可以通过UARTRSR寄存器获取。如果从该寄存器读取状态信息,则状态信息对应与在读取UARTRSR寄存器之前的UARTDR的状态信息。当有溢出条件发生时,状态位中的溢出标志位会立刻被置位。UARTRSR寄存器不能被写。写任何值到寄存器UARTECR中将会清除帧、校验、打断和溢出错误。复位会清零所有的位。如图1.0.3所示为UARTRSR_UARTECR寄存器,如图1.0.4为其位定义。, r% h: |3 i! O  k' I, j
+ @; W& X6 j" ]- ^4 |
   
$ a2 z) d- `0 }( z3 q/ b    图1.0.3 UARTRSR_UARTECR寄存器, `( P! N) n/ E2 Q+ l

9 [- I9 r$ N3 w, t9 ]    
; {/ d1 @% s' m, i+ a3 V7 u+ @    图1.0.4 UARTRSR_UARTECR寄存器位定义
  n4 |8 T* e% l# R% O& y    UARTFR为标志寄存器。在复位之后,TXFF、RXFF和BUSY标志位为0,TXFE 和RXFE位为1。RI和CTS位指示调制解调器的控制流和状态。这里需要注意的是,调制解调位只在UART1中有效,在UART0中是保留位。如图1.0.5所示为UARTFR,图1.0.6为其位定义。
) `/ p( R2 e; c3 _! f0 R1 A- |, v! p8 j  R- n4 G
    3 j$ o5 R3 ^  O4 H% r/ S
    图1.0.5 UARTFR寄存器: ]% p! I$ P# F* m& j' d3 c
/ z% i8 C" ?4 C8 D! m, ?
   : u" z2 G$ |! _
    图1.0.6 UARTFR寄存器位定义& P9 I+ h- ~  R8 X4 H2 Z
    UARTIBRD寄存器是波特率除数的整数部分。复位之后所有的位被清零。最小值为1(当UARTIBRD为0时),此时UARTFBRD寄存器无效。当改变UARTIBRD 寄存器时,只有在当前的字节传输完成之后才生效。波特率除数的任何改变都必须在写UARTLCRH寄存器之后。如图1.0.7所示为UARTIBRD寄存器。
$ |2 \# Q0 \* N6 a( k7 C6 t* _) G3 s
   
* J1 H$ |# d: ^% A) P3 g    图1.0.7 UARTIBRD寄存器
5 ?0 b) ?! P+ ~; O# O, S- M    UARTFBRD寄存器是波特率除数的小数部分。复位之后所有的位被清零。当修改UARTFBRD寄存器的值时,只有在当前字节发送或者接收完成之后才会有效。波特率除数的任何改变都必须在写UARTLCRH寄存器之后。如图1.0.8所示为UARTFBRD寄存器。
* A3 H7 m7 `% q6 N) Z
# R: y6 O% H# o1 o1 v. h     7 z' `. Y5 A8 T0 c& C" B$ V
    图1.0.8 UARTFBRD寄存器
7 ]+ d% f" u/ U, _. r    UARTLCRH寄存器是线控制寄存器。该寄存器控制串口的数据长度、校验和停止位的选择。当更新波特率除数寄存器的时候,必须也要重写该寄存器。因为波特率除数寄存器的写选通信号和该寄存器是连接在一起的。如图1.0.9所示为UARTLCRH寄存器,图1.1.0为其位定义。( Y3 @( [" Q, b* Z) `4 l

1 z1 m0 F8 P; U5 v, s    
! w( }4 a6 C% U; b3 ^! h; F& p0 x    图1.0.9 UARTLCRH寄存器" s' B  \0 r$ R
1 Q; `. l" D: S" ]
3 U* _4 \+ o6 z. |
   * C4 _3 }. q' u
    图1.1.0 UARTLCRH寄存器位定义
0 W" Z7 m# r; S/ l    UARTCTL是控制寄存器。在复位之后,除了发送和接收使能位之外,其它位都被清零。UARTEN位用于使能UART模块。在配置串口模块时必须将该位清零。如果在串口进行发送或者接收的操作时关闭串口模块功能,则在完成当前发送或者接收操作之后才关闭。如图1.1.1所示为UARTCTL寄存器,如图1.1.2为其位定义。* U5 C: U9 b# x6 k0 `/ x
    注意:在UART使能的状态下,UARTCTL寄存器不能被改变,否则结果是无法预测的。修改UARTCTL寄存器时建议按照下面的操作进行:% K  I5 R# N8 U' f' r6 b
    1、关闭UART;
0 y6 i; z+ w+ a: V- w    2、等待当前字节的发送或者接收操作完成;1 Z& l5 }- [  @
    3、通过清零UARTLCRH寄存器中的FEN位来清除发送FIFO;9 l" h' L" S5 j# ~0 t$ U% x
    4、重新写控制寄存器;
# \1 p; I1 h& S    5、使能UART模块。0 |' |5 t% l' J# @* _
; E$ p1 g8 m) P* K- P7 z( ]
   
. n) i% K8 d6 j8 \1 c! w    图1.1.1 UARTCTL寄存器
9 i0 L9 K7 S8 p+ d/ V" L8 J! N! |
7 d! O) z" C8 _$ Y8 i# C( c       W% A% a4 R/ W. Z
    图1.1.2 UARTCTL寄存器位定义3 z3 {7 M9 N1 v: W- P8 ^
    UARTIFLS是选择FIFO产生中断阈值的寄存器。可以使用该寄存器来定义FIFO的阈值,同时UARTRIS寄存器中的TXRIS和RXRIS位被触发。产生中断是基于一个发送操作超过阈值而不是等于阈值。也就是说FIFO中的数据超过规定的阈值之后才会产生中断。例如,如果接收的触发阈值设置为一般(8字节),那么在串口模块接收到第9个字节的时候才会产生中断。在复位之后,TXIFLSEL和RXIFLSEL位被配置,所以FIFOs在接收一半时触发中断。如图1.1.3所示为UARTRIS寄存器及其位定义。
/ Y# n3 i0 x; d8 F: c
2 n( k4 ^0 P  U8 ?* h1 M- ?. Y     ( n' T: H- i" `  c* K
    图1.1.3 UARTIFLS及其位定义
1 [3 z+ x  H2 U2 `' q! B! H    UARTIM是中断掩码置位/清零寄存器。读取该寄存器则获得当前中断的掩码值。进行置位时,对应的中断将被发送到中断控制器。清零操作则对应的中断不会被发送到中断控制器。如图1.1.4所示为UARTIM寄存器,如图1.1.5为其位定义。
) L4 B6 s9 K' t/ _) ]9 t0 Y
# R% `" v( I' G1 u( K# q& x    
0 A. q; M: {) K% f& V, U1 W- n5 X    图1.1.4 UARTIM寄存器
: D. e% K8 B) [9 ~3 g& B. e7 I9 c9 W: c' [. W& d0 c+ ?
   
6 O7 v- ~# |. s& L6 p6 j    图1.1.5 UARTIM寄存器位定义3 U; o4 ?2 P  S4 B/ e! K7 G. S7 U
    UARTRIS是源中断状态寄存器。可以读取到当前中断源。写操作无效,如图1.1.6所示为UARTRIS寄存器,如图1.1.7为其位定义。/ Q. V/ L6 R  H( r1 q7 }

9 x: \( Q( {5 \% l& d    
% Q6 }, h% i' F8 }5 k    图1.1.6 UARTRIS寄存器
3 {. Q8 P8 J/ ?7 N* E
: e1 H* i9 g6 G: i8 n  F  {    
  f4 q+ |' {0 y0 O7 D! K2 c    图1.1.7 UARTRIS寄存器位定义; s5 k' x' _; s9 a
    UARTMIS是中断掩码状态寄存器。读该寄存器获取对应中断的掩码值。写操作无效。如图1.1.8所示为UARTMIS寄存器,如图1.1.9为其位定义。5 v' ^& Q5 f! f5 N
) k2 m8 e) ^  d
   
: J0 c/ q, x5 i/ r1 H3 l! Q) a( h    图1.1.8 UARTMIS寄存器
  t4 w! B$ Z( P8 M" x0 g) d7 k0 d9 `8 [1 I- a# q
   
: T6 d5 h4 A8 L, Z( O/ Y    图1.1.9 UARTMIS寄存器位定义2 B$ d7 z) v: `( R: n: E1 p
    UARTICR是中断清零寄存器。置位则对应的中断被清除(清除中断源寄存器和中断掩码寄存器中对应的位),清零操作无效。如图1.2.0所示是为UARTICR寄存器,如图1.2.1为其位定义。
+ r! r0 Q* D# T
4 O* I2 D( V. N' L    
1 c2 K9 b# L& B$ e& t* W5 {    图1.2.0 UARTICR寄存器
# o$ |3 o1 w0 G2 J' b! G, W
/ ?& [5 W/ ^+ Q% O% M. C3 P     ! N3 a$ \6 E5 ?: ^% ]5 _
    图1.2.1 UARTICR寄存器位定义
' c# h! T+ W2 ~0 _    UARTDMACTL是DMA控制寄存器。如图1.2.2所示为UARTDMACTL寄存器及其位定义。5 H: q" Z8 v) H$ h
: o, r# P+ C4 k0 ^' D
   
) }! T: d1 h1 [- |) T    图1.2.2 UARTDMACTL寄存器及其位定义* o6 `" y6 n. R- P7 T  c. F
    1.2实验现象
4 K0 Q1 ^. x! J1 }    打开CC3200_Uart_Demo文件夹里的工程,该工程主要是把CC3200的UARTA0的波特率为115200bps,8位数据位,1个停止位,无奇偶校验位,如图1.2.3所示。; t0 g- z' M  J: I+ P

6 Q; F3 E: p, R2 {    
+ `9 o! \, c; P7 {9 W( ?0 [    图1.2.3 串口参数设置" a2 O9 W% ?" [) M
    当串口接收到数据后,把接收到的数据再通过串口发送出去,编译工程,打开Uniflash,把bin文件下载到CC3200板子上(具体步骤请参考GPIO小节)。- n5 ^$ ?9 B# S% S/ f' R6 V
    把“CH340G_VCC”和串口选择的第一个“RXD”和第二个“TXD”拨码开关均拨到“ON”。
( q% e" x+ z; R- _$ V- K. N& ?' u6 a    插上USB数据线接到电脑,打开串口助手,选择串口号,波特率设置为115200bps,按下板子的复位可见串口打印,如图1.2.4所示。
+ _' N  @" u5 w9 W' U4 B
6 O9 r. I6 l0 W7 ]    
6 e$ ^, w5 q. Q. x# p    图1.2.4 复位时串口打印8 ]& h* I3 r6 R0 q; p
    在发送框内输入疯壳的网址,点击发送,串口助手收到CC3200的回传,如图1.2.5所示。
& C6 K1 @) ^. I* L; R
' e3 B( R& r1 m3 w4 \- ]+ m     0 E' i! y& _- ?) ^. Q  }+ p
    图1.2.5 串口助手收到回传
$ c- n* d$ x5 W' B
' O2 \* v& J' L# I. r' Q  u. O" P0 _$ [. Y' o
( [* j* d3 ~% v* c
文件下载请点击: 【4】串口.pdf (2.72 MB, 下载次数: 0)
- S! w7 j' q' P, ^, z
  x3 ]7 H# y* A& f/ Y
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-23 04:45 , Processed in 0.093750 second(s), 27 queries , Gzip On.

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

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

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