高通lk阶段配置GPIO初始化

authordaisy.skye的博客_CSDN博客-嵌入式,Qt,Linux领域博主

代码路径

bootable/bootloader/lk/platform/msm8953/gpio.c

void gpio_tlmm_config(uint32_t gpio, uint8_t func,
			uint8_t dir, uint8_t pull,
			uint8_t drvstr, uint32_t enable)
{
	uint32_t val = 0;

	val |= pull;
	val |= func << 2;
	val |= drvstr << 6;
	val |= enable << 9;

	writel(val, (uint32_t *)GPIO_CONFIG_ADDR(gpio));
	return;
}
void gpio_set_dir(uint32_t gpio, uint32_t dir)
{
	writel(dir, (uint32_t *)GPIO_IN_OUT_ADDR(gpio));

	return;
}

gpio_tlmm_config配置gpio的引脚,功能,方向,能力,gpio_set_dir配置gpio的高低电平先根据函数和定义自行理解后

GPIO配置函数头文件定义

#include <gpio.h>

/* GPIO TLMM: Direction */
#define GPIO_INPUT      0
#define GPIO_OUTPUT     1

/* GPIO TLMM: Pullup/Pulldown */
#define GPIO_NO_PULL    0
#define GPIO_PULL_DOWN  1
#define GPIO_KEEPER     2
#define GPIO_PULL_UP    3

/* GPIO TLMM: Drive Strength */
#define GPIO_2MA        0
#define GPIO_4MA        1
#define GPIO_6MA        2
#define GPIO_8MA        3
#define GPIO_10MA       4
#define GPIO_12MA       5
#define GPIO_14MA       6
#define GPIO_16MA       7

/* GPIO TLMM: Status */
#define GPIO_ENABLE     0
#define GPIO_DISABLE    1

void gpio_config_uart_dm(uint8_t id);
void gpio_config_blsp_i2c(uint8_t, uint8_t);
#endif


代码参数详细解析

函数

void gpio_tlmm_config(uint32_t gpio, uint8_t func,

uint8_t dir, uint8_t pull,

uint8_t drvstr, uint32_t enable)

参数

gpio

gpio 引脚:具体根据原理图

func

功能定义:默认0表示普通io;串口使用2;spo使用1

dir

方向:输入或者输出

pull

是否上拉下拉:输出配置不拉,输入根据电路配置上拉or下拉

drvstr

驱动能力:从2mA到16mA,一般定义8mA

enable

使能情况:输出配置GPIO_DISABLE,输入配置GPIO_ENABLE 

举个列子

gpio_tlmm_config(6, 0, GPIO_OUTPUT, GPIO_NO_PULL,

    GPIO_8MA, GPIO_DISABLE);//设置GPIO6为输出模式

gpio_set_dir(6, 2);//设置输出高电平
//gpio_set_dir(6, 0);//设置输出低电平

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值