sprd平台pinmap介绍

Pinmap 与 Boot 流程
  • Pinmap 是用软件控制寄存器的方式来配置 PAD 脚状态。在开机的初始阶段,芯片得到供电但还未加

载 pinmap.c 文件的时候,PAD 脚的状态是芯片内部固定好的,具体请参见 BB 芯片规格书或 GPIO

SPEC 文档。

  • EXT_RST_B 信号是 PMIC 对 BB 的复位信号,拉低复位。开机上电时,当 PMIC 芯片完成关键供电

输出后,会将 EXT_RST_B 信号拉高,接着 BB 掌控开机流程。在 EXT_RST_B 未拉高之前,称之为

BB 的 At Reset 阶段;从 EXT_RST_B 拉高到 BB 加载 pinmap.c 文件这一阶段,称之为 BB 的 After

Reset 阶段。接下来 BB 芯片 PAD 脚的状态便由 Pinmap 控制。

  • PAD 脚在 At Reset 和 After Reset 阶段的状态可在芯片规格书或 GPIO SPEC 中查到。在 At Reset 和After Reset 阶段,一些 PAD 状态可能为输出高电平或内部上拉等,外接电路选择不当(控制 LED/背光/SPK 等)可能会造成开机时不可控的闪烁、爆破音等。

  • Pinmap 从 U-boot 阶段开始起作用,如图所示:

pinmap关键字段介绍
  1. pinmap文件存放路径:bsp/bootloader/u-boot15/board/spreadtrum/[实际使用的 Board]/pinmap.c

  1. Pinmap.c 文件中对 BB 每个 PAD 的配置都分为两行,第一行配置 PAD 的“Central 寄存器”,第二行配置PAD 的“Side Band(MISC)寄存器”。下面以 DSI_TE 为例,对关键字段进行解释说明。

  • A:PAD 脚的“Central 寄存器”名称。“DSI_TE”为 PAD 的 Ball Name。

  • B:“Central 寄存器”的控制内容,控制 PAD 的功能。AF0~3 对应 BB 芯片规格书和 GPIO SPEC 中的 Function 0~3。

BITS_PIN_AF(3); 如果配置为 3,通过表格可以看到对应的是 GPIO79。如果配置为0,即 Function0 为 EXTINT10,在 EIC Source List 中,可以查询到对应的 EIC 控制器,说明可以作 EIC 中断使用。

  • C:PAD 脚的“Side Band(MISC)寄存器”名称。“DSI_TE”为 PAD 的 Ball Name。

  • D:“Side Band 寄存器”的控制内容,PAD 驱动强度(Drive Strength)选择。调整输出信号的驱动能力(提供对输出信号电流的控制),默认与平台版本保持一致,驱动强度过大会造成高频分量过多。输出信号时序有问题时才做调整。

  • E/F:“Side Band 寄存器”的控制内容,唤醒状态下 PAD 内部上下拉状态控制。

两个关键字共同控制上下拉状态,所有组合如下:

  • BIT_PIN_NULL|BIT_PIN_NUL 表示内部无上下拉。

  • BIT_PIN_NULL|BIT_PIN_WPU 表示 20 kΩ 电阻上拉。

  • BIT_PIN_WPUS|BIT_PIN_NUL 表示 4.7 kΩ 电阻上拉。

  • BIT_PIN_WPUS|BIT_PIN_WPU 表示 1.8 kΩ 电阻上拉。

  • BIT_PIN_NULL|BIT_PIN_WPD 表示 50 kΩ 电阻下拉。

说明:除 I2C 接口和 SIM 卡接口之外,一般不需要开启强上拉(4.7 kΩ/1.8 kΩ),保持与平台一致即可。IO口只有作为输入时才配置上下拉,主要是为了钳制电位;作信号输出时,高低电位由软件决定,无需配置上下拉。

WPU(Weak Pull Up):是弱上拉。

WPUS(Weak Pull Up Selection):上拉强度选择。

WPD(Weak Pull Down):弱下拉。

  • G:“Side Band 寄存器”的控制内容,PAD 休眠控制选择。PAD 在唤醒时,其状态动态可变;休眠后只能静态保持一种状态。具体的对外表现状态由关键字 H和 I 决定。PAD 的休眠选择:PAD 应与其信号 Controller 所在的子系统一起休眠。C 文件在开头对一些子系统的集合作出了定义[1],也可以直接将多个子系统并列写,作“与”逻辑。如 BIT_PIN_SLP_AP|BIT_PIN_SLP_AUDCP,表示在 AP 和 AUDCP 都休眠时(“与”),信号才进入休眠。休眠状态相关的关键字只有在休眠状态下才会生效,如休眠项配置为 BIT_PIN_SLP_NONE,则 PAD不会休眠,关键字 H 和 I 一直不会生效。

  • H:“Side Band 寄存器”的控制内容,休眠后 PAD 内部上下拉状态控制[2]

  • BIT_PIN_SLP_WPU 表示弱上拉

  • BIT_PIN_SLP_WPD 表示弱下拉

  • BIT_PIN_SLP_NUL 表示无上下拉

此处的状态是为了控制信号在休眠后的内部上下拉,此时上拉电阻固定为 20K。

  • I:“Side Band 寄存器”的控制内容,休眠后 PAD 的输入输出状态[2]

  • BIT_PIN_SLP_IE 表示输入

  • BIT_PIN_SLP_OE 表示输出

  • BIT_PIN_SLP_Z 表示高阻

PAD 未休眠时,其信号的输入/输出方向由内部 Controller 决定;PAD 休眠后,其信号方向将为单一

固定方向,由此关键字控制。

说明:

  • IE(Input Enable,输入使能)使能时为输入,PAD 与内部输入门电路连接。

  • OE(Output Enable,输出使能)使能时为输出,PAD 与内部输出门电路连接。

  • IE/OE 都不使能时为高阻,PAD 与内部输入/输出门电路都断开。

  • J:注释网络名等信息,增加可读性。

注:PAD 休眠后,可以通过关键字 H I 配置 PAD 此时的状态:

  • BIT_PIN_SLP_WPU|BIT_PIN_SLP_Z

表示 PAD 休眠后与内部输入/输出门电路都断开,内部上拉,对外表现高电平。

用于子系统休眠后 BB 端无需收发数据,但外设端需要高电平的信号,如 I2C 信号等。

  • BIT_PIN_SLP_WPD|BIT_PIN_SLP_Z

表示 PAD 休眠后与内部输入/输出门电路都断开,内部下拉,对外表现低电平。

用于子系统休眠后 BB 端无需收发数据,但外设端需要低电平的信号。

  • BIT_PIN_SLP_NUL|BIT_PIN_SLP_Z

表示 PAD 休眠后与内部输入/输出门电路都断开,内部无上下拉,对外表现悬空。

用于子系统休眠后 BB 端无需收发数据,外设端对电平也没有要求的信号(PAD 悬空时会耦合相

邻 PAD 的跳变电平,因此尽量不要配置此状态)。

  • BIT_PIN_SLP_NUL|BIT_PIN_SLP_OE

表示 PAD 休眠后保持与内部输出门电路的连接,输出电平由内部寄存器决定,无须配置上下拉。

用于子系统休眠后,BB 端需要保持输出的信号,如复位信号等。

  • BIT_PIN_SLP_XXX|BIT_PIN_SLP_IE

表示 PAD 休眠后保持与内部输入门电路连接,内部上下拉的选择与工作状态下的一致。

用于子系统休眠后,BB 端仍需保持接受状态的信号,如中断信号等。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值