|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
CC3200AI 实验教程 ——疯壳·开发板系列 GPIO ! }! }# O' k( Y
. k, P* w( m( q5 }/ j" h
7 [9 t2 O+ E5 [3 `$ O6 D# |6 A" P0 H* E/ M
8 o$ C6 |5 u' z+ I J1 a
GPIO全称General Purpose Input Output即通用的输入输出,是所有控制器里必备的资源,CC3200的所有数字引脚和部分模拟引脚均可作为通用的输入输出引脚(GPIO)使用,CC3200把GPIO分为三个组,分别是GPIOA0、GPIOA1、GPIOA2、GPIOA3,每一组GPIO有8个引脚,引脚分配如表1.0.1所示:! {3 u* ?( J A& ^
表1.0 .1CC3200引脚分配表
; g( K' a- Z, c7 x% l' @% k- h/ e- p+ }# a' V5 D9 o0 V# s
2 H# ]% p, t0 @4 X 表15 k. a* h5 @/ q% u
根据功能引脚配置的不同,CC3200最多可以有27个GPIO,且所有的GPIO引脚均具有中断功能,触发的方式支持电平触发和边沿触发(上升沿和下降沿),不仅如此,所有的GPIO都可以用于触发DMA、可作为唤醒源,GPIO引脚可编程:可配置为内部10uA上拉或下拉,驱动能力可调节为:2mA、4mA、6mA、8mA、10mA、12mA、14mA,同样也支持开漏模式。$ s0 c; p/ h: W& w+ w2 k" `8 I
对GPIO进行操作时,主要需要了解两大寄存器:GPIODATA 寄存器、GPIODIR寄存器。: Y. S" k. z# `: E8 d3 e7 z
GPIODATA寄存器是数据寄存器。在软件控制模式下,如果对应的引脚通过
/ ]* Z( f" F7 s. s* p GPIODIR寄存器配置为输出模式,这写到GPIODATA 寄存器中的值会被传到对应引脚输出。GPIODATA 寄存器有256个别名地址,偏移值为0x000到0x3ff。一个不同地址别名可以用来直接读/写任何8个信号位的组合。这个特性可以避免读-改-写和软件读的位掩码的时间消耗。% b" y5 y+ U7 M. a! Z; |! {
在该方案中,为了写GPIODATA寄存器,掩码中的对应位对应于总线中[9..2]
, J ~; H2 ]0 [1 W8 R5 j 位必须被置位。否则在进行写操作时,对应位的值不会被改变。同样,进行读操作时,也是对应总线中的[9..2],在读取对应位时,也必须置位,否则读取为 0。+ J5 v4 X" R7 U% R1 [; p
如果引脚配置为输出模式,则读取GPIODATA寄存器返回最后一次写入的值;如果配置为输入模式则返回对应引脚的值。所有位都可以通过复位清零。
" e k8 i0 f& ^6 H( J 如图1.0.1所示为GPIODATA寄存器。
$ p* J2 u0 B) v2 H, R0 z2 `) L% }; H2 `! N" W' C
9 C% k5 b! I. H# y8 z/ H+ r* Y) k
图1.0.1 GPIODATA寄存器
2 U* h( X, D3 M/ O, ` GPIODIR 寄存器是数据方向寄存器。在 GPIODIR 寄存器中设置一位将对应的引脚配置为输出;清除一位对应的引脚配置为输入。复位时多有位都清零,也就是说所有的 GPIO 引脚默认是输入。如图1.0.2所示为GPIODIR寄存器。
+ H) v" s3 X+ i$ t! t$ n$ z% o& |9 _/ i4 d; K2 }
3 M7 n/ V; j/ B) P) n& {7 u$ {
图1.0.2 GPIODIR寄存器
* i7 T# c% \3 z/ r 打开配套的代码例程,打开GPIO文件夹下的IAR工程,如图1.0.3所示为主函数。
' d1 ]8 {. B' v5 `" `& z6 F" O: n8 y9 i! H8 t% E
( O/ Q0 _8 X% l, X# p* g4 q y* a' H
图1.0.3 GPIO的主函数) f' _4 q! ~4 u- D( ~7 H( B( J( P5 ]
1.1Ti Pin Mux Tool工具
; ~" P! @; n- g& \+ J, A# \# u" @ PinMuxconfig()函数可由TI Pin Mux Tool工具生成,打开TI Pin Mux Tool工具,如图1.0.4所示,第一步,在Device内找到CC3200,第二步点击“Start”。/ n, H' ]) p$ ]
1 c; i3 b' y2 o: W) F
8 t1 q( @: c! Y8 x' t 图1.0.4 TI Pin Mux Tool
8 O/ L s( P5 m& j 如图1.0.5所示,第一步点击“GPIO”处的添加,默认是选取全部GPIO;第二步,把“GPIO Signals”前面的勾去掉,去除全选;第三步,选择GPIO_9、GPIO_10、GPIO_11(对应开发板上的三颗LED);驱动LED需要GPIO输出,第四步,把三个GPIO的“Output”勾选上。
& A6 {1 ]5 K% {: |' a: B+ z
( g c+ A O/ Z% o2 G9 w
5 D; P% f% E% p& [; m% u- c 图1.0.5 TI Pin Mux Tool配置步骤! d: o3 Y9 f; d6 \) E! K. P4 I
最终完成的如图1.0.6所示。在最右边的Generated Files处点击,把“pin_mux_config.c”和“pin_mux_config.h”下载下来添加到工程里即可。' |, V' b: `/ q- I) f
& d: W1 a! D H
' S1 ^0 B4 e; n4 q+ x3 ?
图1.0.6 配置完成示意图- o% R, z7 N; A3 X8 E5 A
生成好的端口配置函数如图1.0.7所示,该函数主要是对LED对应的端口开启时钟、设置方向等。. W; ^5 c* A- W" Y# {) y6 ]
. D$ [/ N) d" H2 D# R
* j% H6 d7 D1 k7 B
图1.0.7 端口配置函数7 ~ z3 u2 v$ f M% I+ v
配置好后,通过GPIO_IF_LedConfigure()函数把LED端口进行处理,即把各个LED的端口所对应的端口组,以及属于该组中的第几个IO提取出来。如图1.0.8所示。
2 s+ o3 O2 X5 \: P* a- z! V9 V
8 E0 E' I& P) v2 ~8 y1 m% ~$ l, s* s
- }- W/ f9 M q4 S/ S$ h 图1.0.8 端口处理
; D' J5 G3 J0 Z( `% H0 ?. D7 R 完成上面两步后,先关闭所有的LED,然后在一个死循环内执行“流水”部分,即按顺序以一定的时间间隔开闭LED,如图1.0.9为“流水”效果实现代码。+ o4 I1 ]# O3 H$ K2 j# K6 [
1 L. t& y3 @( T6 j
2 d' o( }0 E+ y4 V) w' R) E
图1.0.9“流水效果”实现代码
0 M( h' L: m7 ?* G7 u. ]( t 1.2代码下载0 B/ S! r- } i" A
编译程序,生成了相对应的bin文件,下载前,先插上仿真调试器Ti Stellaris,在把旁边的拨码开关的“RX”和“TX”拨到“ON”,把启动方式拨码选择为FLASH启动,即把SOP2拨到“ON”。# a& ?. @# O% B
打开下载工具Uniflash,点击快速启动向导中的“新目标配置”,在弹出的配置对话框中选择CC3x Serial(UART) InteRFace,然后点击OK。如图1.1.0所示。
# i% R, Y8 V+ c" B' B( M' j
* ^& X; A* V* p2 J; S# X5 N
% t' H' y6 f( r# g/ i
图1.1.0选择下载的芯片以及方式
4 m& Q3 M3 ]( ^, k 然后在COM Port中输入板子连接的串口号(根据自己的电脑来进行选择),
9 w$ R0 a5 E7 [ A3 w" @ 如图1.1.1所示。
4 Z* N1 g) E& i
7 D5 l5 \. K' u A1 O+ i) r
! {; Y: \. |& ?/ {4 i& Q5 \0 N 图1.1.1 串口号选择
2 ~" p$ V3 @0 P! r9 W5 l 初次使用板子时,先烧写Sevcie Pack,否则程序可能无法运行,如图1.1.2所示点击“Sevice Pack Programming”,选择之前安装的Sevicepack安装文件夹目录下的bin文件即可,如果之前已经向CC3200烧写过Sevice Pack的这一步可以忽略。* o0 ~$ I* r* w3 @
9 q9 X5 H# ]5 ^0 R, R
_: T6 p( a/ y$ ] 图1.1.2 SevicePcak的烧写 y! g4 K+ j& k
在左侧点击/sys/mcuimg.bin,然后在右侧 URL 中选择刚编译生成的bin文件,然后选中下方的Erase和Update。如图1.1.3所示。
/ y7 z" M" Z2 u1 z
5 J; x5 \8 b0 }. h# B: H
. {9 K! M l1 ]) C0 c3 c+ m
图1.1.3 选择下载的目标
7 H4 G. C9 Y: w7 x5 ` 然后点击“CC31xx/CC32xx Flash Setup and Control”,点击 Program 进行下载,如图1.1.4所示。3 P/ O; _0 T% V1 S! b4 t+ D
1 {3 r' X- {7 W5 B
" l6 q0 C. S: i
图1.1.4下载bin文件+ {* }5 h e" s- E1 h1 `
根据软件下方的提示,按下复位按键就可以看到下载的相关信息,如图1.1.5所示。* P) l8 }4 T6 w6 E, f2 Z" U1 y" D! p
8 G1 d4 F6 a% S% j, Z* a" Z* Y
3 p! f2 w% o. ^- Z) J
图1.1.5 bin文件下载中: N8 @7 f7 p3 ~2 A* _
下载完成如图1.1.6所示。$ M9 Y" w/ c6 B6 p' s. E
D7 W9 G) {% [5 i0 X7 G* q
( J+ `8 q0 j7 a- t1 z' p 图1.1.6 下载完成8 M# [9 }% i: a
1.3实验现象
' i+ M" f1 w% m. N+ m7 o& E; m 把下载前的改变的拨码开关拨回原处。再把拨码开关“D5”、“D6”和“D7”拨到“ON”,使IO口与LED建立连接关系,按下复位开关,可以看到三颗LED呈“流水”状闪烁,如图1.1.7所示为该实验现象。
: ^! j* v' q6 `5 }7 |( [0 p* [( T. T; ]' ]$ p
' e! [2 @3 e+ J1 x: Q, z: w N
图1.1.7 实验现象% n1 S ?+ y0 u* l: ]
# [) m& \2 R, N1 U
0 O: a" O+ ]* ~: r+ X; l9 I" A1 J) y; b) I
3 W6 i6 y4 r4 S4 P文件下载请点击:
【2】GPIO .pdf
(1000.6 KB, 下载次数: 0)
% x+ } @& i" B: D5 G0 Q
7 j: G* f5 D0 Q7 c( D& u9 J. {1 X- c) ^6 q$ {
4 \& j: ?9 \3 }" S3 y8 P9 M, X
. P- M. d9 Z0 L: `, A4 t
! |* s6 V3 a7 J" ~. p) ~1 G; y7 x$ i( E6 ?1 S2 [8 q) P7 P+ n6 N
& `, r9 X$ l& a |
|