6回答

0收藏

[原创] 【GoRK3288】4.GPIO操作方法(2)

嵌入式系统 嵌入式系统 3855 人阅读 | 6 人回复 | 2015-05-21

     请先在https://github.com/tjCFeng/GoRK3288下载 GoRK3288 开源库

    上一节通过不靠谱的方法控制了WorkLED,那么对于一个具有功能复用的GPIO应该怎样操作呢?为了能够表达的更清楚一些,这次先不看代码,而是找一个具有代表性的端口来针对它说明。
    Firefly-RK3288有两排引出接口,从这里做文章吧



    找来找去,发现GPIO7_A1这个口很好,是PWM和GPIO复用的端口,就对它下手。
    由于它本身没有连接到任何地方,直接操作看不出效果,所以我翻箱倒柜找到了个小板子

    上面有LED和蜂鸣器,特别适合做这个试验。不过它是排针而Firefly-RK3288的是排座,还得用杜邦线来连接。最好的是一头公一头母的。手头上没有这种线,只能用公对公、母对母的来连接了




    开发板这端按照第一张图来连接好

    另外还有VCC和GND别忘了。

    连接完毕,可以看看代码了。如果按照上一节那样的操作,会发现根本不起作用,改变不了电平。
    差在什么地方呢?来看看示例代码


    比上一节的代码多了不少呀。不过不用担心,这里面有一些不需要的。
    首先,两个Flip(),就是电平翻转用的,这个已经知道了,可以忽略掉。
    其次,Print打印状态和Sleep延时函数,都是Go语言的东西,也可以忽略,一下子少了5行代码。
    在来看SetPP(),这个是设置内部上拉下拉电阻的,LED小板已经有上拉电阻了,这句可以省略;
    SetSR(),设置GPIO的速度,分为Fast和Slow,控制个LED快慢都无所谓,也可以省略;
    SetE(),设置GPIO驱动电流,LED小板上有三极管来驱动,只要个GPIO的信号就可以了,所以也可以省略。

    最关键的就一句,SetDir(),设置为输出。复用的端口改变为GPIO后,默认是输入的,所以要手动设置为输出,这也是为什么原来的代码不能控制LED的原因。
    当然,不要怪我故弄玄虚,不就是个设置方向吗,讲了这么多。其实隐藏在表面的背后,还有一部分操作,就是设置功能复用,通过RK3288的IOMUX来改变功能。说起来简单,但是在手册中查找每一个端口的复用操作很繁琐。当初在尝试使用这个GPIO口的时候,按照手册一点一点的配置好功能复用后居然发现还是不能操作电平,原因就是把方向设置给忘了,还以为是代码的问题而费了不少时间,所以这里特别强调了一下。
    不过经过封装后,想操作一个GPIO就再也不用去担心IOMUX了,直接使用就可以了,这就是封装的威力。

    好了,为了庆祝一下,来看看LED的效果吧


    可以根据代码每次的翻转来改变LED的亮灭。

下面总结一下GPIO类常用的方法:
    CreateGPIO:初始化端口
    FreeGPIO:释放端口
    GetData:获取高低电平
(仅在输出时有效)
    Flip:翻转电平
(仅在输出时有效)
    SetData:设置高低电平
(仅在输出时有效)
    SetPP:设置内部拉电阻
    SetSR:设置GPIO速度
    SetE:设置驱动电流
    GetInputValue:获取输入的高低电平(仅在输入时有效)

   
GoRK3288库请在https://github.com/tjCFeng/GoRK3288下载。

【GoRK3288】1.Rockchip RK3288, GO!GO!!GO!!!
https://www.cirmall.com/bbs/thread-41838-1-1.html
【GoRK3288】2.Go语法简要说明及GoRK3288结构
https://www.cirmall.com/bbs/thread-41847-1-1.html
【GoRK3288】3.GPIO操作方法(1)
https://www.cirmall.com/bbs/thread-41848-1-1.html
【GoRK3288】5.PWM操作方法
https://www.cirmall.com/bbs/thread-41894-1-1.html
【GoRK3288】6.TSADC操作方法
https://www.cirmall.com/bbs/thread-41926-1-1.html
【GoRK3288】7.WatchDog操作方法
https://www.cirmall.com/bbs/thread-41944-1-1.html

分享到:
回复

使用道具 举报

回答|共 6 个

倒序浏览

沙发

sugar-352625

发表于 2015-5-21 14:31:07 | 只看该作者

楼主辛苦啊,FireFly论坛也全是你的帖子啊
板凳

tjcfeng

发表于 2015-5-21 14:43:27 | 只看该作者

sugar-352625 发表于 2015-5-21 14:31
楼主辛苦啊,FireFly论坛也全是你的帖子啊

呵呵,发着玩吧
地板

QQ哥

发表于 2015-5-21 16:31:22 | 只看该作者

楼主这块板子怎么来的呀,有兴趣来一块            
我就是QQ哥,QQ哥就是我!
https://www.cirmall.com/bbs/?fromuser=QQ%E5%93%A5
5#

tjcfeng

发表于 2015-5-21 16:53:42 | 只看该作者

QQ哥 发表于 2015-5-21 16:31
楼主这块板子怎么来的呀,有兴趣来一块

官网上有卖的
6#

QQ哥

发表于 2015-5-22 13:43:41 | 只看该作者

tjcfeng 发表于 2015-5-21 16:53
官网上有卖的

果断烧起来~ 好像官网活动可以降价100-200,降价的板子会不会是前期测试的次品?
我就是QQ哥,QQ哥就是我!
https://www.cirmall.com/bbs/?fromuser=QQ%E5%93%A5
7#

tjcfeng

发表于 2015-5-22 14:02:02 | 只看该作者

QQ哥 发表于 2015-5-22 13:43
果断烧起来~ 好像官网活动可以降价100-200,降价的板子会不会是前期测试的次品? ...

不会吧,官网能卖次品
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条