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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
CC3200AI实验教程
——疯壳·开发板系列
串口
& W+ Y8 ^8 o' `  t/ Q; Z

& ?4 C# P. V. z* @7 k1 ^% V7 o
+ L8 d( Q4 L' |  l: W% N% G! {2 V& `9 u( O+ G4 e
    串行接口分为异步串行接口和同步串行接口两种。异步串行接口统称为通用异步收发器(UART)接口,同步串行接口有SPI和I2C等,同步串行接口除了包含数据线外,还包含时钟线。, b9 C- B  ]: T& J# V
    本次实验中我们使用的是UART,也就是异步串行通信接口。UART的相关标准规定了接口的机械特性、电气特性和功能特性等,UART的电气特性标准包括 RS-232C、RS-422、RS-423和RS-485等,其中RS-232C是最常用的串行通信标准。RS-232C是数据终端设备(DTE)和数据通信设备(DCE)之间串行二进制数据交换接口技术标准,其中DTE包括微机、微控制器和打印机等,DCE包括调制解调器MODEM、GSM模块和Wi-Fi模块灯。        4 M; Z' _6 n" x7 F' R7 U, [
    RS-232C机械特性规定使用25针D型连接器,后来简化为9针D型连接器。RS-232C的电气特性采用负逻辑:逻辑“1”的电平低于-3V,逻辑“0”的电平高于+3V,这个TTL的正逻辑(逻辑“1”表示高电平,逻辑“0”表示低电平)不同,因此通过RS-232C和TTL器件通信时必须进行电平转换。& f3 I/ U: O5 ?3 J4 p8 B
    目前微控制器的UART接口采用的是TTL正逻辑,和TTL器件连接不需要电平转换。和采用负逻辑的计算机相连接时需要进行电平转换(我们一般使用USB转串模块)。# g; {0 M6 C8 J$ c, ~
    CC3200包含两个可编程UART接口(UARTA0~1),主要特性如下:
9 F  N1 h0 v: s( N    a、可编程的波特率发生器,允许速度高达3Mbps;" a4 \* b- Y8 @7 _0 ~
    b、独立的16*8发送和接口FIFO,减轻CPU中断处理负载;& H0 X4 E! V/ [2 F! _
    c、可编程FIFO长度,包括提供传统双缓冲接口的单字节操作;
3 Y  P) \: l3 v+ |" ]7 [    d、FIFO触发阈值包括1/8、1/4、1/2、3/4和7/8;
, t7 y! l: U- h% h5 {3 k0 w" _/ j    e、标准的异步通信起始、停止和奇偶校验位。9 B; L4 C4 Y6 c& |+ m6 E! L
    CC3200的UART接口具有以下可编程串行接口特性:% O+ F' C( C. ^: h) b$ A
    a、可编程的5、6、7或8位数据;  ~  q- N( L5 K" g% s
    b、偶、奇或无校验生成/检测;
8 n: O7 Q+ g: G2 m* T4 l    c、1或2个停止位生成;& d/ v/ t5 b+ \4 f$ _
    d、支持RTS和CTS调制解调器握手;: d' V# q7 n! a- o" W6 A
    e、标准的FIFO阈值中断和传输结束中断。0 ^/ O2 I# ^+ j0 o7 w; U
    CC3200的UART支持DMA,使用DMA可实现高效传输,UART具有单独的DMA发送和接收通道。支持当FIFO中有数据的单个请求接收和可编程FIFO阈值的突发请求接收以及FIFO中有空间的单个请求发送和可编程FIFO阈值的突发请求发送。
0 b* w0 H4 D* ]% |5 V    1.1寄存器
! ?2 b+ o9 u! P, V" ~5 ^4 u    UARTDR为数据寄存器(也是FIFOs的接口)。% ~, x+ Y( Z% Y7 t3 W
    在发送数据时,如果FIFO使能了,则写入该寄存器的数据会发送到发送FIFO 中。如果FIFO关闭,数据会被存储在发送保持寄存器中(发送FIFO最低一个字)。写该寄存器意味着通过串口发送。
" c* b. c, f+ q; j* ~    在接收数据时,如果FIFO使能了,数据字节和4位状态位被发送到12位宽的接收FIFO中。如果FIFO关闭,数据字节和状态被存储在接收保持寄存器中(接收FIFO中的最低一个字)。可以通过读取该寄存器来获取接收数据。如图1.0.1所示为UARTDR寄存器,如图1.0.2为其位定义。3 O, J, f1 a9 k6 z

0 F# \4 X9 ]1 f# g5 \8 e     1 P# M. a+ [% |
    图1.0.1 UARTDR寄存器
: {2 j, q' N# K( X2 k
! ~; \" r; ], a6 M( g: \     ! ^/ d( T7 v  g4 _) B
    图1.0.2 UARTDR寄存器位定义8 H9 K3 \( C4 o6 g  [+ ?- e, f) \
    UARTRSR_UARTECR是接收状态寄存器/错误清除寄存器。除了UARTDR寄存器之外,接收的状态位也可以通过UARTRSR寄存器获取。如果从该寄存器读取状态信息,则状态信息对应与在读取UARTRSR寄存器之前的UARTDR的状态信息。当有溢出条件发生时,状态位中的溢出标志位会立刻被置位。UARTRSR寄存器不能被写。写任何值到寄存器UARTECR中将会清除帧、校验、打断和溢出错误。复位会清零所有的位。如图1.0.3所示为UARTRSR_UARTECR寄存器,如图1.0.4为其位定义。
! J5 `: L( n  p7 {* f
/ L7 D  ]3 V) F1 u    
) r5 Z& |7 q2 s( r7 ~    图1.0.3 UARTRSR_UARTECR寄存器
% p4 u* F( v* j2 x
" _* ?3 A9 P+ o3 A( b4 q: H% z8 E# I    
" e# O4 K# I0 r% M    图1.0.4 UARTRSR_UARTECR寄存器位定义
: X  F7 F. D5 K5 {- q    UARTFR为标志寄存器。在复位之后,TXFF、RXFF和BUSY标志位为0,TXFE 和RXFE位为1。RI和CTS位指示调制解调器的控制流和状态。这里需要注意的是,调制解调位只在UART1中有效,在UART0中是保留位。如图1.0.5所示为UARTFR,图1.0.6为其位定义。
) h+ Y; [8 M& z: q; O/ }5 e
. J( e0 Q8 {" k    
6 [9 _, S0 [' c( G  t- d! N: M; \) z    图1.0.5 UARTFR寄存器( b; v0 j. a5 f1 i! _
9 S+ i5 c' |- q0 p# d
   
% W. T9 O# y/ D. n! @/ k    图1.0.6 UARTFR寄存器位定义
$ R' [4 \4 Q7 o9 ?    UARTIBRD寄存器是波特率除数的整数部分。复位之后所有的位被清零。最小值为1(当UARTIBRD为0时),此时UARTFBRD寄存器无效。当改变UARTIBRD 寄存器时,只有在当前的字节传输完成之后才生效。波特率除数的任何改变都必须在写UARTLCRH寄存器之后。如图1.0.7所示为UARTIBRD寄存器。
% r# @7 d0 s; C% T
* x, c5 e: `5 P: c1 A* k4 t     : E9 K0 L& O( }0 t8 e$ o  I6 O
    图1.0.7 UARTIBRD寄存器
' f$ l% c0 e8 X1 v3 u# j, a4 W7 q& u    UARTFBRD寄存器是波特率除数的小数部分。复位之后所有的位被清零。当修改UARTFBRD寄存器的值时,只有在当前字节发送或者接收完成之后才会有效。波特率除数的任何改变都必须在写UARTLCRH寄存器之后。如图1.0.8所示为UARTFBRD寄存器。7 M% W0 Y0 d6 l3 r0 @, U( k" P! H( H
7 J0 `( x2 ~; G  Y  Y  ]: \2 v
    & j$ `7 u/ g. P) H/ T: I
    图1.0.8 UARTFBRD寄存器+ c8 ~( g4 o+ y' _9 w5 n
    UARTLCRH寄存器是线控制寄存器。该寄存器控制串口的数据长度、校验和停止位的选择。当更新波特率除数寄存器的时候,必须也要重写该寄存器。因为波特率除数寄存器的写选通信号和该寄存器是连接在一起的。如图1.0.9所示为UARTLCRH寄存器,图1.1.0为其位定义。6 _7 h0 o4 r2 J
$ f4 K" x$ n: e3 Q% l- r0 l
   
" c5 _! ?9 U' C, _* g    图1.0.9 UARTLCRH寄存器; V7 w9 s3 q4 F" E( Q

; }9 K4 T4 o! v1 E* c* t7 {* g4 O! u8 g$ T9 r6 N
   7 h7 y' ^% E% ~+ K
    图1.1.0 UARTLCRH寄存器位定义
2 C+ I* p0 c2 f. R2 ~7 I0 r& L    UARTCTL是控制寄存器。在复位之后,除了发送和接收使能位之外,其它位都被清零。UARTEN位用于使能UART模块。在配置串口模块时必须将该位清零。如果在串口进行发送或者接收的操作时关闭串口模块功能,则在完成当前发送或者接收操作之后才关闭。如图1.1.1所示为UARTCTL寄存器,如图1.1.2为其位定义。  b; o$ j' F- g: n* M/ g
    注意:在UART使能的状态下,UARTCTL寄存器不能被改变,否则结果是无法预测的。修改UARTCTL寄存器时建议按照下面的操作进行:
% Q% J  k* W: F- e7 `4 M; j" d, `# M    1、关闭UART;2 r# [- W' [4 }: y
    2、等待当前字节的发送或者接收操作完成;
6 E2 @5 [8 b, D# o  K; x  U6 `    3、通过清零UARTLCRH寄存器中的FEN位来清除发送FIFO;
: N! Q' n) ?* _( o: u    4、重新写控制寄存器;
$ `3 b5 h$ r0 j0 N' D, T    5、使能UART模块。: j9 d( s4 h8 G
4 w& q' [% Q- g. v. v
   0 M3 U; }9 G4 @! T( J! u7 d; |& W
    图1.1.1 UARTCTL寄存器
0 E( O* K  o- {; h1 H/ g
3 R# D1 v9 z- `# }     % _- C3 W3 i: I( c3 k) J
    图1.1.2 UARTCTL寄存器位定义$ P- L& O; Y% V0 r3 B. Q
    UARTIFLS是选择FIFO产生中断阈值的寄存器。可以使用该寄存器来定义FIFO的阈值,同时UARTRIS寄存器中的TXRIS和RXRIS位被触发。产生中断是基于一个发送操作超过阈值而不是等于阈值。也就是说FIFO中的数据超过规定的阈值之后才会产生中断。例如,如果接收的触发阈值设置为一般(8字节),那么在串口模块接收到第9个字节的时候才会产生中断。在复位之后,TXIFLSEL和RXIFLSEL位被配置,所以FIFOs在接收一半时触发中断。如图1.1.3所示为UARTRIS寄存器及其位定义。3 Q; ?, F0 v  g% E0 [

" b' @8 L: ?' `; i# _2 N3 B: h! A     ( p8 t# b) |6 e6 J( a4 ?
    图1.1.3 UARTIFLS及其位定义+ N. B8 D/ w7 Y, l" L( ]$ w% D
    UARTIM是中断掩码置位/清零寄存器。读取该寄存器则获得当前中断的掩码值。进行置位时,对应的中断将被发送到中断控制器。清零操作则对应的中断不会被发送到中断控制器。如图1.1.4所示为UARTIM寄存器,如图1.1.5为其位定义。
3 o# i. Y$ q" M$ F, r) i9 R% b' Y8 h3 _
0 o3 V" g/ Q) l. M4 Q1 @    
6 t9 n0 P& d6 q1 g" T5 z# d    图1.1.4 UARTIM寄存器
3 v% {- E( @- W' L) U3 b& [' w5 N1 w
   
  V. b( x$ q) G8 U5 i9 i/ X    图1.1.5 UARTIM寄存器位定义& N! z. o, t! |$ K% i0 `: L
    UARTRIS是源中断状态寄存器。可以读取到当前中断源。写操作无效,如图1.1.6所示为UARTRIS寄存器,如图1.1.7为其位定义。. W1 P9 m! a1 Z7 ]7 m
, D  G! q, E; ^
   
  k& ?3 t) X. }% E3 D) [9 L' c    图1.1.6 UARTRIS寄存器
# k, Z7 s, _/ n( s% \1 x$ D1 _% T$ F2 t
     ~3 `0 B- W3 b# I" @. |: Y
    图1.1.7 UARTRIS寄存器位定义
8 L3 Y. X8 Y- h) m  u4 |    UARTMIS是中断掩码状态寄存器。读该寄存器获取对应中断的掩码值。写操作无效。如图1.1.8所示为UARTMIS寄存器,如图1.1.9为其位定义。: G! Y6 f  w5 W% w  S0 y2 k, n! Y. K

/ @; y& d' H6 N9 Z) M! I     9 W4 G  J$ g* _2 G7 k+ i
    图1.1.8 UARTMIS寄存器
7 A& V3 _0 E) R
4 P% j- \# P+ ]% w8 b- s    
+ x$ t- h; g) o8 s, ?' X    图1.1.9 UARTMIS寄存器位定义
8 L1 c! y% ~! C7 t) N( v( v    UARTICR是中断清零寄存器。置位则对应的中断被清除(清除中断源寄存器和中断掩码寄存器中对应的位),清零操作无效。如图1.2.0所示是为UARTICR寄存器,如图1.2.1为其位定义。" b. ~+ O1 A# R( l2 g) y/ p

" w& a9 Y& a: ?) z, D3 `5 k- t0 [' z     8 A, t6 ~9 o, }' Q& G
    图1.2.0 UARTICR寄存器' g  k7 e9 b3 d2 P9 k

9 o4 k' h' @+ b2 `# l    
7 T2 H+ s% W) M/ G. [    图1.2.1 UARTICR寄存器位定义' }  m3 |! x( r  Q. V9 F
    UARTDMACTL是DMA控制寄存器。如图1.2.2所示为UARTDMACTL寄存器及其位定义。1 a3 W( e$ W! @) @* K1 r; _5 ^* y

  i( P. q* {! s) A    
! f( x, F+ d4 e- g    图1.2.2 UARTDMACTL寄存器及其位定义
/ F# ~: J/ b$ g1 @    1.2实验现象1 R; R! F5 d1 l8 X# A/ @
    打开CC3200_Uart_Demo文件夹里的工程,该工程主要是把CC3200的UARTA0的波特率为115200bps,8位数据位,1个停止位,无奇偶校验位,如图1.2.3所示。
. V# K3 z# i) n5 r" N$ h: Q
9 E5 X3 z. [8 h3 L% n4 ^$ m     9 O% T5 e  A/ O5 Q. N' u; n2 R$ _5 M
    图1.2.3 串口参数设置
) d" p( Q$ u- G) }$ `  r+ x    当串口接收到数据后,把接收到的数据再通过串口发送出去,编译工程,打开Uniflash,把bin文件下载到CC3200板子上(具体步骤请参考GPIO小节)。
4 V( f6 u3 n  \( Y( G/ {& G    把“CH340G_VCC”和串口选择的第一个“RXD”和第二个“TXD”拨码开关均拨到“ON”。4 W9 U2 U9 {, u/ E5 |' R, H& s
    插上USB数据线接到电脑,打开串口助手,选择串口号,波特率设置为115200bps,按下板子的复位可见串口打印,如图1.2.4所示。8 ?9 U, N5 @% \1 M
1 d0 \% b' h; U2 Y. v% f; J
   
) j4 R( `% v+ c, u    图1.2.4 复位时串口打印
8 z2 L6 [4 h4 ?5 U& h    在发送框内输入疯壳的网址,点击发送,串口助手收到CC3200的回传,如图1.2.5所示。
! ~0 x- d: s& d: L
; ]/ h0 p/ x8 Q, |, `8 A    
$ y+ L6 Q! m; |: ^# |0 z    图1.2.5 串口助手收到回传5 v. F1 i0 x& r+ g% H; R0 W
" {; Y! n0 _8 B: ?6 Z" ]+ O6 P

( Y  u9 ?8 A# n( m$ ^, ?
4 Q: ^1 J3 A" m; q6 ~3 [# \文件下载请点击: 【4】串口.pdf (2.72 MB, 下载次数: 0) , d! M  }/ A% {
! e4 O: q* b, L3 _. m
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-8 01:57 , Processed in 0.140625 second(s), 27 queries , Gzip On.

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

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

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