Программирование МК STM32

 

 

 

Помечено: 

Просмотр 6 сообщений - с 151 по 156 (из 156 всего)
  • Автор
    Сообщения
  • #22326
    A-Soft
    Участник

    chechetkin.v.v@mail.ru
    шлите схему, посмотрим что можно сделать

    #22344
    sabrat
    Участник

    Добрый день. Захотелось ребёнку моему красивую подсветку. Выбрал ленту ws2812. Поскольку на этом сайте давно нахожусь, попробовал скомпилить готовые проекты с этого сайта. Всё работает, с одним НО. Почему то у меня работает половина -1 светодиод. То есть если #define LED_COUNT 300, то у меня работают только 149 светодиодов. У автора всё работает нормально. Лента у меня 60св. м. длинной 5 метров. То есть суммарно 300 светодиодов. При дефайне в проекте 300 работает 149 и какое бы число не ставил соблюдается эта закономерность – Половина минус 1. Если ставлю 601 то работают все.
    Заранее благодарю.

    #22380
    Dan
    Участник

    Добрый день!
    Пытаюсь настроить на STM32F407 работу SNMP агента. Запустить его удалось, а вот привязать свою простенькую базу mib и отправить своё сообщение на snmp-сервер на банальное изменение состояния контакта никак не получается.
    Будут ли такие уроки или может я пропустил какой? Не могу найти нигде хороших примеров.

    #22401
    Vadim_81
    Участник

    Добрый день уважаемые форумчане. Автору уроков огромное спасибо за труды. Проблема в следующем, пытаюсь пересадить модуль rfm69HCW 868 (SX1231H) с адруины на stm(discovery 407), ничего не получается, даже инитить не хочет. Библиотеки инициализации писать самому мозгов не хватает, да и признаться честно, ничего не понимаю в радио. Пробовал библиотеки от lowpowerlab, radiohead. Пытался найти в инете “живой” пример для этого модуля, ничего не вышло, для адруин полно, для stm нету. Автор уроков вроде обещал “пощупать” эту тему, где то видел в коментах, к nrf24 вроде, но к сожалению дальше дело не пошло. Может есть у кого рабочий пример, ну или хотя бы ссылка на ресурс (оконные датчики на хабре не предлагать, тоже не завелся) был бы очень признателен.

    #22402
    A-Soft
    Участник

    я как-то переделывал ардуиновскую библиотеку под STM32. Невеликие там проблемы.
    если вы на своей discovery 407 смогли выполнить несколько уроков NarodStream, тогда пишите chechetkin.v.v@mail.ru

    #22403
    ko062vvs
    Участник

    Добрый день! Нужна помощь. Уже недели 3 мучаюсь.
    Задача: Читать JPG из SD и выводить на ILI9341 с помощью DMA Circular.
    Проблемы в основном с картинками 320*240. Где используется в передаче 3 пакета. с 1 или 2 все норм.
    Моя функция такая:

    void ILI9341_Draw_SDImageJPG(uint16_t x,uint16_t y, const char * fileName)
    {

    if((x >=ILI9341_SCREEN_WIDTH) || (y >=ILI9341_SCREEN_HEIGHT)) return;
    FIL Myfile;
    retSD = f_mount(&SDFatFS, “”, 1);
    retSD = f_open(&Myfile,fileName,FA_READ);
    struct jpeg_decompress_struct cinfo;
    struct jpeg_error_mgr jerr;
    cinfo.err = jpeg_std_error(&jerr);
    jpeg_create_decompress(&cinfo);
    jpeg_stdio_src(&cinfo,&Myfile);
    (void) jpeg_read_header(&cinfo, TRUE);
    (void) jpeg_start_decompress(&cinfo);
    JSAMPARRAY buffer;
    uint16_t row_stride = cinfo.output_width * cinfo.output_components;
    buffer = (*cinfo.mem->alloc_sarray)((j_common_ptr) &cinfo, JPOOL_IMAGE, row_stride, 1);
    uint32_t buf_size, count = 0;
    uint32_t n=cinfo.output_width*cinfo.output_height*2;

    if(n<=65536)
    {
    buf_size = n;
    }
    else
    {
    buf_size = 2;
    for(uint8_t j = 3; j < n/3; j++)
    {
    if(n%j == 0)
    {
    buf_size = n/j;
    break;
    }
    }
    }

    ILI9341_SetAddress(x, y, x+cinfo.output_width-1, y+cinfo.output_height-1);
    while(cinfo.output_scanline < cinfo.output_height)
    {
    (void) jpeg_read_scanlines(&cinfo, buffer, 1);

    for(uint16_t i=0;i<cinfo.output_width;i++)
    {

    frm_buf[count++]= RGB(buffer[0][i*3],buffer[0][i*3+1],buffer[0][i*3+2]) >> 8;
    frm_buf[count++]= RGB(buffer[0][i*3],buffer[0][i*3+1],buffer[0][i*3+2]) & 0xFF;

    if (count >= buf_size)

    {

    HAL_GPIO_WritePin(LCD_CS_PORT, LCD_CS_PIN, GPIO_PIN_RESET);//select
    HAL_GPIO_WritePin(LCD_DC_PORT, LCD_DC_PIN, GPIO_PIN_SET); //data
    dma_spi_cnt = 1;
    HAL_SPI_Transmit_DMA(HSPI_INSTANCE, frm_buf, buf_size-1);
    while(!dma_spi_fl) {}
    dma_spi_fl=0;
    count=0;

    }
    }
    }

    (void) jpeg_finish_decompress(&cinfo);
    jpeg_destroy_decompress(&cinfo);
    retSD = f_close(&Myfile);

    }

    //HAL_SPI_Transmit_DMA(HSPI_INSTANCE, frm_buf, buf_size-1);
    почему я сделал -1 потому что во втором пакете данных идет мусор. С -1 мусора нет но картинка смещена.
    null

  • Автор
    Сообщения
  • #22326

    A-Soft
    Участник
    • Оффлайн

    chechetkin.v.v@mail.ru
    шлите схему, посмотрим что можно сделать

    #22344

    sabrat
    Участник
    • Оффлайн

    Добрый день. Захотелось ребёнку моему красивую подсветку. Выбрал ленту ws2812. Поскольку на этом сайте давно нахожусь, попробовал скомпилить готовые проекты с этого сайта. Всё работает, с одним НО. Почему то у меня работает половина -1 светодиод. То есть если #define LED_COUNT 300, то у меня работают только 149 светодиодов. У автора всё работает нормально. Лента у меня 60св. м. длинной 5 метров. То есть суммарно 300 светодиодов. При дефайне в проекте 300 работает 149 и какое бы число не ставил соблюдается эта закономерность – Половина минус 1. Если ставлю 601 то работают все.
    Заранее благодарю.

    #22380

    Dan
    Участник
    • Оффлайн

    Добрый день!
    Пытаюсь настроить на STM32F407 работу SNMP агента. Запустить его удалось, а вот привязать свою простенькую базу mib и отправить своё сообщение на snmp-сервер на банальное изменение состояния контакта никак не получается.
    Будут ли такие уроки или может я пропустил какой? Не могу найти нигде хороших примеров.

    #22401

    Vadim_81
    Участник
    • Оффлайн

    Добрый день уважаемые форумчане. Автору уроков огромное спасибо за труды. Проблема в следующем, пытаюсь пересадить модуль rfm69HCW 868 (SX1231H) с адруины на stm(discovery 407), ничего не получается, даже инитить не хочет. Библиотеки инициализации писать самому мозгов не хватает, да и признаться честно, ничего не понимаю в радио. Пробовал библиотеки от lowpowerlab, radiohead. Пытался найти в инете “живой” пример для этого модуля, ничего не вышло, для адруин полно, для stm нету. Автор уроков вроде обещал “пощупать” эту тему, где то видел в коментах, к nrf24 вроде, но к сожалению дальше дело не пошло. Может есть у кого рабочий пример, ну или хотя бы ссылка на ресурс (оконные датчики на хабре не предлагать, тоже не завелся) был бы очень признателен.

    #22402

    A-Soft
    Участник
    • Оффлайн

    я как-то переделывал ардуиновскую библиотеку под STM32. Невеликие там проблемы.
    если вы на своей discovery 407 смогли выполнить несколько уроков NarodStream, тогда пишите chechetkin.v.v@mail.ru

    #22403

    ko062vvs
    Участник
    • Оффлайн

    Добрый день! Нужна помощь. Уже недели 3 мучаюсь.
    Задача: Читать JPG из SD и выводить на ILI9341 с помощью DMA Circular.
    Проблемы в основном с картинками 320*240. Где используется в передаче 3 пакета. с 1 или 2 все норм.
    Моя функция такая:

    void ILI9341_Draw_SDImageJPG(uint16_t x,uint16_t y, const char * fileName)
    {

    if((x >=ILI9341_SCREEN_WIDTH) || (y >=ILI9341_SCREEN_HEIGHT)) return;
    FIL Myfile;
    retSD = f_mount(&SDFatFS, “”, 1);
    retSD = f_open(&Myfile,fileName,FA_READ);
    struct jpeg_decompress_struct cinfo;
    struct jpeg_error_mgr jerr;
    cinfo.err = jpeg_std_error(&jerr);
    jpeg_create_decompress(&cinfo);
    jpeg_stdio_src(&cinfo,&Myfile);
    (void) jpeg_read_header(&cinfo, TRUE);
    (void) jpeg_start_decompress(&cinfo);
    JSAMPARRAY buffer;
    uint16_t row_stride = cinfo.output_width * cinfo.output_components;
    buffer = (*cinfo.mem->alloc_sarray)((j_common_ptr) &cinfo, JPOOL_IMAGE, row_stride, 1);
    uint32_t buf_size, count = 0;
    uint32_t n=cinfo.output_width*cinfo.output_height*2;

    if(n<=65536)
    {
    buf_size = n;
    }
    else
    {
    buf_size = 2;
    for(uint8_t j = 3; j < n/3; j++)
    {
    if(n%j == 0)
    {
    buf_size = n/j;
    break;
    }
    }
    }

    ILI9341_SetAddress(x, y, x+cinfo.output_width-1, y+cinfo.output_height-1);
    while(cinfo.output_scanline < cinfo.output_height)
    {
    (void) jpeg_read_scanlines(&cinfo, buffer, 1);

    for(uint16_t i=0;i<cinfo.output_width;i++)
    {

    frm_buf[count++]= RGB(buffer[0][i*3],buffer[0][i*3+1],buffer[0][i*3+2]) >> 8;
    frm_buf[count++]= RGB(buffer[0][i*3],buffer[0][i*3+1],buffer[0][i*3+2]) & 0xFF;

    if (count >= buf_size)

    {

    HAL_GPIO_WritePin(LCD_CS_PORT, LCD_CS_PIN, GPIO_PIN_RESET);//select
    HAL_GPIO_WritePin(LCD_DC_PORT, LCD_DC_PIN, GPIO_PIN_SET); //data
    dma_spi_cnt = 1;
    HAL_SPI_Transmit_DMA(HSPI_INSTANCE, frm_buf, buf_size-1);
    while(!dma_spi_fl) {}
    dma_spi_fl=0;
    count=0;

    }
    }
    }

    (void) jpeg_finish_decompress(&cinfo);
    jpeg_destroy_decompress(&cinfo);
    retSD = f_close(&Myfile);

    }

    //HAL_SPI_Transmit_DMA(HSPI_INSTANCE, frm_buf, buf_size-1);
    почему я сделал -1 потому что во втором пакете данных идет мусор. С -1 мусора нет но картинка смещена.
    null

Просмотр 6 сообщений - с 151 по 156 (из 156 всего)
  • Для ответа в этой теме необходимо авторизоваться.