题外话:从Android mmi层转战驱动已达3月,作为方案公司的程序猿,对于MTK的驱动,最大的体会:填表,永无止境;不会填了,请call FAE。所以,时日匆匆,待到年华已逝,填表登峰造极之时,想要转行,不禁长叹:天地苍茫,任我彷徨,但思转行,余生何往... ...ok,闲话休提,获取知识不应只是工作的驱使,咱要有对知识的兴趣和渴望。填表不给机会,咱自己去探索。这三月中最大的收获,莫过于学习了开发一个模块,如何从底层到上层。现以呼吸灯为例,分段记录下开发过程。这里先介绍一下本实验待实现的简单功能和所用到的主要芯片。
本实验所实现的简单功能:应用程序apk界面仅包含一个SeekBar控件,通过拖动进度条来控制Led等的亮度(与调Lcd背光亮度功能类似)。后面几篇会按照“驱动——HAL——JNI——Framework——APP”的开发过程进行叙述。下面先介绍下本实验用到的呼吸灯控制芯片。
一 呼吸灯控制芯片SN3112-12简介
SN3112-12是矽恩微电子的一款12路呼吸灯驱动芯片,工作于2.7V~5.5V,每路单独256级亮度可控。单路最大输出电流可通过一个外部电阻设定,最大限制电流为38mA。主控器件(这里为MT6572)通过I2C接口对其进行编程控制,通过将SDB脚拉低或软件设置可关断芯片,进入低功耗模式(对手持设备,省电必须考虑)。SN3112-12的从地址为0xa8.如下为芯片典型应用电路图:
单路最大输出电流由图中电阻R_EXT控制,计算公式为:
I_max = x * V_EXT / R_EXT
其中x = 58.5,V_ENT = 1.3V。如上,R_EXT = 3.3k欧时,I_max = 58.5 * 1.3 / 3300 = 23mA。
注意:PCB布线时,芯片需原理手机天线放置,防止天线对芯片辐射造成影响。
SN3112-12采用QFN-20封装,其20个引脚说明如下:
芯片其他详细的电气特性请查找芯片datasheet。
二 I2C通信接口简介
芯