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

【开发教程4】疯壳·AI语音人脸识别-GPIO

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
CC3200AI 实验教程
——疯壳·开发板系列
GPIO
) I& Y0 P! [! N; o2 l' W, H& ^) w4 k' v
3 o/ Y% F* \9 J% f( \! J) N. K6 l

' D. W, K  d) V( B$ }0 ]% ^0 a2 y! {) r: b/ @8 w4 Y5 y# _

) z7 }: c. {& J& W# J- U    GPIO全称General Purpose Input Output即通用的输入输出,是所有控制器里必备的资源,CC3200的所有数字引脚和部分模拟引脚均可作为通用的输入输出引脚(GPIO)使用,CC3200把GPIO分为三个组,分别是GPIOA0、GPIOA1、GPIOA2、GPIOA3,每一组GPIO有8个引脚,引脚分配如表1.0.1所示:
* T5 o0 Q/ q# n( Y$ |    表1.0 .1CC3200引脚分配表 3 h* `7 x. v  |( B

, o) g8 C! p6 b# T" ^  u     & B* x+ [- N$ l% z, ]
    表10 q. g$ T( C7 `/ Z6 h: F/ }, A4 c
    根据功能引脚配置的不同,CC3200最多可以有27个GPIO,且所有的GPIO引脚均具有中断功能,触发的方式支持电平触发和边沿触发(上升沿和下降沿),不仅如此,所有的GPIO都可以用于触发DMA、可作为唤醒源,GPIO引脚可编程:可配置为内部10uA上拉或下拉,驱动能力可调节为:2mA、4mA、6mA、8mA、10mA、12mA、14mA,同样也支持开漏模式。( F* W3 w( g, S% s, _) |
    对GPIO进行操作时,主要需要了解两大寄存器:GPIODATA 寄存器、GPIODIR寄存器。
6 \% f' `8 ]* v$ d7 @/ U  r    GPIODATA寄存器是数据寄存器。在软件控制模式下,如果对应的引脚通过& e: b! x8 W7 ^5 ~9 e
    GPIODIR寄存器配置为输出模式,这写到GPIODATA 寄存器中的值会被传到对应引脚输出。GPIODATA 寄存器有256个别名地址,偏移值为0x000到0x3ff。一个不同地址别名可以用来直接读/写任何8个信号位的组合。这个特性可以避免读-改-写和软件读的位掩码的时间消耗。
" t4 k* b( W5 y' X. b    在该方案中,为了写GPIODATA寄存器,掩码中的对应位对应于总线中[9..2]6 K9 B6 a8 W% T" j8 V2 k
    位必须被置位。否则在进行写操作时,对应位的值不会被改变。同样,进行读操作时,也是对应总线中的[9..2],在读取对应位时,也必须置位,否则读取为 0。
& b6 w% o3 f5 d  `& f    如果引脚配置为输出模式,则读取GPIODATA寄存器返回最后一次写入的值;如果配置为输入模式则返回对应引脚的值。所有位都可以通过复位清零。% ~8 g3 T: w; Z. i
    如图1.0.1所示为GPIODATA寄存器。
! [1 v0 ?, O, P& n% x; L
$ Y) X6 s) M/ e$ P2 j( p1 y       P  l8 z, f. Q4 C; b; I3 q. V
    图1.0.1 GPIODATA寄存器
4 b# N& E  {7 e- A0 e    GPIODIR 寄存器是数据方向寄存器。在 GPIODIR 寄存器中设置一位将对应的引脚配置为输出;清除一位对应的引脚配置为输入。复位时多有位都清零,也就是说所有的 GPIO 引脚默认是输入。如图1.0.2所示为GPIODIR寄存器。
+ `) q6 R% H5 a" K6 Z% {# x7 G0 d; c' y) k" {2 e$ }4 }- t
   
  d* p! ^; J+ f; x2 {7 C    图1.0.2 GPIODIR寄存器0 S) d9 ]0 q# N& K
    打开配套的代码例程,打开GPIO文件夹下的IAR工程,如图1.0.3所示为主函数。* D- L( I$ z/ |7 d* j

5 q1 x/ t( O" [) F; f! M
& e0 T8 b- C1 y1 I# H( g: h( c    图1.0.3 GPIO的主函数4 b, }# ]% Z2 ]& b' ]
    1.1Ti Pin Mux Tool工具
" Q! p+ I+ D/ `    PinMuxconfig()函数可由TI Pin Mux Tool工具生成,打开TI Pin Mux Tool工具,如图1.0.4所示,第一步,在Device内找到CC3200,第二步点击“Start”。4 K3 {' l1 i8 M7 ?# M

( H3 ?6 ~5 W' R& ]  _, J6 p' Q9 p* `) N5 R9 }% u9 `1 j8 N8 ]
    图1.0.4 TI Pin Mux Tool
; u" z6 l3 H$ X) n7 r    如图1.0.5所示,第一步点击“GPIO”处的添加,默认是选取全部GPIO;第二步,把“GPIO Signals”前面的勾去掉,去除全选;第三步,选择GPIO_9、GPIO_10、GPIO_11(对应开发板上的三颗LED);驱动LED需要GPIO输出,第四步,把三个GPIO的“Output”勾选上。5 ?! {* M7 P- l+ L

: q# B# x, `! E: f5 c* K- \9 J    * _( C- ?3 D( Q- R6 z4 W
    图1.0.5 TI Pin Mux Tool配置步骤
: N- o- c3 G% [& ]" b: r* P    最终完成的如图1.0.6所示。在最右边的Generated Files处点击,把“pin_mux_config.c”和“pin_mux_config.h”下载下来添加到工程里即可。/ l- I  Q1 E5 @# k1 |. h* ?( D+ @

! w: i7 P+ i5 G    
3 E0 }2 M: I0 c5 `( X) \0 Y    图1.0.6 配置完成示意图
1 ~# h/ O/ ?7 C3 h3 E- G    生成好的端口配置函数如图1.0.7所示,该函数主要是对LED对应的端口开启时钟、设置方向等。
1 D1 K! R/ a, \9 e1 T1 U1 \: T1 |) a$ D
    * k( D. y. i& {+ u* q( S) c
    图1.0.7 端口配置函数- E3 ]2 ~+ B  j+ ~
    配置好后,通过GPIO_IF_LedConfigure()函数把LED端口进行处理,即把各个LED的端口所对应的端口组,以及属于该组中的第几个IO提取出来。如图1.0.8所示。
2 R- R- t3 g; `* T! C5 b7 X
% l9 T, A% n' J/ E- a+ x    
4 O% k% `. {0 n    图1.0.8 端口处理
1 @2 D+ D( C" [2 x    完成上面两步后,先关闭所有的LED,然后在一个死循环内执行“流水”部分,即按顺序以一定的时间间隔开闭LED,如图1.0.9为“流水”效果实现代码。4 H9 l4 g8 m1 V) x- s! Z, O

  `+ l* H- B0 |/ Q    9 C$ F, I5 T' u  R  t$ f2 ?3 y
    图1.0.9“流水效果”实现代码, }. N8 z  ]! M3 H; N4 B7 n; Q
    1.2代码下载" t! B! ^1 ^& r& f
    编译程序,生成了相对应的bin文件,下载前,先插上仿真调试器Ti Stellaris,在把旁边的拨码开关的“RX”和“TX”拨到“ON”,把启动方式拨码选择为FLASH启动,即把SOP2拨到“ON”。
0 W8 Z  d# [" {; ^7 N    打开下载工具Uniflash,点击快速启动向导中的“新目标配置”,在弹出的配置对话框中选择CC3x Serial(UART) InteRFace,然后点击OK。如图1.1.0所示。
0 ?: d; _" x3 B) j" a7 `( d" U
& d. Y5 R. V9 r4 V0 k    ; p5 a, }  c2 R# z/ g8 f
    图1.1.0选择下载的芯片以及方式
/ _6 w% B: H2 a- N* R. W    然后在COM Port中输入板子连接的串口号(根据自己的电脑来进行选择),
8 d0 s& m2 w; w2 u: |5 c8 u    如图1.1.1所示。5 y4 s' w3 Z/ S. `: B
4 L: Z0 t0 O8 L$ K. q" O+ l6 \6 h7 _
  
. I: z4 s* a# B/ F" Z    图1.1.1 串口号选择
; \2 ^5 h# l8 m6 m0 v9 l: m    初次使用板子时,先烧写Sevcie Pack,否则程序可能无法运行,如图1.1.2所示点击“Sevice Pack Programming”,选择之前安装的Sevicepack安装文件夹目录下的bin文件即可,如果之前已经向CC3200烧写过Sevice Pack的这一步可以忽略。
3 r# M. Z4 A; x0 p- ]- F9 M
2 l, U3 T& v- G" o    0 \6 n; }- N+ L
    图1.1.2 SevicePcak的烧写* q' V% z" N4 ]
    在左侧点击/sys/mcuimg.bin,然后在右侧 URL 中选择刚编译生成的bin文件,然后选中下方的Erase和Update。如图1.1.3所示。5 x. T$ G& J7 e+ K
/ `! y4 z& l: F- o2 q5 ^  f2 v: J
     
% l9 F4 R0 L2 e    图1.1.3 选择下载的目标
, Y7 ^2 H+ q# h( \* w$ n* }' w    然后点击“CC31xx/CC32xx Flash Setup and Control”,点击 Program 进行下载,如图1.1.4所示。
5 l3 K" f9 W9 H$ [/ \! N+ x' i5 @) b; L' h* S
    / t% q* ]- o2 q  V8 b
    图1.1.4下载bin文件+ a  |/ y5 T- B7 N. w5 m+ c
    根据软件下方的提示,按下复位按键就可以看到下载的相关信息,如图1.1.5所示。
$ E' |# A" h3 j' h: M; F+ T# r/ m2 v) g1 a( U; S4 Y
   
2 q1 T( d( N) e    图1.1.5 bin文件下载中
3 m: u+ V4 p' `# w4 O    下载完成如图1.1.6所示。6 l, B: E6 H0 o9 i

- Y+ h! H0 E5 R+ S- E& A, b9 F    
+ P' f3 h  o8 J3 m5 ~0 z8 P% X    图1.1.6 下载完成# O3 v, G8 B* v9 g; |: j
    1.3实验现象
. r8 X# Y$ U4 G, n! D, }    把下载前的改变的拨码开关拨回原处。再把拨码开关“D5”、“D6”和“D7”拨到“ON”,使IO口与LED建立连接关系,按下复位开关,可以看到三颗LED呈“流水”状闪烁,如图1.1.7所示为该实验现象。
$ E# D  h$ c8 q5 b" Q! G( T1 r3 X) g( Y0 k' b4 E$ L7 j
   
; R6 R9 j# i* R4 z- B    图1.1.7 实验现象% v) u: w  L& P: [6 T
3 E% N2 {' p3 _! `5 _1 {# K, v

; s. p% X" K3 K- y, K& _4 Q$ q5 z6 O/ t/ N. ?. T! v4 G

9 F7 ]8 f* z+ R; l/ d文件下载请点击: 【2】GPIO .pdf (1000.6 KB, 下载次数: 0)
) d" `0 L) W/ j7 J. ^. ?; j! H& n! _
) @" c- Z! T9 {4 }
4 d! X. n1 W- V1 [% N0 \
9 e+ x5 N8 H+ i2 T5 R& X9 ^8 T) ^& m5 P; \# I

) w. e+ m; ?: Q; ]8 m8 y, o1 ?& r. h; a) G! C  y

1 u( y) J* I  S( T; A
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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