USMI

Объявление

12/06/2025 (Administration) - Spamming for the purpose of boosting messages will be punished with a ban. Спам с целью накрутки сообщений будет караться баном.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » USMI » MCU, SoC, CPU Микроконтроллеры » Вопросы по работе с JL SDK. Настройка, конфигурирование....


Вопросы по работе с JL SDK. Настройка, конфигурирование....

Сообщений 301 страница 320 из 329

301

А есть ли настройка (или модуль), которая в значительной степени облегчает прошивку и делает задержку в передаче звука от источника минимальной ?

302

Osya Trutkov написал(а):

которая в значительной степени облегчает прошивку и делает задержку в передаче звука от источника минимальной ?

не совместимые желания)
Используйте стандартный EDR он же A2DP (SBC/AAC)

Подпись автора

USMicro(R) (C)2025

303

BIOS написал(а):

А там её нету. То просто конфиги без UI  и прочего. Просто запустить бат файл.
Вес зависит от подключенных кодеков/декодеров/функций/библиотек

Всё таки есть,  #define CONFIG_SOUNDBOX_FLASH_256K Делает прошивку меньше, и закидывает ее в ту папку. Правда звука нет, но с этим надо разобраться)))

304

Osya Trutkov написал(а):

Всё таки есть,  #define CONFIG_SOUNDBOX_FLASH_256K Делает прошивку меньше, и закидывает ее в ту папку. Правда звука нет, но с этим надо разобраться)))

Офигеть, удивительное рядом)
Это в субконфиге?
Нужно вынести эти настройки в основнык конфиги)
Вообще крайне не удобные сдк. Огромные.
На сколько вес уменшился?

Подпись автора

USMicro(R) (C)2025

305

Прям в board_ac696x_demo_cfg.h вписал, найдя это в каких-то старых СДК. У меня уменьшилось на пару десятков килобайт, возможно из-за другой озвучки... Дальше не копал.

Отредактировано Osya Trutkov (2025-06-05 19:26:15)

306

В 695Х сдк не нашел сохранения настройки языка UI, дописал пару строк кода. Может кому пригодится.

код
Код:
apps\soundbox\ui\lcd\ui_sys_param_api.c

typedef struct _UI_SYS_PARAM {
    u16 cur_auto_close_time;        //The currently set shutdown time
    struct SYS_INFO sys_infomation; //System Information
    struct UI_DISPLAY display;      //Display information
    u8 language;//amateur
} UI_SYS_PARAM;

void set_sys_param_default(void)
{
    __this->display.backlight_time = 0;
    __this->display.backlight_brightness = 0;
    __this->cur_auto_close_time = 0;
    __this->language = English;//amateur
    auto_power_off_timer_close();
}

void set_language(u8 language)
{
    __this->language = language;
    sys_param_write2vm();
}

u8 get_language(void)
{
    return __this->language;
}

apps\soundbox\ui\lcd\STYLE_02\system_action.c

static int  language_enter_callback(void *ctr, struct element_key_event *e)
{
    struct ui_grid *grid = (struct ui_grid *)ctr;
    printf("ui key %s %d\n", __FUNCTION__, e->value);
    int sel_item;
    switch (e->value) {
    case KEY_OK:
        sel_item = ui_grid_cur_item(grid);
        if (sel_item >= 0 && sel_item < sizeof(table_system_language) / sizeof(table_system_language[0])) {
            ui_language_set(table_system_language[sel_item]);
            set_language(table_system_language[sel_item]);//amateur
            ui_hide(SYS_LANGUAGE);
        } else {
            ui_hide(SYS_LANGUAGE);
        }

        return false;
    default:
        return false;
    }
    return TRUE;
}

apps\soundbox\task_manager\power_on\power_on.c

static void  lcd_ui_power_on()
{
#if (TCFG_SPI_LCD_ENABLE)
    int logo_time = 0;
    UI_SHOW_WINDOW(ID_WINDOW_POWER_ON);

    ui_language_set(get_language());//amateur   

    sys_timeout_add(NULL, lcd_ui_power_on_timeout, 1000);
#endif
}

307

Does anyone know how to configure the AC6965A to have the highest volume when starting up? I have configured it in the AC696X DEMO SDK and it is running, but the sound is too small, I have to press the volume up button all the time, very inconvenient.

308

Dang Tien Thinh написал(а):

Does anyone know how to configure the AC6965A to have the highest volume when starting up? I have configured it in the AC696X DEMO SDK and it is running, but the sound is too small, I have to press the volume up button all the time, very inconvenient.

I don't understand your problem. When I increase the volume, it saves the volume and stays the next time I turn it on. What do you mean, "I have to press the volume up button all the time?"

309

I think, he mean "starting volume" aka default vol.

Подпись автора

USMicro(R) (C)2025

310

В 695Х сдк нужно изменить кое-что иначе не работает нормально переключение EQ из меню. В режиме ФМ EQ в UI не предусмотрен, но можно добавить.

Код:
apps\soundbox\ui\lcd\STYLE_02\music_action.c

#if TCFG_EQ_ENABLE
            eq_mode_set(sel_item);
            ui_pic_show_image_by_id(MUSIC_EQ, sel_item);//добавить

#endif

cpu\br23\audio_effect\eq_config.c

int eq_mode_set(EQ_MODE mode)
{
    eq_mode = mode;//добавить

Отредактировано amateur (2025-08-06 02:43:58)

311

BIOS написал(а):

Tôi nghĩ ý anh ấy là "âm lượng ban đầu" hay còn gọi là âm lượng mặc định.

yeah i mean default volume i want max

312

amateur написал(а):

I don't understand your problem. When I increase the volume, it saves the volume and stays the next time I turn it on. What do you mean, "I have to press the volume up button all the time?"

I mean default volume, I want max.

313

Dang Tien Thinh написал(а):

I mean default volume, I want max.

in your config:
#define SYS_VOL_TYPE            VOL_TYPE_ANALOG
https://upforme.ru/uploads/001b/ca/8a/24/t401382.png

314

amateur написал(а):

trong cấu hình của bạn:
#define SYS_VOL_TYPE VOL_TYPE_ANALOG

i tried it and it worked, thank you

315

В 6956Х сдк удаление станций ФМ из меню тоже не доделано.

код
Код:
apps\soundbox\task_manager\fm\fm_api.c

void fm_delete_freq()
{
    if (!__this || __this->scan_flag) {
        return;
    }
    delete_fm_point(__this->fm_freq_cur);

    if (__this->fm_total_channel > 0)
    {
        __this->fm_total_channel--;
            if (__this->fm_freq_channel_cur > 1)
        __this->fm_freq_channel_cur--;
    }
    if (__this->fm_total_channel == 0)
        __this->fm_freq_channel_cur = 0;
    __set_fm_station();
    __fm_ui_cur_station();
}

apps\soundbox\task_manager\fm\fm_rw.c

void delete_fm_point(u16 fre)
{
    u16 i, k;
    FM_INFO fm_info = {0};
    fm_read_info(&fm_info);
    i = fre / 8;
    k = fre % 8;
    if (fm_info.dat[i] & BIT(k))
    {
        fm_info.dat[i] &= (~BIT(k));
        fm_info.total_chanel--;

        if (fm_info.curChanel > 1)
            fm_info.curChanel--;
        if (fm_info.total_chanel == 0)
            fm_info.curChanel = 0;
        fm_save_info(&fm_info);
    }
}

apps\soundbox\ui\lcd\STYLE_02\fm_action.c

static int fm_menu_list_onkey(void *ctr, struct element_key_event *e)
{
    struct ui_grid *grid = (struct ui_grid *)ctr;
    int sel_item = 0;
    printf("ui key %s %d\n", __FUNCTION__, e->value);
    switch (e->value) {
    case KEY_OK:
        sel_item = ui_grid_cur_item(grid);
        switch (sel_item) {
        case 0:
            app_task_put_key_msg(KEY_FM_SCAN_ALL, 0);
            ui_hide(FM_MENU_LAYOUT);
            break;
        case 1:
            fm_delete_freq();
            ui_hide(FM_MENU_LAYOUT);
            break;
        case 2:
            ui_hide(FM_MENU_LAYOUT);
            break;
        }
        break;
    default:
        return false;
    }
    return false;
}

316

В этом же 695Х сдк ID_WINDOW_POWER_ON (welcome) page5 с первого раза не показывается, видимо что-то к этому моменту еще недоинициализировалось, и в терминале так:

Код:
window_show 5

open_resouece_file...

open_resfile: mnt/sdfile/res/JL.res

open_str_file: mnt/sdfile/res/JL.str

пока просто прячу и еще раз показываю

Код:
static void  lcd_ui_power_on()
{
#if (TCFG_SPI_LCD_ENABLE)
    int logo_time = 1000;
    UI_SHOW_WINDOW(ID_WINDOW_POWER_ON);

    UI_HIDE_WINDOW(ID_WINDOW_POWER_ON);
    UI_SHOW_WINDOW(ID_WINDOW_POWER_ON);


    sys_timeout_add(NULL, lcd_ui_power_on_timeout, logo_time);
    ui_language_set(get_language());
#endif
}

317

Все тот же 695Х сдк. Доделал настройку подсветки дисплея и сделал отдельный файл для ST7565

code
Код:
apps\soundbox\ui\lcd\ui_sys_param_api.c

//Backlight brightness
static const char table_system_lcd_value[] = {
    100,
    60,
    20,
};

void set_backlight_brightness(u16 brightness)
{
    if (brightness >= sizeof(table_system_lcd_value) / sizeof(table_system_lcd_value[0])) {
        return;
    }
    __this->display.backlight_brightness = brightness;
    lcd_backlight_ctrl(get_backlight_brightness());//Add
    sys_param_write2vm();
}

cpu\br23\ui_driver\lcd_spi\spi_lcd_st7565.c

#include "includes.h"
#include "app_config.h"
#include "ui/ui_api.h"
#include "system/includes.h"
#include "system/timer.h"
#include "asm/spi.h"

#if TCFG_LCD_ST7565_ENABLE

#define USED_SW_CS 0
#define USED_SW_RESET 0

void lcd_spi_dma_send_wait(u8 *map, u32 size);

static void ST7565_BackLightCtrl(u8 on)
{
#if (TCFG_BACKLIGHT_PWM_MODE == 1)
    //Note: Duty cannot be greater than PRD, and PRD and duty are non-standard nonlinear.
    //It is recommended to use an oscilloscope to adjust
    extern int pwm_led_output_clk(u8 gpio, u8 prd, u8 duty);
    if (on) {
        pwm_led_output_clk(TCFG_BACKLIGHT_PWM_IO, 100, on);
    } else {
        pwm_led_output_clk(TCFG_BACKLIGHT_PWM_IO, 100, 0);
    }
#else
    if (on) {
        lcd_bl_h();
    } else {
        lcd_bl_l();
    }
#endif

}

static void delay_ms(unsigned int ms)
{
    unsigned int a;
    while (ms) {
        a = 80;
        while (a--);
        ms--;
    }
    return;
}

static void ST7565_Write_Cmd(u8 dat)
{
    lcd_cs_l();
    lcd_rs_l();
    spi_dma_send_byte(dat);
    lcd_cs_h();
}

static void ST7565_Write_Data(u8 dat)
{
    lcd_cs_l();
    lcd_rs_h();
    spi_dma_send_byte(dat);
    lcd_cs_h();
}

void ST7565_Set_Pos(u8 x, u8 page)
{
    ST7565_Write_Cmd(0xB0 + page);
    ST7565_Write_Cmd(0x10 + (x >> 4));
    ST7565_Write_Cmd(0x00 + (x & 0x0f));
}

static void ST7565_Set_Draw_Area(int xs, int xe, int ys, int ye)
{
    ST7565_Set_Pos(xs, (ys / 8) % 8);
}

static void ST7565_Write_PAGE(char *map, u8 page_star, u8 page_len)
{
    u8 page;
    for (page = page_star; page < page_star + page_len; page++) {
        ST7565_Set_Pos(0, page);
        lcd_cs_l();
        lcd_rs_h();
        lcd_spi_dma_send_wait(map, 128);
        map += 128;
        lcd_cs_h();
    }
}

static void ST7565_Write_Map(char *map, int size)
{
    u8 page;
    u8 col;
    for (page = 0; page < 8; page++) {
        ST7565_Set_Pos(0, page);
        lcd_cs_l();
        lcd_rs_h();
        lcd_spi_dma_send_wait(map, 128);
        map += 128;
        lcd_cs_h();
    }
}

void ST7565_Clear(void)
{
    u8 i, n;
    for (i = 0; i < 8; i++) {
        ST7565_Set_Pos(0, i);
        for (n = 0; n < 128; n++) {
            ST7565_Write_Data(0x00);
        }
    }
}

static void ST7565_Init(void)
{
    printf("ST7565_Init...\n");

#if USED_SW_RESET
    lcd_reset_h();
    delay_ms(1);//?
    lcd_reset_l();
    delay_ms(1);//?
    lcd_reset_h();
#endif
    delay_ms(100);//?

    ST7565_Write_Cmd(0xE2);// soft reset
    ST7565_Write_Cmd(0xAE);// display off//
    ST7565_Write_Cmd(0x40);// set display start line to 0

    //normal screen orientation
    //ST7565_Write_Cmd(0xA1);// ADC set to reverse
    //ST7565_Write_Cmd(0xC0);// common output mode

    //flip screen
    ST7565_Write_Cmd(0xA0);// ADC set to reverse
    ST7565_Write_Cmd(0xC8);// common output mode

    ST7565_Write_Cmd(0xA6);// display normal, bit val 0: LCD pixel off.
    ST7565_Write_Cmd(0xA2);// LCD bias 1/9
    ST7565_Write_Cmd(0x2F);// all power  control circuits on

    ST7565_Write_Cmd(0xF8);// set booster ratio to 4x
    ST7565_Write_Cmd(0x00);

    ST7565_Write_Cmd(0x25);// set V0 voltage resistor ratio to large

    ST7565_Write_Cmd(0x81),// set contrast
    ST7565_Write_Cmd(0x26);

    ST7565_Clear();
    ST7565_Write_Cmd(0xAF);// display on
    ST7565_Set_Pos(0, 0);
}

#define LCD_BUFFER_SIZE (128*64/8)

u8 LCDBuff[8][128];

static void ST7565_EnterSleep()
{
    ST7565_Write_Cmd(0xAE);// display off
}

static void ST7565_ExitSleep()
{
    ST7565_Write_Cmd(0xAF);// display on
}

REGISTER_LCD_DRIVE() = {
    .name = "ST7565",
    .lcd_width = 128,
    .lcd_height = 64,
    .color_format = LCD_COLOR_MONO,
    .interface = LCD_SPI,
    .column_addr_align = 1,
    .row_addr_align = 1,
    .dispbuf = LCDBuff,
    .bufsize = LCD_BUFFER_SIZE,
    .initcode = NULL,
    .initcode_cnt = 0,
    .Init = ST7565_Init,
    .WriteComm = ST7565_Write_Cmd,
    .WriteData = ST7565_Write_Data,
    .WriteMap = ST7565_Write_Map,
    .SetDrawArea = ST7565_Set_Draw_Area,
    .Reset = NULL,
    .BackLightCtrl = ST7565_BackLightCtrl,
    .WritePAGE = ST7565_Write_PAGE,
    .EnterSleep = ST7565_EnterSleep,
    .ExitSleep = ST7565_ExitSleep,
};

#endif

318

Раз пошла такая пьянка, добавлю от себя - режим сна в последнем офф сдк  ac695n_soundbox_sdk-sdk_3.1.0 с косяком...
Когда мы переходим в  power_set_soft_poweroff(); то у нас потребление порядка 200 uA.
https://upforme.ru/uploads/001b/ca/8a/2/t612693.jpg
Нужно заменить на эту библиотеку от следующей не официальной версии сдк(хз почему они так её обозвали, толи не доделали релиз, толи забили... Но продукцию они лепят из того же 3.1.0)
cpu lib
Я проверил - библиотека работает, в  power_set_soft_poweroff() у нас 1-2uA как положенно по PDF. 1 uA кстати с  WDT на куче портов + включено VDDIO на 3.2v.....
https://upforme.ru/uploads/001b/ca/8a/2/t297153.jpg
Долго искал в чем проблема), долгие пару вечеров дебага ни к чему не привели, и пошел по другому методу...  o.O

Подпись автора

USMicro(R) (C)2025

319

BIOS написал(а):

... Но продукцию они лепят из того же 3.1.0)

Наверное какие нибудь свистки для прикуривателя. Все что с дисплеем сделано не до конца, подключил ST7735 - такие картинки рисует - Малевичу и не снилось.

320

Кто-нибудь пытался сделать свое/изменить UI для 6925Х? В HSC-690x_sdk_V2013 есть DV10.exe но оно похоже было написано в дельфи еще в те времена когда оно не поддерживало юникод и поля там жестко прописаны по китайски, то есть нужно наверное китайскую ос. Еще там есть Designer, но к нему нет папки про которую пишут в мануале. В общем у меня ничего не вышло.


Вы здесь » USMI » MCU, SoC, CPU Микроконтроллеры » Вопросы по работе с JL SDK. Настройка, конфигурирование....