|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
CC3200AI 实验教程 ——疯壳·开发板系列 GPIO
, M4 W3 H: E$ K! R8 o- a+ H7 v5 }6 v0 v1 @. J. C" b
# q6 H1 ~4 [ w6 ~& g5 |' Z
! b; C/ {- e0 K2 F9 e3 R& |) s! ]
# @3 n# l' {' ]# z GPIO全称General Purpose Input Output即通用的输入输出,是所有控制器里必备的资源,CC3200的所有数字引脚和部分模拟引脚均可作为通用的输入输出引脚(GPIO)使用,CC3200把GPIO分为三个组,分别是GPIOA0、GPIOA1、GPIOA2、GPIOA3,每一组GPIO有8个引脚,引脚分配如表1.0.1所示:" i2 L( h# R; s8 I2 L& \# v
表1.0 .1CC3200引脚分配表
7 K6 j0 j) b' Y# n
) r4 |$ P' F" E1 {, D
7 R: \+ [& n% D' j# e
表15 \+ N% I. s5 N& Z
根据功能引脚配置的不同,CC3200最多可以有27个GPIO,且所有的GPIO引脚均具有中断功能,触发的方式支持电平触发和边沿触发(上升沿和下降沿),不仅如此,所有的GPIO都可以用于触发DMA、可作为唤醒源,GPIO引脚可编程:可配置为内部10uA上拉或下拉,驱动能力可调节为:2mA、4mA、6mA、8mA、10mA、12mA、14mA,同样也支持开漏模式。% z7 g, v7 [6 t( \$ H, T, p
对GPIO进行操作时,主要需要了解两大寄存器:GPIODATA 寄存器、GPIODIR寄存器。
' }# b6 \# r* ?+ h# K7 ^ GPIODATA寄存器是数据寄存器。在软件控制模式下,如果对应的引脚通过
* e0 Q6 t, Z) {: _4 l' d$ @ GPIODIR寄存器配置为输出模式,这写到GPIODATA 寄存器中的值会被传到对应引脚输出。GPIODATA 寄存器有256个别名地址,偏移值为0x000到0x3ff。一个不同地址别名可以用来直接读/写任何8个信号位的组合。这个特性可以避免读-改-写和软件读的位掩码的时间消耗。
$ }1 L/ w1 `. Q; V# H 在该方案中,为了写GPIODATA寄存器,掩码中的对应位对应于总线中[9..2]
- f d$ d+ i( b( `' L% R! S, C p( x 位必须被置位。否则在进行写操作时,对应位的值不会被改变。同样,进行读操作时,也是对应总线中的[9..2],在读取对应位时,也必须置位,否则读取为 0。
, Y0 J" k! ~& G, L' F 如果引脚配置为输出模式,则读取GPIODATA寄存器返回最后一次写入的值;如果配置为输入模式则返回对应引脚的值。所有位都可以通过复位清零。' }, [: a( G' K- O0 ?9 b; k
如图1.0.1所示为GPIODATA寄存器。
, i1 O2 b; ~+ _# |/ m+ w# t e3 K9 f
$ a; T! I0 b* Z' J: I- k 图1.0.1 GPIODATA寄存器
3 p5 }/ J* |; m" J5 d- X GPIODIR 寄存器是数据方向寄存器。在 GPIODIR 寄存器中设置一位将对应的引脚配置为输出;清除一位对应的引脚配置为输入。复位时多有位都清零,也就是说所有的 GPIO 引脚默认是输入。如图1.0.2所示为GPIODIR寄存器。) l/ A6 T1 h9 m2 _0 m' }- @2 |2 L
6 n) b+ I5 B2 Y1 U0 [
( T5 a: r3 L. r2 G 图1.0.2 GPIODIR寄存器7 D/ H. i+ m+ h8 q2 Z( ?7 K3 X- }
打开配套的代码例程,打开GPIO文件夹下的IAR工程,如图1.0.3所示为主函数。4 P* s. d7 O$ S; z4 S; ^! }
]$ V. d' Q E. o/ N9 u
1 m* T2 ~. [8 Z& v8 e/ T 图1.0.3 GPIO的主函数
* `, W1 k, A0 d/ H 1.1Ti Pin Mux Tool工具$ ~+ _$ j% k2 U- |; Y
PinMuxconfig()函数可由TI Pin Mux Tool工具生成,打开TI Pin Mux Tool工具,如图1.0.4所示,第一步,在Device内找到CC3200,第二步点击“Start”。
/ ^$ j$ h& D3 J2 l! _% s/ y0 d( y5 g% l
: l; {% m( z& v O. H. u0 ` 图1.0.4 TI Pin Mux Tool
% j- {. X4 d. t* E g5 V 如图1.0.5所示,第一步点击“GPIO”处的添加,默认是选取全部GPIO;第二步,把“GPIO Signals”前面的勾去掉,去除全选;第三步,选择GPIO_9、GPIO_10、GPIO_11(对应开发板上的三颗LED);驱动LED需要GPIO输出,第四步,把三个GPIO的“Output”勾选上。8 E' T* ~. r4 g5 D, h
% c7 [4 l0 S& f" j3 k" @* d1 W& y
* U! d$ y9 _: @0 `: R
图1.0.5 TI Pin Mux Tool配置步骤
. F P) E5 I( F% ]7 x$ _0 B- J 最终完成的如图1.0.6所示。在最右边的Generated Files处点击,把“pin_mux_config.c”和“pin_mux_config.h”下载下来添加到工程里即可。3 N6 p5 { k& t- [3 [% d# N5 K
y" c5 r5 M1 H* c0 z& W
& Y# n* Q* v0 s7 m" ~6 x6 \ 图1.0.6 配置完成示意图$ O) z: D, m7 E4 B! C% C: u
生成好的端口配置函数如图1.0.7所示,该函数主要是对LED对应的端口开启时钟、设置方向等。( ?7 s4 ?' Z" u7 B! C
- F( m" ` z- J* p% b
F5 o) J+ o( u) A6 ~7 Q# C
图1.0.7 端口配置函数
( e# y' Z3 D! Y3 U9 y" i 配置好后,通过GPIO_IF_LedConfigure()函数把LED端口进行处理,即把各个LED的端口所对应的端口组,以及属于该组中的第几个IO提取出来。如图1.0.8所示。5 B% E0 u+ v1 x" P' w
( I1 S/ A1 s4 H' N9 b
% P% O" y9 Z, Q2 y! C
图1.0.8 端口处理/ N, p/ ^( p. j! Y4 t C1 |5 V
完成上面两步后,先关闭所有的LED,然后在一个死循环内执行“流水”部分,即按顺序以一定的时间间隔开闭LED,如图1.0.9为“流水”效果实现代码。
; ?3 h- m8 `- a% s. i# D0 z& B* c- b/ A
F& z3 ?* y8 }# O/ ~" c 图1.0.9“流水效果”实现代码! }6 i Y& s! E3 w
1.2代码下载* p6 L3 x, a; b( n: ^. D
编译程序,生成了相对应的bin文件,下载前,先插上仿真调试器Ti Stellaris,在把旁边的拨码开关的“RX”和“TX”拨到“ON”,把启动方式拨码选择为FLASH启动,即把SOP2拨到“ON”。
7 R; u% q2 o* Q4 t% G 打开下载工具Uniflash,点击快速启动向导中的“新目标配置”,在弹出的配置对话框中选择CC3x Serial(UART) InteRFace,然后点击OK。如图1.1.0所示。* S; O% |. s. ]2 Q
0 X+ u1 T6 C; l
* W: e& d2 k. a9 w, |# x 图1.1.0选择下载的芯片以及方式
; _/ O8 ^3 i2 Z0 N 然后在COM Port中输入板子连接的串口号(根据自己的电脑来进行选择),
# D/ p/ t$ D' L7 r) F0 C) ~ 如图1.1.1所示。
6 j1 o) i' h3 ~+ |( P/ b
+ v+ }( e4 e% `8 v
# c8 c* q e: z! {! ]! O8 Z0 r0 G
图1.1.1 串口号选择
# P/ f. ?. q2 Q 初次使用板子时,先烧写Sevcie Pack,否则程序可能无法运行,如图1.1.2所示点击“Sevice Pack Programming”,选择之前安装的Sevicepack安装文件夹目录下的bin文件即可,如果之前已经向CC3200烧写过Sevice Pack的这一步可以忽略。0 e' e* @( c3 V* j7 [4 p
/ X# U3 B. }% Y1 g
8 U+ I4 ~0 C) K; }8 ~2 C1 B* `& a
图1.1.2 SevicePcak的烧写9 @& }9 Z% O1 l% U6 Z( r
在左侧点击/sys/mcuimg.bin,然后在右侧 URL 中选择刚编译生成的bin文件,然后选中下方的Erase和Update。如图1.1.3所示。
6 Y- Z/ Z+ j* z% v0 v4 |3 N! l3 x ~, `% n/ Z9 t
% H% g! j0 Q- e9 v. x5 j* T$ J) j 图1.1.3 选择下载的目标/ G" d) K3 u9 i2 o7 A- Q
然后点击“CC31xx/CC32xx Flash Setup and Control”,点击 Program 进行下载,如图1.1.4所示。7 H7 Z1 S3 n; y
- `4 R8 {, a5 M) C# S8 C
. _, t: b3 R& X& D0 g8 t
图1.1.4下载bin文件/ p' c- V+ b* k5 n& k# o
根据软件下方的提示,按下复位按键就可以看到下载的相关信息,如图1.1.5所示。
3 }! M& \7 p5 E" J, `+ ~% _3 N/ N
' V* Z/ q9 B( I* n# x" }( C
L e! ~/ i( ?+ u9 M6 ~! W 图1.1.5 bin文件下载中- X+ u2 J$ t! _- Y( m# d7 }: d4 v. e
下载完成如图1.1.6所示。! P6 ^- J1 ~1 }$ z! O* I4 Z
( M7 x# P2 Q& c. N1 g1 F5 b
l/ o/ D C) H/ { j5 Y2 D6 j 图1.1.6 下载完成
4 S2 @) Y. X) y/ ~3 [1 N4 @ 1.3实验现象! n9 Y2 X8 E) s7 I! Z/ T0 F4 I# z
把下载前的改变的拨码开关拨回原处。再把拨码开关“D5”、“D6”和“D7”拨到“ON”,使IO口与LED建立连接关系,按下复位开关,可以看到三颗LED呈“流水”状闪烁,如图1.1.7所示为该实验现象。
" b2 L3 s! r+ L4 @* h. Z M, m! K% E. W% i8 D
9 p* W" F' t0 @ 图1.1.7 实验现象# B* U' K0 @: q
( H# u/ |$ t3 h0 ~6 i
3 ]. I0 B$ P# z- p
, L9 r( o1 j! T! Q2 Q2 j4 k( B& w+ |) Z0 ]
文件下载请点击:
【2】GPIO .pdf
(1000.6 KB, 下载次数: 0)
5 `1 X {, ]! \1 U5 {# F* k. e: u5 |* _9 u" ^
" K/ t) E$ F$ D0 s! X9 I7 N& S" ?
! b, D4 `- v/ r; Y- \
3 L$ E" Q( X) Q( e/ {
& `( O1 |* B! `' h6 }; n& f" ?& k8 Z! v) ~4 N1 a+ B& ^/ p1 F
! A0 d) v* u1 b& w, m5 E: @- E* P |
|