本帖最后由 平行电 于 2017-4-20 16:28 编辑
此内容由EEWORLD论坛网友平行电原创,如需转载或用于商业用途需征得作者同意并注明出处
指标如下:
输入电压 | 5V |
输出电流 | 0-420mA |
Vfb | 10-38V |
精度 | 0.23mA |
| |
| |
VCC | 1.2-4.3V |
IOVCC | 1.2-4.3V |
精度 | 0.0117V |
最大输出电流 | 1A |
以上的输出电流和电压均可通过I2C协议控制,主要用途是在调试LCD显示效果的过程中动态设置电流和电压,结合arm板及上位机,将所有条件下的结果遍历,从而获取需要的结果。
方案如下:背光(电流驱动):LP8543(TI)
电压(电压驱动):ANX6588(智安)+AD5282(ADI)
硬件默认配置如下:
PWM | 1 |
EN | 1 |
FAULT | X |
SCL | X |
SDA | X |
ALSI | 0 |
| |
1 | 逻辑1 |
0 | 地 |
x | 悬空 |
软件驱动如下:
BLU配置说明 | | | | | | |
主要使用00H,05-09H寄存器 | 0H | 5H | 6H | 7H | 8H | 9H |
void PowerSet_BLU(U8 Is)
{
/*
LP8543_ID = 0x58;
address function defualt value
0x00 dipaly1_pwm 0xff;
0x01 config1 0x00;
0x02 status 0x00;
0x03 Identification 0xf9;
0x04 output control 0x00;
0x05 display1 current 0x00;
0x06 display2 current 0x00;
0x07 boost control 0x60;
0x08 display2 pwm 0x00;
0x09 config2 0x00;
0x0a als msb 0x00;
0x0b als lsb 0x00;
0x0c fault 0x00;
0x0d temp msb 0x00;
0x0e temp lsb 0x00;
0x72 eeprom_control 0x00;
EEPROM MENMORY MAP
0XA0 ALS A1 0X3D;
0XA1 ALS B1 0X0A;
0XA2 ALS THR 0XFF;
0XA3 ALS A2 0X00;
0XA4 ALS B2 0XFF;
0XA5 ALS THR2 0XFF;
0XA6 ALS A3 0X00;
0XA7 ALS B3 0XFF;
0XA8 PWM A1 0X40;
0XA9 PWM B1 0X00;
0XAA PWM THR1 0XFF;
0XAB PWM A2 0X00;
0XAC PWM B2 0XFF;
0XAD PWM THR2 0XFF;
0XAE PWM A3 0X00;
0XAF PWM B3 0XFF;
0XB0 DISP1_CURRENT 0X62;
0XB1 DISP2_CURRENT 0X62;
0XB2 SLOPE_SEL[1:0] OUTPUT_CONF[1:0] ALS_EN ALSO_POLARITY BOOST_FREQ UVLO_THR 0X21;
0XB3 EN_SLOPE RESERVED TEMP_LIM[1:0] FAULT_SEL[1:0] EN_DISP2_MON DIS_TEMP_CALC 0XA8;
0XB4 RESERVED EN_STANDALONE RESERVED EN_AUTOLOAD BOOST_MODE DISABLE_PS FILTER_TIMER 0X15;
0XB5 PWM_MODE BOOST_UP[1:0] PWM_FREQ[2:0] PSPWM_FREQ[1:0] 0XBC;
0XB6 RESERVED[7:0] 0X00;
0XB7 RESERVED[7:0] 0X00;
0XB8 RESERVED[7:0] 0X00;
0XB9 RESERVED[7:0] 0X00;
0XBA RESERVED[7:0] 0X00;
0XBB RESERVED[7:0] 0X00;
0XBC DIG_COMP[1:0] LED_FAULT_THR[2:0] DRV_HEEDR_CTRL[2:0] 0X90;
0XBD RESERVED IMAX_SEL[1:0] VPROG[4:0] 0X7C;
0XBE ALS_PRESCALE[9:2] 0X7A;
0XBF ALS_PRESCALE[1:0] RESERVED[5:0] 0X00;
*/
U8 LP8543_Adr=0x58;
/*
A0-AF , B4-BB IS NVM AND SRAM
BT_CTL=0;
PWM=0;
READ EE_READY .
change SRAM
EE_UPDATE = 1;
EE_READ = 1;
EE_UPDATE = 0;
EE_READ = 0;
//ANOTHER WAY
EE_READ = 1;
*/
Write_IIC(LP8543_Adr,0x00,0X00);
Write_IIC(LP8543_Adr,0x05,0X00);
Write_IIC(LP8543_Adr,0x06,Is);
Write_IIC(LP8543_Adr,0x07,0x37);
Write_IIC(LP8543_Adr,0x08,0xff);
Write_IIC(LP8543_Adr,0x09,0x08);
Uart_printf("Adr:%x ,data:%x\n",LP8543_Adr,IIC_DATA);
} | Display1 PWM,00灭,ff亮 | Display1 Curren 0-ff(0-60mA) | Display2 Curren 0-ff(0-60mA) | Vfb电压设定,auto_boost=1时Vfb=38V不变,led1-7随设定电流变化,好处省事,坏处效率低,芯片易发热,电源要求高;auto_boost=0时,Vfb为设定电压,led1-7随设定电流变化,好处效率高,芯片发热量小,5V供电,坏处超出设定即会保护,需前期做好验证。 | Display2 PWM,00灭,ff亮 | Current设定选择,可以使用出厂设定(EEPROM),也可以使用SRAM(实时设定),CODE中都是使用SRAM |
void Write_IIC(U8 slvaddr,U8 addr,U8 data)
{
rIICCON = ~0x10;
rIICSTAT = (1<<4);
rIICDS = slvaddr;
rIICSTAT = 0xF0;
while((rIICCON & 0x10)==0);
rIICDS = addr;
rIICCON = 0xAF;
while((rIICCON & 0x10)==0);
rIICDS = data;
rIICCON = 0xAF;
while((rIICCON & 0x10)==0);
while(rIICSTAT & 1);
rIICSTAT = 0xD0; ′
rIICCON = 0xAF;
Delay(3);
Uart_printf("Adr:%x,Reg:%x,data:%x\n",slvaddr,addr,data);
} | | | | | | |
ANX6588是一款模拟IC,这里搭了ADI的数字电阻,使用方法同样是用I2C写值,参考电路在附件中,原理图出了点状况,带有公司的水印,所以这里只能截图了,其余部分我放设计图吧。
BLU部分