打印
[DSP编程]

DSP初学者请教GPIO问题

[复制链接]
9354|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xudongxu1|  楼主 | 2014-11-26 01:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大神,小弟初学DSP,有诸多的疑惑需要请教,我在手把手教你学DSP(基于2812)这本书上看到的GPIO控制寄存器用的是 GpioMuxRegs.GPAMUX.xxxxx这样的写法,而我看到的28335的板子带的例程里面用的是 GpioCtrlRegs.GPAMUX1.xxxxx 这样的写法,那么GPIO控制寄存器到底是应该用哪个名字呢?为什么不一样?这个寄存器名称是在哪里规定的呢?可以自己定义吗?在做项目的时候需要自己定义吗?

相关帖子

沙发
309579471| | 2014-11-26 23:33 | 只看该作者
具体芯片有具体芯片的手册,手册里有相应的寄存器定义,你看TI的官方例程会事半功倍

使用特权

评论回复
板凳
zhangmangui| | 2014-11-26 23:51 | 只看该作者
地板
xudongxu1|  楼主 | 2014-11-27 00:57 | 只看该作者
谢谢各位的解答,寄存器GPAMUX 和 GPAMUX1 这两个我能理解,只是前面的GpioMuxRegs 和 GpioCtrlRegs ,这两个是从哪里来的,datasheet里面也找不到,不知道是从哪里规定的,所有的28335的板子都是叫GpioCtrlRegs 吗?

使用特权

评论回复
5
luoqiang10605| | 2014-11-27 18:15 | 只看该作者
先设置是否为 IO口 在设置输入输出

使用特权

评论回复
6
nowherenick| | 2014-11-28 10:03 | 只看该作者
GpioMuxRegs是用来选择GPIO口的功能的寄存器
GpioCtrlRegs是GPIO控制寄存器
我记得datasheet有专门讲GPIO口设置的那一节,你可以好好看一下

使用特权

评论回复
7
jing43| | 2014-11-29 23:35 | 只看该作者
你到 controlsuit 安装目录里搜到 “DSP2833x_Gpio.c” 这个文件,里面有这个函数:
void InitGpio(void)
{
   EALLOW;

   // Each GPIO pin can be:
   // a) a GPIO input/output
   // b) peripheral function 1
   // c) peripheral function 2
   // d) peripheral function 3
   // By default, all are GPIO Inputs
   GpioCtrlRegs.GPAMUX1.all = 0x0000;     // GPIO functionality GPIO0-GPIO15
   GpioCtrlRegs.GPAMUX2.all = 0x0000;     // GPIO functionality GPIO16-GPIO31
   GpioCtrlRegs.GPBMUX1.all = 0x0000;     // GPIO functionality GPIO32-GPIO39
   GpioCtrlRegs.GPBMUX2.all = 0x0000;     // GPIO functionality GPIO48-GPIO63
   GpioCtrlRegs.GPCMUX1.all = 0x0000;     // GPIO functionality GPIO64-GPIO79
   GpioCtrlRegs.GPCMUX2.all = 0x0000;     // GPIO functionality GPIO80-GPIO95

   GpioCtrlRegs.GPADIR.all = 0x0000;      // GPIO0-GPIO31 are inputs
   GpioCtrlRegs.GPBDIR.all = 0x0000;      // GPIO32-GPIO63 are inputs   
   GpioCtrlRegs.GPCDIR.all = 0x0000;      // GPI064-GPIO95 are inputs

   // Each input can have different qualification
   // a) input synchronized to SYSCLKOUT
   // b) input qualified by a sampling window
   // c) input sent asynchronously (valid for peripheral inputs only)
   GpioCtrlRegs.GPAQSEL1.all = 0x0000;    // GPIO0-GPIO15 Synch to SYSCLKOUT
   GpioCtrlRegs.GPAQSEL2.all = 0x0000;    // GPIO16-GPIO31 Synch to SYSCLKOUT
   GpioCtrlRegs.GPBQSEL1.all = 0x0000;    // GPIO32-GPIO39 Synch to SYSCLKOUT
   GpioCtrlRegs.GPBQSEL2.all = 0x0000;    // GPIO48-GPIO63 Synch to SYSCLKOUT

   // Pull-ups can be enabled or disabled.
   GpioCtrlRegs.GPAPUD.all = 0x0000;      // Pullup's enabled GPIO0-GPIO31
   GpioCtrlRegs.GPBPUD.all = 0x0000;      // Pullup's enabled GPIO32-GPIO63
   GpioCtrlRegs.GPCPUD.all = 0x0000;      // Pullup's enabled GPIO64-GPIO79

   //GpioCtrlRegs.GPAPUD.all = 0xFFFF;    // Pullup's disabled GPIO0-GPIO31
   //GpioCtrlRegs.GPBPUD.all = 0xFFFF;    // Pullup's disabled GPIO32-GPIO34
   //GpioCtrlRegs.GPCPUD.all = 0xFFFF     // Pullup's disabled GPIO64-GPIO79

   EDIS;

}       
可以看到,只有 GpioCtrlRegs,另一个是不存在的。 我这个文件可能是改过的,但说明这个问题上是一样的。

使用特权

评论回复
8
598835484| | 2015-11-15 10:40 | 只看该作者
zhangmangui 发表于 2014-11-26 23:51
https://bbs.21ic.com/icview-619750-1-1.html

https://bbs.21ic.com/icview-390183-1-1.html

请问GpioCtrlRegs.GPCMUX1.bit.GPIO64=3  是什么情况  GPxMUX不是只有0和1两种情况表示写入和输出吗?三是什么情况?

使用特权

评论回复
9
yaoyeming| | 2016-6-18 21:25 | 只看该作者
598835484 发表于 2015-11-15 10:40
请问GpioCtrlRegs.GPCMUX1.bit.GPIO64=3  是什么情况  GPxMUX不是只有0和1两种情况表示写入和输出吗?三 ...

表示将GPIO64设置为XD15(I/O)

使用特权

评论回复
10
qwer0145| | 2016-6-19 10:44 | 只看该作者
好像2812和28335架构不大一样,具体的你看一下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

0

粉丝