xudongxu1 发表于 2014-11-26 01:11

DSP初学者请教GPIO问题

各位大神,小弟初学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

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

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

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

这都是各位网友的分享请查看

xudongxu1 发表于 2014-11-27 00:57

谢谢各位的解答,寄存器GPAMUX 和 GPAMUX1 这两个我能理解,只是前面的GpioMuxRegs 和 GpioCtrlRegs ,这两个是从哪里来的,datasheet里面也找不到,不知道是从哪里规定的,所有的28335的板子都是叫GpioCtrlRegs 吗?

luoqiang10605 发表于 2014-11-27 18:15

先设置是否为 IO口 在设置输入输出

nowherenick 发表于 2014-11-28 10:03

GpioMuxRegs是用来选择GPIO口的功能的寄存器
GpioCtrlRegs是GPIO控制寄存器
我记得datasheet有专门讲GPIO口设置的那一节,你可以好好看一下

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,另一个是不存在的。 我这个文件可能是改过的,但说明这个问题上是一样的。

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两种情况表示写入和输出吗?三是什么情况?

yaoyeming 发表于 2016-6-18 21:25

598835484 发表于 2015-11-15 10:40
请问GpioCtrlRegs.GPCMUX1.bit.GPIO64=3是什么情况GPxMUX不是只有0和1两种情况表示写入和输出吗?三 ...

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

qwer0145 发表于 2016-6-19 10:44

好像2812和28335架构不大一样,具体的你看一下
页: [1]
查看完整版本: DSP初学者请教GPIO问题