这两个功能,我也是看文档来的,前面该写的函数几乎都写了,这一节主要说一下我理解的,怎么实现蜂鸣器的功能以及LED的功能,这时候就体现这个看文档的重要性了。
Beep的实现
前面我们说了这个硬件监控的一些功能实现以及逻辑设备的读写,有了这个基础,那么我们同样可以进行蜂鸣器的功能实现,那么蜂鸣器在哪个逻辑设备呢,这里必须说明,这些SIO的功能必须根据文档来,如果手上没有文档是比较难理解的,通过IT8738芯片文档,我们发现一张图,如下图,有没有发现蜂鸣器和LED都在这,这个功能是什么功能呢,GPIO Function。
ok,这个功能位于07逻辑设备,所以要访问他们,我们就得选择07逻辑设备,我们再来看,这里有5个引脚对应的寄存器的索引,分别是25h,26h,27h,28h,29h,别问我怎么知道的。。。看文档
?也就是说我们要操作beep,对应的就是操作28h的索引,操作干嘛,给里面的值写1,也就是使用逻辑设备中的写,在0x28的index,写一个数据0x01,这样我们就选定了蜂鸣器,选定之后继续看图,怎么样才能从GPIO PIN的信号到达beep,我们肯定需要打通中间环节,看文档,操作4对应的Index就行,比如B3,BB,C3,CB,写零或者写1.
?完成上述的操作之后,我们发现在F6的地方还有个和蜂鸣器有关的:
?翻译过来就是硬件监控蜂鸣器报警pin映射寄存器,而且还让我们参考Table 8-18,这个表就是引脚对应的map值,什么G45啊,G46啊啥的,估计就是看硬件怎么接的怎么选了,上面的逻辑设备不知道有没有写的先后顺序,写完后估计只是打通了,具体的蜂鸣还得在EC中写IO space:
?在5C默认60h,这个肯定是要enable起来的,怎么写值估计得实际操作,后面三个给我的意思是不要在某个值或者超过哪些值,蜂鸣器就蜂鸣,?比如温度事件,设定最高和最低的值,查过这个高的值,蜂鸣器就开始报警了,我的理解是这样的。当然,文章仅做笔记用,如果有什么错误的还请指正哈。
?LED灯的实现
这个灯实现前面其实和蜂鸣器的功能差不多,只是蜂鸣器要操作F6,那么LED呢,同样根据相应的硬件设计操作下面的索引:
?LED估计只要操作这两个就ok,比如LED的开关,或者LED的闪烁,具体以实际为准。
额外的话题:
在GPIO的逻辑设备中,还有一个我觉得也是比较重要的,那就是看门狗,看文档说明,看门狗会进行计数,从某个数开始到0,当喂狗停止的时候,机器进行系统复位,在喂狗期间,我们可以去写这个值,使继续进行喂狗,同时,也会有一些事件进行响应,包括CIR中断、键盘中断、鼠标中断,可以重新加载将非零值输入WDT。可以启用或禁用每个事件对WDT的影响,通过WDT控制寄存器中的位。无论时间计数器中的值是多少,主机都可以强制通过向WDT配置寄存器的第1位写入“1”来发生超时。
Smart Fan就不重写了,后续更新在之前的文章中。。。。
|