GPIO初始化

PXA3xx_MFP_CFG(desc, pin, af, drv, rdh, lpm, edge)宏定义中rdh参数是用来设置进入或退出low powerGPIO的电平由什么决定,为0时进入low power时由lpm决定,离开时恢复原值,为1GPIO的值由ASCR[RDH]决定,一般该参数设置为0lpm参数的作用是当系统由工作模式进入省电模式后,该GPIO的状态,是输出01,还是输入pull highpull low

Pull hight或者pull low只有在input pin时才有效。/上拉电阻的主要目的就是防止Pin悬空,悬空的Pin可以看作一个天线,它容易受外界干扰,造成Pin值的不确实性。下/上拉电阻能够给Input Pin一个默认的输入值,下拉电阻接地,默认输入低电平,上拉电阻接电源,默认输入高电平。当真正有外接输入时,它们自动无效,同时避免短路,起到限流作用。

 

#define MFP_LPM_DRIVE_LOW      进入省电模式后GPIO口输出0

#define MFP_LPM_DRIVE_HIGH              进入省电模式后GPIO口输出1

#define MFP_LPM_PULL_HIGH       进入省电模式后GPIO口输入pull hight

#define MFP_LPM_PULL_LOW        进入省电模式后GPIO口输入pull low

#define MFP_LPM_FLOAT                 进入省电模式后GPIO口输入具体的电压值;

#define MFP_LPM_PULL_NEITHER          进入省电模式后不做任何操作。

 

下面举两个例子来说明:

GPIO初始化

 

CHG_CHGINGinput pin,所以lpm参数应设置为MFP_LPM_PULL_HIGH

GPIO初始化

 

由于SYS_ENoutput pin,所以lpm参数应根据datasheet说明来设置为MFP_LPM_DRIVE_LOWMFP_LPM_DRIVE_HIGHMFP_LPM_PULL_NEITHER

SYS_ENinput pin,则lpm参数应设置为MFP_LPM_PULL_LOW

 

详情可参考

PXA3xx_DM_Vol_I.pdf中的4.10

以及http://blog.csdn.net/absurd/archive/2007/07/09/1683936.aspx

 

1.纠正一个错误,关于上次说的在sleep的时候的上拉下拉电阻,其实pullup_en,pulldown_en参数是启用cpu内部的该GPIO口上的上拉或下拉电阻,所以如果外部电路中已经有上拉或下拉电阻了,我们就没必要再启用cpu内部的上拉或下拉电阻了。

2.在suspend的时候用pxa3xx_gpio_set_direction函数来更改pin的方向看起来是不行的,

因为MFPR寄存器中有一个单独的位sleep_oe_n,专门用来设置在S2状态下pin的方向,所以要更改S2状态下pin的方向,必须设置这个bit,

这个是在GPIO初始化的时候用PXA3xx_MFP_CFG宏来设置。

具体请参考PXA3xx_DM_Vol_I.pdf中的4.10。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在树莓派上使用GPIO之前,需要进行GPIO初始化。以下是GPIO初始化的步骤: 1. 导入所需的Python库 使用树莓派GPIO需要使用RPi.GPIO Python库。可以使用以下命令安装它: ``` sudo apt-get install python3-rpi.gpio ``` 2. 设置GPIO编号模式 树莓派有两种GPIO编号模式:BCM(Broadcom SOC Channel)和BOARD。BCM模式使用GPIOGPIO编号(如GPIO17),而BOARD模式使用GPIO的物理位置编号(如PIN11)。 在Python中使用BCM模式,可以使用以下代码: ```python import RPi.GPIO as GPIO GPIO.setmode(GPIO.BCM) ``` 在Python中使用BOARD模式,可以使用以下代码: ```python import RPi.GPIO as GPIO GPIO.setmode(GPIO.BOARD) ``` 3. 设置GPIO的输入/输出模式 在使用GPIO之前,需要确定每个GPIO引脚的输入/输出模式。要设置GPIO引脚为输入模式,可以使用以下代码: ```python GPIO.setup(channel, GPIO.IN) ``` 要设置GPIO引脚为输出模式,可以使用以下代码: ```python GPIO.setup(channel, GPIO.OUT) ``` 其中,channel是GPIO引脚的编号。 4. 设置GPIO的初始状态 在设置GPIO引脚为输出模式时,还可以设置GPIO引脚的初始状态。要将GPIO引脚设置为高电平(3.3V),可以使用以下代码: ```python GPIO.output(channel, GPIO.HIGH) ``` 要将GPIO引脚设置为低电平(0V),可以使用以下代码: ```python GPIO.output(channel, GPIO.LOW) ``` 其中,channel是GPIO引脚的编号。 完成以上步骤后,就可以使用GPIO进行各种控制操作了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值