本帖最后由 3guoyangyang7 于 2016-10-18 22:19 编辑
最近写的几篇文章反馈比较少,看来大家最近的热度不高啊,都被ESP32吸去了眼球,小狂写的那个叫相当没劲啊,不过没有关系,我相信肯定有小伙伴会用到这个东西的,所以,小狂会慢慢的、耐心的把所有关于CC3200的相关文章写完的,从这篇开始,可能就会wifi跟M4外设交替来写,因为M4的外设简单点,中间可以不那么累,真心写一篇帖子特别累,小狂的风格一直都是要么不发,发就只发精品,精品的代价也就是耗时,所以特别希望看过的小伙伴们留下足迹,满足小小的成就感,让我觉得有用。
一、简单介绍
这里作为CC3200 M4核的第一篇,就简单介绍一下,CC3200是一个双核的芯片,想必大家都已经知道了,网络部分我们也在前面介绍了一部分,这里直接就介绍M4的东西,首先上个外设图
M4的核工作在80Mhz,说实话,这个频率也就跟M3差不多,里边有256KB的RAM,不过这个RAM是和网络部分共享的,所以,实际可以使用的也就210多点。没有内置的flash,只能使用外部的SPI flash,我感觉这个不稀奇,为了降低价格,大部分的iot芯片用的都是外置Flash,最大应该可以支持到128Mb吧,参考的芯片如下图所示
只有27个多余的IO,所以这个东西,我感觉也就做一个从机,要是想做主机的话,对功能不太多的应用,一般也没啥问题,ti比较人性化的是给出了最佳的IO匹配组合供用户参考,贴出如下,当时小狂算计了一下,用他给的应该算是最优解了,就看符不符合应用了。
好了介绍就介绍到这了,直接进入我们今天的正题,使用GPIO。
二、GPIO使用指南
一句话怎么说来着,软件工程师学习一门新的语言第一个程序是“Hello world”,那一个数字电路工程师的使用一块板子的第一个应用是让一个灯闪烁,其实说的也就是IO的应用,一块芯片中最多的资源肯定就是IO。所以重中之重也就是IO的使用。
CC3200,总共有4组IO(Port0,Port1,Port2,Port3),共计32个输入输出IO,但是除去下载接口,SOP模式选择,以及天线这些固定的引脚,可用的也就只有27个。
接下来我们主要实现IO的电平翻转,输入,输出,这几个功能,使用库函数来实现,就不说寄存器了,太麻烦,如果有兴趣的小伙伴可以参考《CC3200 Technical Reference Manual》里边有你想要的一切,我们用库函数,主要参考《CC3200 Peripheral Driver Library User's Guide》
1、引脚配置
众所周知,对于有复用的芯片来说,引脚在使用前必须要配置一下,在第一节小狂就已经把怎么配置引脚这一块说明了,采用更方便的工具
,如果忘了的小伙伴可以去复习一下,哈哈,这里就不作说明了,我们就配置开发板自带的三个灯。
代码如下图所示
2、实现输出
在做之前,我们先分析一下IO的结构,先看一下GPIO的寄存器基地址。
由上图可以看到我们的GPIO分为4个组,但是在引脚名称里,却不是这么分的,都是按照下面的形式来的。
也就是说从GPIO0-GPIO31,具体的就是0-7是A0,8-15是A1,16-23是A2,24-31是A3,一开始上来可能都有点蒙,一开始我都被这玩意整迷糊了,哎,没办法。
我们要做的第一件事,就是通过输入的IO引脚号,获得是第几组的第几个IO以便用来控制。实现的代码如下图所示
这个函数的主要作用就是通过输入的引脚号,返回时第几组的,第几个IO,第一句话就是用每一位代表相应的引脚号。其中
下面的函数用来实现IO的输出
①、调用刚才的分组函数,把输入的IO分组
②、给相应位设置相应的值,1为高,0为低
③、设置输出,3的函数可以在函数API中找到,就是上边推荐的资料,这里就不多说了。
3、实现输入
①要是实现输入的话,需要修改引脚配置设置为输入模式。
②,读函数用下边的函数
这段程序我感觉不用我解释,大家也知道都是什么意思了,说多了,就显得啰嗦了,哈哈。
4、实现输出电平翻转
小狂自认为这个实现的不好,但是懒得去改了,就这么用了,其实一句话就能完事的。
三、总结
到此,这篇文章就到此结束了,由于GPIO很简单,这篇帖子主要说了M4的事,程序没怎么分析,因为我个人感觉,这些东西都是最基本的东西,稍微有点基础的都能看懂,就不详细分析了,如果有任何不明白的,可以留言,我看到的话,会第一时间回复的。下一篇UART。希望大家多多捧场,多多支持,哈哈。
2