嵌入式驱动开发(普适的GPIO操作方法)

一、普适的GPIO操作方法

1、enable Power/Clock control;

2、 pin的Mode;

3、Dir:output/input;

4、Data:1/0。

注:R/W Register:donot effect other bits.

二、GPIO寄存器的2种操作方法

原则:不能影响到其他位

a. 直接读写:读出、修改对应位、写入

要设置bit n:

val = data_reg;

val = val | (1

data_reg = val;

要清除bit n:

val = data_reg;

val = val & ~(1

data_reg = val;

b. set-and-clear protocol:

set_reg, clr_reg, data_reg 三个寄存器对应的是同一个物理寄存器,

要设置bit n:set_reg = (1

要清除bit n:clr_reg = (1

三、IMX6UL的GPIO操作方法

 

 

上图中IOMUXC(IO复用控制器)有两个作用:

(1)、MUX_MODE:选择pin功能;

(2)、pad settings:是否使用上下拉电阻,使用多大的电阻。

1、读GPIO:

(1)、设置CCM_CCGRx 寄存器中某位使能对应的GPIO 模块 // 默认是使能的,上图省略了

(2)、设置IOMUX 来选择引脚用于GPIO

(3)、设置GPIOx_GDIR 中某位为0,把该引脚设置为输入功能

(4)、读GPIOx_DR 或GPIOx_PSR 得到某位的值(读GPIOx_DR 返回的是GPIOx_PSR 的值)

2、写GPIO

(1)、设置CCM_CCGRx 寄存器中某位使能对应的GPIO 模块 // 默认是使能的,上图省略了

(2)、设置IOMUX 来选择引脚用于GPIO

(3)、设置GPIOx_GDIR 中某位为1,把该引脚设置为输出功能

(4)、写GPIOx_DR 某位的值

需要注意的是,你可以设置该引脚的loopback 功能,这样就可以从GPIOx_PSR 中读到引脚的有实电平;你从GPIOx_DR 中读回的只是上次设置的值,它并不能反应引脚的真实电平,比如可能因为硬件故障导致该引脚跟地短路了,你通过设置GPIOx_DR 让它输出高电平并不会起效果。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值