S5PV210系列 (裸机十三)之解决X210开发板的软开关按键问题

2019-07-13 23:14发布

解决X210开发板的软开关按键问题

X210开发板的软启动电路详解 (1) 210 供电需要的电压比较稳定,而外部适配器的输出电压不一定那么稳定,因此板载了一个文稳压器件 MP1482. 这个稳压芯片的作用就是外部适配器电压在一定范围内变化时稳压芯片的输出电压都是 5V。 (2) MP1482 芯片有一个 EN(Enable)引脚,这个引脚可以让稳压芯片输出或关闭输出。EN 为高电平时有输出电压,EN 引脚为低电平时稳压芯片无输出。 (3)两个因素可以影响 EN引脚 的电平:第一个是 POWER 按键(SW1),POWER 按键按下时 EN 为高电平,POWER 按键弹起时 EN 为低电平;第二个是POWER_LOCK(EINT0)引脚,这个引脚为 POWER_LOCK 模式下高电平,则EN 为高;若这个引脚为 EINT0 模式或者为 POWER_LOCK 模式但输出为低电平,则 EN 为低。 (4)图中还有 EINT1 引脚,这个引脚的作用是用来做中断,提供给 CPU 用来唤醒的。 这里写图片描述 为什么要软启动 (1)一般的电路设计都是用拨码开关来做电源开关的(打到一侧则接通,打到另一侧则关闭)。这种方式的优点是设计简单,缺点是电路太简单,整个主板要么有电要么没电无法做休眠模式、低功耗模式等。 (2)软启动电路是比较接近于实际产品的,其他开发板的硬开关其实是简化版的,和实际产品还有差异。 开发板供电置锁原理和分析 这里写图片描述 (1)软开关在设计时有一个置锁电路,用 EINT0(也就是 GPH0_2 )引脚来控制的。 (2) EINT0 这个引脚是有复用设计( 两个完全不相干的功能挤在同一个引脚上,同时我们只能让这个引脚用于其中一种功能,这就叫复用 )的,一个是GPIO(也就是 GPH0_2 引脚)、一个是 PS_HOLD_CONTROL。(注意:EINT0功能算是 GPIO 下的一个子功能) (3) PS_HOLD 在 Section2.4 Power Management 章节下的4.10.5.8节下。 (4) PS_HOLD_CONTROL 寄存器( 0xE010E81C ),共有 3 个位有用。
bit0, 0表示这个引脚为 GPIO 功能,1表示这个引脚为 PS_HOLD 功能
bit9,0表示这个引脚方向为输入,1表示这个引脚方向为输出
bit8,0表示这个引脚输出为低电平,1表示输出为高电平。
分析:我们要使用软启动置锁,则需要将 bit0、8、9 都置为 1 即可。 写代码 + 实验验证 (1)要想让开发板和普通的开发板一样,一按下按键程序运行后即可松手不会断电,则只要在程序的开头部分添加代码去置锁开关板即可。 (2)置锁代码的方法是:给 PS_HOLD_CONTROL 寄存器的 bit0、8、9 均写入 1 即可。 (3)注意:此时开发板已经置锁,POWER 按键已经失效,关机时需要按下复位按键。 // 第0步:开发板置锁 // 写法1 //ldr r0, =0xE010E81C //ldr r1, =0x301 //str r1, [r0] // 写法2 //ldr r0, =0xE010E81C //ldr r1, [r0] //orr r1, r1, #0x300 //orr r1, r1, #0x01 //str r1, [r0] // 写法3 ldr r0, =0xE010E81C ldr r1, [r0] ldr r2, =0x301 orr r1, r1, r2 str r1, [r0]