Driver:硬件原理补充(2)

来源:互联网 发布:福州趣读网络 编辑:程序博客网 时间:2024/04/30 05:17

1.回顾调Stk3311光感 

(1)dts配置

stk3311@48 {
compatible = "stk,stk3311";
reg = <0x48>;//addr
interrupt-parent = <&atc260x_sgpio>;
interrupts = <3 4>;//3:gpio口, 4:中断方式
gpios = <&atc260x_sgpio 3 0>;  /* SGPIO0, low active; AUXIN2 */
near_threshold = <100>; //靠近距离
far_threshold = <40>; //松开距离
};

(2)android\device\actions\project\init.modules.rc下添加:

 # insmod light sensor
    insmod /misc/modules/stk3311.ko

(3)\kernel\arch\arm64\configs\project_defconfig 下添加模块开关:

CONFIG_INPUT_STK3311=m

(4)添加源码:

\kernel\drivers\input\misc\stk3311.c

\kernel\drivers\input\misc\Makefile 下添加:obj-$(CONFIG_INPUT_STK3311)+= stk3311.o

\kernel\drivers\input\misc\Kconfig 下添加:config INPUT_STK3311 ......

(5)开机过程中光感能被初始化,后来I2C time out.
原因:I2C脚被复用了(GPIOE2/TWI2_SCLK, GPIOE3/TWI2_SDATA)。本来用作TWI2的脚,被rgbcolor三色     灯用作gpio口了(GPIOE2,GPIOE3).因为GPIO口的优先级 高于 I2C。要想用作I2C,则要把gpio口(GPIOE2,GPIOE3)注释掉。

如下图所示:

       


2.晶振OSC3225与晶体
(1)晶振定义:晶振是有源晶振的简称,又叫振荡器。英文名称是oscillator.
作用:为系统提供基本的时钟信号。通常一个系统共用一个晶振,便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。
封装特征:一般是表贴四个脚的封装,内部有时钟电路,只需供电便可产生 振荡信号。一般分7050、5032、3225、2520几种封装形式。

(2)晶体定义:是无源晶振的简称,也叫谐振器。英文名称是crystal.
特征:一般是直插两个脚的无极性元件,需要借助时钟电路才能产生振荡信号。常见的有49U、49S封装。

晶体晶振用于各模块,各模块所用晶振的频率不一样,如Hdmi模块有晶振27MHz, Wifi(AP6212)模块有晶振26MHz, 主控CPU有晶振24MHz等。
如下图所示:


0 0