MT6572平台加入呼吸灯功能——控制芯片简介

时间:2021-08-14 15:51:15

简介:这里我们使用了一片SN3112来控制led灯的亮灭,SN3112是一片12路led控制芯片。每路单独256级亮度可控,CPU通过I2C接口对其进行编程控制。通过将SDB脚拉低或者软件设置可关断芯片,进入低功耗模式。

    SN3112寄存器功能列表:

 

地址 名称 功能 默认值
00h 关断寄存器 软件关断SN3112(0x00为关断,0x01为打开) 0x00
04h~0fh PWM控制寄存器 存储12路led灯的pwm亮度值 0x00
13h LED控制寄存器1 存储1~3路led开关状态(BIT3~5) 0x00
14h LED控制寄存器2 存储4~9路led开关状态(BIT0~5) 0x00
15h LED控制寄存器3 存储11~12路led开关状态(BIT0~2) 0x00
16h 数据更新寄存器 更新各寄存器中的数据 xx
17h 复位寄存器 重置各寄存器数据 xx

LED呼吸灯非线性修正

    SN3112内部实现线性256级灰度PWM调光。由于人视觉对亮度的误差,电流线性增加时,视觉上会感到呼吸灯开始时亮度变化快,然后进入饱和状态。故在此使用32级亮度的伽马补偿数据:

C0 C1 C2 C3 C4 C5 C6 C7
0 1 2 4 6 10 13 18
C8 C9 C10 C11 C12 C13 C14 C15
22 28 33 39 46 53 61 69
C16 C17 C18 C19 C20 C21 C22 C23
78 86 96 106 116 126 138 149
C24 C25 C26 C27 C28 C29 C30 C31
161 173 186 199 212 226 240 255
其余具体参数见芯片datasheet,另注:在芯片关断模式时,所有寄存器保持原数据不变。

    MT6572这边,我采用的GPIO模拟I2C通信的方式与SN3112进行通信,其中GPIO102连接SCL叫,GPIO138连接SDA脚,GPIO141连接SDB即使能脚,在dct配置GPIO引脚时要记得进行相关配置。