微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > DSP学习交流 > 关于GPIO使用的一点总结

关于GPIO使用的一点总结

时间:10-02 整理:3721RD 点击:
最近验证一个功能需要配置GPIO一个pin来做测试, 结果一直都不对,由于平时关注DSP通信算法的东西多一点,都是对code的信号处理调试比较熟悉,所以遇到问题之后,只有重新去读TI的文档来解决,最后发现是因为一个寄存器的配置问题造成的,稍微总结下,也许大家有会遇到同样的问题~~~
1;C6748的GPIO提供了144个pin,分为9个bank,每个bank16个pin。
2; 既然是GPIO,当然可以既作为input,又可以使output。当作为output的时候,通过写GPIO的寄存器就可以控制输出的电平高低; 当作为input的时候,输入的状态同样可以通过读GPIO的寄存器来得到。
3;当然GPIO的pin还可以用来当中断用,由于暂时没有涉及到,所以没有细究怎么配置,需要的同学可以自己先研究哈
4;GPIO的使用:
     1)开始说了GPIO有144个pin角,而整个C6748的chip才不到400个pin,还有那么多的接口,电源,接地等等,所以pin角复用肯定是不可少的。因此不时所有的外设可以同时工作,那么怎么决定一个pin角做哪种功能呢,所以就有了system configure register, 文档中名字叫SYSCFG。SYSCFG包含了很多寄存器,其中PINMUX0--PINMUX19就是专门用来配置pin角复用的。具体的可以看每个寄存器管理哪些具体的pin角,用到了什么就配置什么。比如像用到GP0[8],就需要把PINMUX0的最后四比特配成0x08。


    2)然后需要配置GPIO的方向,到底是作为input还是output,当然,这个也是通过寄存器来实现的。比如想把GP0[8]配成input,那么就应该去配置寄存器DIR01对于的bit位为1;如果想配成output,就应该把对应bit配成0。


    3)如果是配成了input,当然直接读寄存器就可以知道pin角的状态了;如果是配成了output,那么可以通过寄存器OUT_DATAn来驱动pin角输出的状态。同样,如果是想驱动GP0[8],就需要配置寄存器OUT_DATA01。


    4) 所以,特别需要注意一点的就是,不能只配了GPIO的输入输出方向就不管了,如果是输入都还好,但如果是输出的话,就需要自己再控制寄存器来驱动输出的状态高低。当时就是没有注意到这个问题,所以就出错了。当然,GPIO还有几个寄存器,例如SET_DATAn,CLR_DATAn等等,对用的功能都比较简单,只需要简单看一下TI的文档马上就可以明白了。
希望以上的一点点信息对大家在使用GPIO的时候有点帮助。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top