三哥编程分享
这个作者很懒,什么都没留下…
展开
-
0.嵌入式控制器EC实战 Embedded Controller开发概述
文章目录前言1.嵌入式控制器EC概述2.EC芯片框图(IT8502为例)3.General Purpose I/O Port (GPIO)4.SMBus(System Management Bus,系统管理总线)5.PWM、TACH6.KBC(KeyBoard Controller)7.PS/28.ADC(模数转换)总结前言例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。1.嵌入式控制器EC概述嵌入式控制器EC是挂在CPU的L原创 2022-05-02 14:06:54 · 8923 阅读 · 3 评论 -
21.EC实战 嵌入式控制器EC如何进入休眠模式实现低功耗
本文详细介绍了笔记本电脑嵌入式控制器(EC)在深度睡眠模式下的配置与工作流程。深度睡眠模式通过停止所有时钟来降低功耗,适用于电池供电时的关机或休眠状态。文章首先概述了EC的空闲模式和深度睡眠模式,随后详细描述了深度睡眠模式的配置步骤,包括中断向量表设置、中断服务函数编写、深度睡眠检测、唤醒引脚配置及外部唤醒设置。通过具体代码示例,展示了如何配置WUI0中断向量表、编写中断服务函数、检测系统状态以决定是否进入深度睡眠,并最终实现深度睡眠的进入与唤醒。文章还提供了相关代码片段,帮助读者理解具体实现细节。原创 2025-05-19 17:41:20 · 14 阅读 · 0 评论 -
飞腾UEFI电源控制选择代码解析
以D2000打工工具为例,下图打包工具中有选择主板电源管理方式,这里可以选择CPLD、EC、和SE,其中SE代表为X100控制上下电时序。为什么打包工具中要加入这一项配置呢,这是因为不同的电源控制方式,开关机的提示方式有所不同,比如CPLD是通过PWR_CTR0/1发脉冲,EC是通过LPC总线修改ECRAM的值。CPU关机,PWR_CTR0拉高,在拉高期间,PWR_CTR1产生12个脉冲,再将PWR_CTR0拉低,这样来指示CPU完成了关机,需要CPLD在检测到该信号后对主板的各路电源按时序要求进行下电。原创 2024-04-16 22:17:17 · 831 阅读 · 0 评论 -
矩阵键盘引脚KSI/KSO如何当GPIO使用
EC中可以用到的GPIO数量比较有限,对于一些台式机、一体机和平板,不需要使用矩阵键盘,而这些主板有时需要使用大量的GPIO做LED控制、电源管理、状态监控等,现有GPIO数量不够用,需要使用KSI/KSO这8+18 26个引脚做普通GPIO使用,因为这26的引脚不能和其他普通GPIO直接通过Port_Ctrl寄存器配置。原创 2024-02-21 11:23:46 · 692 阅读 · 0 评论 -
矩阵键盘+CH559制作国产USB矩阵键盘
使用CH559单片机+16*8矩阵键盘实现国产USB矩阵键盘原创 2023-04-10 14:28:19 · 1623 阅读 · 0 评论 -
20.EC实战 笔记本电脑的休眠唤醒是如何实现的
本文主要介绍飞腾笔记本电脑的休眠唤醒的实现方式和注意细节原创 2022-12-11 17:22:39 · 2185 阅读 · 1 评论 -
19.EC实战 矩阵键盘控制触摸板开关
在我们的笔记本电脑键盘上一般都存在触摸板开关的按钮,实现方式一般是Fn+对应图标按键控制开关,那么在EC中又是如何实现的呢?下图可以通过笔记本的Fn+F6来实现笔记本触摸板的开关,开机默认打开触摸板,在按下Fn+F6按键后,EC会将触摸板关闭,再次按下后又可以打开。接下来介绍两种方式,一种是非常规方式、一种是常规方式。原创 2022-11-03 16:16:45 · 1539 阅读 · 3 评论 -
18.EC实战 新建项目工程并配置各个引脚的工作方式(持续更新)
本博文介绍了从零开始新建EC工程及对各个引脚进行了工作模式的初始化配置原创 2022-10-28 16:41:27 · 1476 阅读 · 2 评论 -
17.EC实战 开发板开发环境搭建、程序烧录及运行代码过程
去年的博文基于ITE12.4代码的编译环境搭建,本文将在此基础上进行实战练习,基于我们之前做的EC开发板,EC芯片使用的是ITE8987,本教程将实现开发板开发环境搭建、程序烧录及运行代码过程。原创 2022-08-30 23:17:51 · 2627 阅读 · 8 评论 -
98.嵌入式控制器EC实战 EC开发板开发完成
在祥哥的大力帮助之下,开发板已经完成了上电调试,由于物料采购的周期比较长,拖了一个月,开发板才正式调通,接下来将基于开发板完成相关的开发实战讲解,非常感谢这一段时间大家一直的催更,接下来要开启周更模式,结合开发板把开发过程介绍得更加详细。基于ITEV12-4讲解开发板的上电过程及点亮LED灯。需要开发板得朋友可以私聊我或者给我留言。...原创 2022-07-31 11:28:47 · 1907 阅读 · 8 评论 -
16.EC实战 入口函数main函数剖析(CORE_MAIN.C中的mian函数是如何跑起来的)
介绍了嵌入式控制器EC代码版本12.4中main函数是如何跑起来的原创 2022-06-13 09:00:00 · 1381 阅读 · 6 评论 -
100.嵌入式控制器EC实战 EC开发板制作进度报告
经过调研发现,现存的EC芯片大部分使用的是ITE8987和ITE8528,我们的开发板将使用ITE8987芯片,硬件电路将会做ITE8528的兼容,后期的开发板教程是基于ITE8987的demo工程代码,ITE8987和ITE8528两款芯片在两款芯片使用的功能相同的情况下,可以直接使用同一套代码(ITE8987 Demo工程)编译出来的固件,运行时不会有什么区别。前一段时间没有更新EC专栏,主要在和祥哥完成开发板相关的设计,现在开发板的初期原理图已经完成了,现阶段在完成元器件相关的选型,因为开发板上预留原创 2022-06-09 22:16:38 · 1182 阅读 · 7 评论 -
99.嵌入式控制器EC实战 EC开发板制作
准备开发一块EC的开发板,该开发板将会包含以下功能:GPIO接口,里面将包含5个按键(模拟开关机按键)、5个LED(模拟指示灯),一个霍尔传感器(模拟笔记本开合盖);UART接口,一路用于调试EC;SMBUS接口,1路用于充放电管理、一路用于温度检测;PWM接口,4路PWM用于模拟控制风扇转速和屏幕背光亮度;TACH接口,用于侦测风扇风速;ADC接口,用于侦测各路电压大小;键盘接口,用于矩阵键盘;PS/2接口,用于触摸板;初步这么打算,预计六月低打板,现在征求各位粉丝的建议,看还有什么接口原创 2022-05-24 22:33:48 · 1014 阅读 · 14 评论 -
15.嵌入式控制器EC实战 PWM开发概述
文章目录1. PWM控制相关引脚介绍1.1 8路PWM(PWM0--PWM7)2. PWM控制相关寄存器介绍2.1 Channel 0 Clock Prescaler Register (C0CPRS)2.2 Channel 4 Clock Prescaler Register (C4CPRS)和NChannel 4 Clock Prescaler MSB Register (C4MCPRS)2.3 Cycle Time Register i (CTRi) (i为0到3)2.4 PWM Duty Cycle原创 2022-05-23 09:00:00 · 1310 阅读 · 0 评论 -
14.嵌入式控制器EC实战 SMBus读取电池信息并控制充放电
文章目录1.充放电芯片初始化2.智能电池初始化3.智能电池内部信息读取命令4.充放电管理芯片内部寄存器5.充放电逻辑控制5.1电池充电逻辑5.2电池放电逻辑在EC中,除了使用SMBus读取温度传感器信息外,SMBus的另外一个用途是笔记本智能充放电管理,这路SMBus会与控制充放电的芯片和智能电池连接起来,通过读取智能电池的状态来控制充放电芯片对智能电池进行充放电管理,以电池充电管理芯片ISL88731CHRTZ-T为例进行介绍,具体的连接方式如下所示:EC的同一路SMBus下挂在了两个从设备,分别是原创 2022-05-17 12:36:56 · 3755 阅读 · 5 评论 -
13.嵌入式控制器EC实战 SMBus读取温度传感器信息
文章目录EC通过SMBus获取ADM1032温度传感器信息传感器地址:ADM1032温度传感器寄存器信息:读取温度过程EC通过SMBus获取ADM1032温度传感器信息ADM1032是一个双通道数字温度计和低于/过温报警,用于pc和热管理系统。从上述两图中,我们可以得知在EC的同一SMBus总线下下挂了两颗温度传感器芯片,两颗芯片的区别有两点:传感器所处的位置不同,一般温度传感器会布在需要温控的位置,主要是在CPU和GPU的附件,而这里是布置在CPU和内存的附件,这里需要根据具体的主板来,这里原创 2022-05-14 20:56:14 · 2017 阅读 · 0 评论 -
12.嵌入式控制器EC实战 SMBus概述
文章目录SMBus概述ACPI规范中的函数返回值含义SMBus.h中的宏定义含义EC中SMBus各个读写函数分析bRWSMBus读写函数在嵌入式控制器EC中,SMBus的起到的作用有两个,第一个是通过SMBus读取智能电池中的相关信息,第二个则是通过SMBus总线读取CPU、GPU或者主板上其他位置的温度传感器的温度信息。本文先大体介绍一下SMBus总线在EC中的作用,后面还有文章再详细介绍上述两个功能,以及SMBus是如何将读取到的信息上报给操作系统或者BIOS的。SMBus概述EC中的SMBus是原创 2022-05-12 22:17:31 · 2374 阅读 · 9 评论 -
11.嵌入式控制器EC实战 KBC矩阵键盘Keyboard开发流程
文章目录笔记本矩阵键盘概述矩阵键盘的扫描方式行列扫描方式逐行逐列扫描方式EC中矩阵键盘是如何扫描并得到码值的(代码分析)笔记本矩阵键盘概述在EC中支持两种形式的键盘,一种是PS/2接口的键盘,这种键盘几乎已经被USB接口的键盘所取代,所以PS/2接口的键盘不在我们的讨论范围。另一种键盘则是矩阵键盘,也是笔记本电脑的内置键盘,该键盘类似于学习单片机时使用的4*4的那种键盘,笔记本使用的矩阵键盘有三种规格,分别是16*8、17*8和18*8。16、17和18代表着该款键盘的列数,8代表着键盘的行数,我们这原创 2022-05-06 14:04:19 · 3183 阅读 · 10 评论 -
10.嵌入式控制器EC实战 GPIO开发流程
文章目录1.General Control Register (GCR),通用控制寄存器,地址0x1602.GPDRA—GPDRJ端口数据寄存器组(共10组)3.Port Control n Registers (GPCRn, n = A0-I7),端口控制寄存器4.GPIO端口编程指导编程步骤端口初始化使用InitGPIOReg数据结构初始化所有端口默认工作模式读取输入引脚的值(STATE_ACin()):IT8502中各个引脚的描述见下表所示:在嵌入式控制器EC的IT8502主控芯片中,通过芯片的原创 2022-05-05 11:00:16 · 2003 阅读 · 2 评论 -
9.嵌入式控制器EC实战 操作系统或BIOS通过KBC(0x60/0x64)和PMC(0x62/0x66)对EC ram进行读写
文章目录一、EC RAM是什么?二、KBC键盘控制器0x60/0x64端口三、PMC电源管理通道0x62/0x66端口四、EC ram的详细读写过程(结合代码)读操作:写操作:总结前言:本文介绍操作系统或BIOS通过LPC的KBC(键盘控制器)的0x60/0x64端口和PMC(电源管理通道)的0x62/0x66端口对EC ram空间进行读写,也即介绍了操作系统或BIOS与EC是如何通信方式的。一、EC RAM是什么?EC提供256字节的可被系统读写的RAM空间,EC的资源(包括电池状态信息、EC版本原创 2022-04-30 23:08:58 · 5093 阅读 · 4 评论 -
8.嵌入式控制器EC实战 LPC(Low Pin Count)通信总线
文章目录前言一、LPC是什么?二、通信协议1.通信概述LAD[3:0]STARTCycle Type/Direction(CYCTYPE+DIR)SizeADDR/ChannelTAR(Turn-around)SyncSync Timeout三、通信实例(逻辑分析仪查看波形)1.I/O Read波形图2.I/O Write波形图3.time out波形图总结前言嵌入式控制器EC中最重要的也是必不可少的一部分就是LPC通信总线,LPC是CPU和嵌入式控制器EC之间的通信总线,最少只需要7根数据线便可以实现原创 2022-04-27 22:47:19 · 3097 阅读 · 3 评论 -
7.嵌入式控制器EC实战 ACPI规范中的电源管理通道PMC(Power Management Channel)
文章目录前言一、电源管理通道PMC概述二、使用步骤1.引入库2.读入数据总结前言在EC中的电源管理通道是定义在ACPI规范中的,是用于主机处理器和嵌入式控制器EC中的通信通道。一、电源管理通道PMC概述电源管理通道提供了PMDIR, PMDOR, PMCMDR和PMSTR四个寄存器它用于Host与EC两端的通信。Host通过写入数据到PMDIR中,EC通过读取Host写入PMDIR中的数据来完成Host->Ec端的通信。EC通过写入数据到PMDOR中,Host通过读取EC写入PMDOR中的数据原创 2022-05-08 17:12:55 · 3175 阅读 · 1 评论 -
6.嵌入式控制器EC学习 嵌入式控制器EC中的PS/2触摸板的通信过程
文章目录1、PS/2相关寄存器PS/2 Control Register ,用于配置PS/2通道的工作模式PS/2 Interrupt Control Register ,用于开关PS/2通道中断PS/2 Status Register,状态寄存器,包含了通道在数据传输过程中的实时状态。PS/2 Data Register 数据寄存器,在接收模式时,该寄存器用于接收PS/2外设的数据。在传输模式时,该寄存器中的值用于发送到外设。2、通信过程:分析一下host—>device分析一下device—>原创 2022-04-25 22:52:45 · 1673 阅读 · 2 评论 -
5.嵌入式控制器EC学习 PS/2协议
文章目录前言一、PS/2接口协议二、外设发送数据给主机三、主机发送数据给外设总结前言首先了解一下PS/2协议,PS/2是在较早之前,用于鼠标、键盘等设备。一般情况下,PS/2接口的鼠标为绿色,键盘为紫色。在现在的电脑主板上几乎不再提供PS/2接口供用户使用,现在的键盘鼠标设备基本上都是使用USB接口。那么为什么在EC中还预留有PS/2接口呢,可以很肯定的告诉你,现在的用途只有一个,为笔记本的触摸板提供接口。那么又有人会说了,为什么不适用USB的触摸板呢,其实把触摸板连接在EC上的目的就是为了节省主板的一原创 2022-04-21 22:22:20 · 2124 阅读 · 0 评论 -
5.嵌入式控制器EC学习,Service_SEND函数
先直接上源码,源代码在CORE_HOSTIF.C中/* ---------------------------------------------------------------------------- * FUNCTION: Service_SEND * * Send data from the scanner keyboard or from multibyte command responses to * the Host. * * Send scan codes from s原创 2021-08-27 21:27:14 · 1128 阅读 · 4 评论 -
4. 服务函数剖析(Service_PCI)(60/64端口)(二)
文章目录一、何时会进入Service_PCI服务函数?二、Service_PCI服务函数做了什么?1.2.读入数据总结一、何时会进入Service_PCI服务函数?如下图所示,在CORE_MEMORY.H中,Service寄存的的Bit0即为Service_PCI服务函数出发的标志位,当该位置位时,将执行Service_PCI函数,该位清零时,不执行Service_PCI服务函数。Service寄存的的Bit0(F_Service_PCI)何时置位?EC端IBF置位时:当Host向KBC接口(原创 2021-11-21 16:36:36 · 2804 阅读 · 4 评论 -
3.嵌入式控制器EC学习,源码框架(60/64端口)(一)
服务函数剖析上一篇讲到while循环会一直查询十六个标志位是否满足要求,一旦其中某个标志位为1时,程序将会执行相应的服务函数,而执行服务函数是通过函数指针(service_table[ _R1 ])();来实现的。接下来我们分别来看看这十六个服务函数分别包含了哪些内容。16个函数的函数名如下:const FUNCT_PTR_V_V code service_table[16] ={ // Hi-Level Service Service_PCI, // Host 6原创 2021-07-07 22:38:18 · 3804 阅读 · 1 评论 -
2.嵌入式控制器EC学习,源代码框架
1.嵌入式控制器(Embedded Controller,EC)编译环境搭建@TOC欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱原创 2021-07-05 21:36:13 · 2300 阅读 · 0 评论 -
1.嵌入式控制器EC学习,编译环境搭建
工欲善其事,必先利其器。在学习EC相关知识之前,首先需要完成EC代码编译环境的搭建,需要如下内容:Keil C51(用于EC中C代码的编译器环境) EC源代码,我们使用从网上可以下载到的 ITE_V12.4_Update 版的代码为例进行学习 代码编辑器,这个可以根据自己的习惯选择,VS Code或者Source Insight等Keil C51下载地址:http://www.downcc.com/soft/307131.html下载完成后请进行破解EC源代码...原创 2021-07-04 15:47:46 · 3378 阅读 · 0 评论 -
EC中的QEvent(SCI中断)
文章目录前言一、QEvent(SCI中断)是什么?二、查询事件过程前言SCI中断信号是由EC的PMC电源管理通道产生,通过EC芯片的SCI引脚发送到CPU的SCI引脚。中间一般接有电平转换芯片。一、QEvent(SCI中断)是什么?SCI(System Control Interrupt,系统控制中断)是一个系统中断,由硬件用来通知操作系统ACPI事件。如上图所示便是SCI信号,在EC的代码中就是将SCI对应的输出引脚拉高一段时间后再拉低。二、查询事件过程当EC检测到一个需要操作系统或BI原创 2022-05-05 14:53:14 · 3188 阅读 · 0 评论 -
Host是如何与EC通信的(BIOS通过ACPI协议对EC RAM进行读写)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、EC RAM是什么?二、使用步骤1.高级配置和电源接口(ACPI)规范2.EC RAM读写过程总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、EC RAM是什么?EC提供256字节的可被系统读写的RAM空间,EC的资源(包括电池信息、EC版本原创 2021-08-28 21:17:21 · 8499 阅读 · 4 评论 -
嵌入式控制器EC是如何运行起来的
EC的作用在本文中就不谈了,百度里面可以找到很多,反正像笔记本这样的移动设备,都需要EC来做相关的控制,具体可以自己去百度。这里主要介绍EC是如何运行起来的,其实和CPU是如何运行起来的类似,EC中同样是没有固件的,EC的固件一般是保存在外围的一颗Flash存储芯片中,一般称为EC的代码空间(通常为64KB),而这颗Flash芯片则是通过SPI串口线连接在EC的处理器上,EC上电后,处理器会自动通过SPI串口引脚从Flash存储芯片中取出固件,并按照相应的规则保存在EC的RAM中,到这里EC终于拿到了可原创 2020-12-29 17:26:26 · 1928 阅读 · 8 评论 -
EC中的QEvent
当EC检测到一个需要host注意的事件时,EC会将EC的状态寄存器的SCI_EVT置位,EC会通过引脚ECSCI向host发送一个SCI(System Control Interface)中断,其实就是通过一个脉冲来实现。此时EC等待host的一个查询命令QR_EC (0x84)。当host检测到SCI,并查询到EC的状态寄存器的SCI_EVT置位时,host向EC发送一条查询,命令QR_EC (0x84),EC收到host的查询指令后会返回一个0~255之间的一个整数给host,这个整数值用来通知host原创 2020-12-16 11:13:39 · 2265 阅读 · 0 评论 -
Host是如何与EC通信的
EC中有三个寄存器,分别为状态寄存器EC_SC、命令寄存器EC_SC和数据寄存器EC_DATA。而状态寄存器和命令寄存器同属于一个寄存器,这几个寄存器遵循着ACPI EC规范。host可以根据ACPI协议规范来与EC进行通信。以下是个寄存器的详细介绍。EC状态寄存器(EC_SC(R)),该寄存器是一个只读寄存器,它反映了此时EC接口的状态。下图为该寄存器表。EC状态寄存器表中各位的具体含义:OBF(Output Buffer is Full),该状态位置1...原创 2020-12-16 10:38:23 · 3154 阅读 · 0 评论