This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

F28M35 GPIO



今天利用HOST example/enet_lwip/m3/enet_lwip.c看了GPIO的复用配置。以其中的这段程序为例: // MII_TXD3 GPIODirModeSet(GPIO_PORTC_BASE, GPIO_PIN_4, GPIO_DIR_MODE_HW); GPIOPadConfigSet(GPIO_PORTC_BASE, GPIO_PIN_4, GPIO_PIN_TYPE_STD); HWREG(GPIO_PORTC_BASE + GPIO_O_PCTL) &= 0xFFF0FFFF; HWREG(GPIO_PORTC_BASE + GPIO_O_PCTL) |= 0x00030000; 1、我的理解是每一组的PORT,如PORTA 、PORTB等,它们都有各自的的GPIOASEL 、GPIOCSEL 、GPIOPCTL等寄存器,因为这些寄存器只有8个位的状态,必须每组PORT都有一个。2、HWREG(GPIO_PORTC_BASE + GPIO_O_PCTL) &= 0xFFF0FFFF; HWREG(GPIO_PORTC_BASE + GPIO_O_PCTL) |= 0x00030000;结果是使GPIOPCTL寄存器的PMC4为0011,然后对应功能技术手册的table4-1,选择PC4的3号(0011)功能,即MII_TXD3。这样理解是对的吗?3、GPIOPadConfigSet(GPIO_PORTC_BASE, GPIO_PIN_4, GPIO_PIN_TYPE_STD);这句是配置管脚的什么属性?手册上有5种GPIO_PIN_TYPE_X,分别是什么?各用在什么场合?4、我看到后面有些引脚的配置使用了GPIOASEL寄存器,有些没有。我的理解是这些管脚是分成两组的,在上面组中的 GPIOASEL相应位清0,,在下面就置1,因默认是0,故在上面组无需配置,在下面组则多了配置GPIOASEL寄存器的语句。这样理解是对的吗?

  • Hi,

    你可以看一下technical reference guide中关于GPIO那一个章节。

    1, 每个GPIO端口都具备那些寄存器,手册主要是这个来说明的,就是每个端口都有一个基地址,然后那些寄存器都有对应的offset地址,所以只要给个port的基地址,再给对应的offset地址就是对某个端口的某个寄存器进行操作,具体哪个寄存器可以看手册关于寄存器中的说明。当然,驱动库都已经写好了,你也可以直接用。

    2. 你的理解是对的。另外你可以通过编译后查看对应的寄存器,进一步就能够确定你的理解。

    3.The pad control registers allow software to configure the GPIO pads based on the application requirements. The pad control registers include the GPIOODR, GPIOPUR and GPIODEN registers. These registers control open-drain configuration, pull-up resistors, and digital input enable for each GPIO.

    只有3种而已,即OD, 上拉使能,digital input enable 这个是对数字功能必须要使能的。 至于OD或上拉电阻可以作为什么用途,你可以google一下,很多。不过一般用上拉电阻功能比较多。

    4. GPIOASEL是配置该引脚是作为GPIO功能还是外设功能而已。

    Eric

  • 你好!我看手册的datasheet的引脚复用部分,发现几个版本对于管脚复用的说明不是一致。一份是Cocerto F28M35x Technical Reference Manual。一份页头写着

    F28M35H20B1,F28M35H20C1
    F28M35H22B1,F28M35H22C1,F28M35H32B1,F28M35H32C1
    F28M35H50B1,F28M35H50C1,F28M35H52B1,F28M35H52C1
    SPRS742D–JUNE2011–REVISEDAUGUST2012

    以对PF5_GPIO37为例,后一份比前一份多M_MIITXEN的功能。我个人理解是不是后一份是前一份的子集,所以功能多些。但在查看头文件hw_gpio.h:

    #define GPIO_PCTL_PF5_M              0x00F00000 // PF5 mask
    #define GPIO_PCTL_PF5_CCP2           0x00100000 // CCP2 on PF5
    #define GPIO_PCTL_PF5_MIIRXD3        0x00300000 // EMAC MIIRXD3 on PF5
    #define GPIO_PCTL_PF5_EPI0S15        0x00800000 // EPI0S15 on PF5
    #define GPIO_PCTL_PF5_SSI1TX         0x00900000 // SSI1TX on PF5
    发现还是没有M_MIITXEN这个功能。这是什么原因?是不是具体到某个型号芯片,还有自己的头文件?
    还有一个问题是:F28M35H52C1的不同版本的(一份是11年6月,一份是12年8月)对同一管脚的复用功能也并不是一致的。在设计中以那个版本的为准?是否有更新的版本?
    期待您的解惑!
  • timberrain,

    这应该是datasheet的一个error,GPIO37没有MII_TXEN的功能。

    Eric