ARM X210开发板的软开关按键问题

news/2023/6/9 18:47:54

一、X210 开发板的软启动电路详解

在这里插入图片描述
《x210bv3.pdf》


(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) 软启动电路是比较接近于实际产品的,其他开发板的硬开关其实是简化版的,和实际产品还有差异。


《x210v3s开发板裸机教程.pdf》

市面上绝大多数开发板都是给整个系统直接上电,通过拨码开关实现硬件开关机,这种设计开发板将无法休眠唤醒。x210 开发板独特的软件开关机功能,可实现轻触开关实现软件开关机,休眠唤醒等,让开发板更接近产品。

上述电路图中,EINT0 用于置锁整个开发板的 5V 电源,EINT0 为高时,5V 电源被使能,为低时 5V 电源关闭。在实现休眠唤醒时,配合 EINT1 中断,通过 POWER 键实现中断响应,继而实现休眠唤醒。

EINT0 管脚和 PS_HOLD 管脚复用,当 PS_HOLD_CONTROL 寄存器的第 0 位设置为高时,使 能 PS_HOLD 管 脚 , 这 时 , EINT0 的 相 关 寄 存 器 设 置 将 无 效 , 该 管 脚 将 完 全 由PS_HOLD_CONTROL 寄存器控制。
在这里插入图片描述

我们将 PS_HOLD_CONTROL 的第 8,9 位设置为 1 时,该 IO 口为高,设置为 0 时,为低。
在 tester_powerlock 函数中,经 5 秒延时后,执行如下指令:

writel(S5PV210_PS_HOLD_CONTROL, (readl(S5PV210_PS_HOLD_CONTROL) & ~( 0x00000301 )) | ((0x1<<0) | (0x0<<8) | (0x0<<9)));

即将 PS_HOLD_CONTROL 的第 8,9 位清零,这时,EINT0 管脚被拉低,整个开发板的 5V
电源被关闭,开关板断电关机。

在整个 main 函数中,我们并没有对该寄存器做过任何设置,而上面的寄存器表格显示,在
芯片的初始化状态,PS_HOLD_CONTROL 的第 0 位是 0,即默认为普通 GPIO 口,复位时电平
为 0,那么开发板为什么还能运行起来呢?

在 start.s 中,有如下程序段:

ldr r0, =0xe010e81c
ldr r1, [r0]
orr r1, r1, #0x300
orr r1, r1, #0x1
str r1, [r0]

上面程序将 PS_HOLD_CONTROL 的第 0,8,9 位置高,即将该 IO 设置为 PS_HOLD 的模
式的同时,将 IO 口拉高,实现 5V 电源置锁。如果在 start.s 中去掉上面语句,那么开发板只
能长按住 POWER 键不放,才能维持电平。


三 、开发板供电置锁原理和分析

(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) 要想让开发板和普通的开发板一样,一按下按键程序运行后即可松手不会断电,则只要在程序的开头部分添加代码去置锁开关板即可。

文件名: BL1/start.S

 cat BL1/start.S/** 文件名:     start.s* 描述:       演示重定位(在SRAM内部重定位)*/#define WTCON           0xE2700000#define SVC_STACK       0xd0037d80.global _start                                  // 把_start链接属性改为外部,这样其他文件就可以看见_start了
_start://第0步:开发板置锁ldr r0, =0xe010e81cldr r1, [r0]orr r1, r1, #0x300orr r1, r1, #0x1str r1, [r0]// 第1步:关看门狗(向WTCON的bit5写入0即可)ldr r0, =WTCONldr r1, =0x0str r1, [r0]// 第2步:设置SVC栈ldr sp, =SVC_STACK// 第3步:开/关icachemrc p15,0,r0,c1,c0,0;                   // 读出cp15的c1到r0中//bic r0, r0, #(1<<12)                  // bit12 置0  关icacheorr r0, r0, #(1<<12)                    // bit12 置1  开icachemcr p15,0,r0,c1,c0,0;// 第4步:初始化ddrbl sdram_asm_init// 第5步:重定位,从SD卡第45扇区开始,复制32个扇区内容到DDR的 0x23E0,0000bl copy_bl2_2_ddr// 汇编最后的这个死循环不能丢b .

(2) 置锁代码的方法是:给 PS_HOLD_CONTROL 寄存器的 bit0、8、9 均写入 1 即可。

(3) 注意:此时开发板已经置锁,POWER 按键已经失效,关机时需要按下复位按键。


源自朱有鹏老师.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-4563027.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

解决 “您必须首先安装.NETFramework的以下版本“

您必须首先安装.NET Framework 4版本 下载地址&#xff1a; Microsoft .NET Framework 4&#xff08;独立安装程序&#xff09; 开始安装 安装完成 问题解决 天下英雄出我辈&#xff0c;一入江湖岁月催 我是「无间行者」&#xff0c;努力把实践过的解决方案分享给大家 如果这篇…

30行代码爬取英雄联盟全英雄皮肤!太简单了吧!

距离上次写爬虫文章已经过了许久了&#xff0c;之前写过一篇20行Python代码爬取王者荣耀全英雄皮肤 &#xff0c;反响强烈&#xff0c;其中有很多同学希望我再写一篇针对英雄联盟官网的皮肤爬取&#xff0c;但苦于事情繁多&#xff0c;便一拖再拖&#xff0c;一直拖到了现在&am…

不完美的英雄也是英雄

文/田涛 &#xff08;一&#xff09; 新年伊始&#xff0c;奥运冠军乔伊娜作为华为“厚积薄发”形象代言人的广告亮相了&#xff0c;华为内外颇多争议&#xff1a;乔伊娜曾被服用兴奋剂的“丑闻”缠身&#xff0c;而且已是历史人物&#xff0c;为什么选她呢&#xff1…

spring boot集成activemq(windows)

目录 1.环境配置 2.说明 3.服务启动 4.示例 导入依赖 配置文件 service层 配置类 监听器 5.总结 1.环境配置 下载地址&#xff1a;https://activemq.apache.org/components/classic/download/安装&#xff1a;解压缩即可注意每个版本对应的java版本不一样&#xff0c…

天下英雄出我辈,各领风骚数百年——C++的前世今生

信息学奥赛语言原本可选Pascal&#xff0c;C和C&#xff0c;但官方称2022年取消前两种考试语言&#xff0c;咱们必须未雨绸缪&#xff0c;因此整个专栏将选择C作为编程语言。 我这有个认知事物的固定逻辑&#xff0c;致命三连&#xff1a;是什么&#xff1f;为什么&#xff1f…

GitHub / 码云 Pages 打造个人在线简历

效果展示 前期准备 注册好 Github / 码云 账号&#xff0c;创建好 1 个仓库&#xff08;名字自取&#xff0c;可以和我一样用 resume&#xff09;1 个静态的简历网页模板。你可以直接 clone 我的模板&#xff0c;码云地址&#xff1a;https://gitee.com/hackhu96/resume 、G…

数据可视化呈现方式_呈现数据可视化以吸引观众

数据可视化呈现方式重点 (Top highlight)As researchers, we need to communicate data in a way that makes sense to the audience. Naturally, the process and artifacts differ depending on the type of data. Sometimes, we play an audio clip from a user interview; …

GD32F450寄存器和库函数

GD32F4xx用户手册 GD32F450xx数据手册 GD32F3x0固件库使用指南 一、寄存器介绍 1. 存储器映射表 GD32是一个32位的单片机&#xff0c;它的地址范围为2的32次方&#xff0c;也就是4GB的地址空间。 为了降低不同客户在相同应用时的软件复杂度&#xff0c;存储映射是按Corte…