1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/openLuat-luatos-soc-air101

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
luat_lcdseg_air101.c 5.5 КБ
Копировать Редактировать Исходные данные Просмотреть построчно История
chenxuuu Отправлено 3 лет назад cd3b4fb
#include "luat_base.h"
#include "luat_lcdseg.h"
#include "wm_include.h"
#include "wm_lcd.h"
#include "wm_regs.h"
#include "wm_pmu.h"
#define LUAT_LOG_TAG "lcdseg"
#include "luat_log.h"
int luat_lcdseg_setup(luat_lcd_options_t *opts) {
tls_lcd_options_t conf = {0};
conf.enable = 1;
switch (opts->bias)
{
case 0:
conf.bias = BIAS_STATIC;
break;
case 2:
conf.bias = BIAS_ONEHALF;
break;
case 3:
conf.bias = BIAS_ONETHIRD;
break;
case 4:
conf.bias = BIAS_ONEFOURTH;
break;
default:
LLOGD("invaild bias %d", opts->bias);
return -1;
}
switch (opts->duty)
{
case 0:
conf.duty = DUTY_STATIC;
break;
case 2:
conf.duty = DUTY_ONEHALF;
break;
case 3:
conf.duty = DUTY_ONETHIRD;
break;
case 4:
conf.duty = DUTY_ONEFOURTH;
break;
case 5:
conf.duty = DUTY_ONEFIFTH;
break;
case 6:
conf.duty = DUTY_ONESIXTH;
break;
case 7:
conf.duty = DUTY_ONESEVENTH;
break;
case 8:
conf.duty = DUTY_ONEEIGHTH;
break;
default:
LLOGD("invaild duty %d", opts->bias);
return -1;
}
switch(opts->vlcd) {
case 27:
conf.vlcd = VLCD27;
break;
case 29:
conf.vlcd = VLCD29;
break;
case 31:
conf.vlcd = VLCD31;
break;
case 33:
conf.vlcd = VLCD33;
break;
default:
LLOGD("invaild vlcd %d", opts->vlcd);
return -1;
}
if (opts->com_number > 4) {
LLOGD("invaild com_number %d", opts->com_number);
return -1;
}
conf.com_number = opts->com_number;
conf.fresh_rate = opts->fresh_rate;
/**
tls_io_cfg_set(WM_IO_PB_25, WM_IO_OPTION6);
tls_io_cfg_set(WM_IO_PB_21, WM_IO_OPTION6);
tls_io_cfg_set(WM_IO_PB_22, WM_IO_OPTION6);
tls_io_cfg_set(WM_IO_PB_27, WM_IO_OPTION6);
*/
if (opts->com_mark & 0x01)
tls_io_cfg_set(WM_IO_PB_25, WM_IO_OPTION6);
if (opts->com_mark & 0x02)
tls_io_cfg_set(WM_IO_PB_21, WM_IO_OPTION6);
if (opts->com_mark & 0x04)
tls_io_cfg_set(WM_IO_PB_22, WM_IO_OPTION6);
if (opts->com_mark & 0x08)
tls_io_cfg_set(WM_IO_PB_27, WM_IO_OPTION6);
// seg 0-5
//if (opts->seg_mark & (1 << 0))
// tls_io_cfg_set(WM_IO_PB_23, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 1))
tls_io_cfg_set(WM_IO_PB_26, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 2))
tls_io_cfg_set(WM_IO_PB_24, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 3))
tls_io_cfg_set(WM_IO_PA_07, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 4))
tls_io_cfg_set(WM_IO_PA_08, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 5))
tls_io_cfg_set(WM_IO_PA_09, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 6))
tls_io_cfg_set(WM_IO_PA_10, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 7))
tls_io_cfg_set(WM_IO_PA_11, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 8))
tls_io_cfg_set(WM_IO_PA_12, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 9))
tls_io_cfg_set(WM_IO_PA_13, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 10))
tls_io_cfg_set(WM_IO_PA_14, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 11))
tls_io_cfg_set(WM_IO_PA_15, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 12))
tls_io_cfg_set(WM_IO_PB_00, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 13))
tls_io_cfg_set(WM_IO_PB_01, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 14))
tls_io_cfg_set(WM_IO_PB_02, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 15))
tls_io_cfg_set(WM_IO_PB_03, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 16))
tls_io_cfg_set(WM_IO_PB_04, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 17))
tls_io_cfg_set(WM_IO_PB_05, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 18))
tls_io_cfg_set(WM_IO_PB_06, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 19))
tls_io_cfg_set(WM_IO_PB_07, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 20))
tls_io_cfg_set(WM_IO_PB_08, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 21))
tls_io_cfg_set(WM_IO_PB_09, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 22))
tls_io_cfg_set(WM_IO_PB_10, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 23))
tls_io_cfg_set(WM_IO_PB_11, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 24))
tls_io_cfg_set(WM_IO_PB_12, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 25))
tls_io_cfg_set(WM_IO_PB_13, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 26))
tls_io_cfg_set(WM_IO_PB_14, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 27))
tls_io_cfg_set(WM_IO_PB_15, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 28))
tls_io_cfg_set(WM_IO_PB_16, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 29))
tls_io_cfg_set(WM_IO_PB_17, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 30))
tls_io_cfg_set(WM_IO_PB_18, WM_IO_OPTION6);
if (opts->seg_mark & (1 << 31))
tls_io_cfg_set(WM_IO_PA_06, WM_IO_OPTION6);
tls_open_peripheral_clock(TLS_PERIPHERAL_TYPE_LCD);
tls_reg_write32(HR_LCD_COM_EN, opts->com_mark);
tls_reg_write32(HR_LCD_SEG_EN, opts->seg_mark);
tls_lcd_init(&conf);
return 0;
}
int luat_lcdseg_enable(uint8_t enable) {
TLS_LCD_ENABLE(enable == 0 ? 0 : 1);
return 0;
}
int luat_lcdseg_power(uint8_t enable) {
TLS_LCD_POWERDOWM(enable == 0 ? 1 : 0);
return 0;
}
int luat_lcdseg_seg_set(uint8_t com, uint32_t seg, uint8_t val) {
if (com > 4)
return -1;
if (seg > 32)
return -1;
tls_lcd_seg_set(com, seg, val == 0 ? 0 : 1);
return 0;
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/openLuat-luatos-soc-air101.git
git@gitlife.ru:oschina-mirror/openLuat-luatos-soc-air101.git
oschina-mirror
openLuat-luatos-soc-air101
openLuat-luatos-soc-air101
v1022.air601