TOG
-
Постов
510 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные TOG
-
-
Товарищи,
имеется программа для STM32 на Си. Компилятор Keil MDK-ARM, оптимизация отключена.
В программе имеется такой массив нулей и единичек.
uint8_t data[] = {1,1,1,0,0,0,1,0,1,0,1,1,1,0,0,0,1,0,1,0,1,0,1,0 .. и так далее 180 байт всего};
Я решил поискать эту последовательность в файле прошивки и ничего похожего там не нашел.
Как создаются в памяти эти инициализированные переменные при старте программы ? И кто этим занимается ?
-
On 11/21/2022 at 2:17 PM, gerber said:
Попробуйте установить пин 0000.
Пробовал уже. Запрашивает пин все равно.
-
Товарищи,
имеется фирменное устройство, которое общается со своим внешним модулем по Bluetooth 4.2 (не LowEnergy, а просто BT 4.2 base data rate).
(Моя задача подсунуть свое устройство вместо фирменного модуля)
Что я выяснил: К этому внешнему модулю можно подключиться с любого Android смартфона. Просто тыкаю на название модуля в списке обнаруженных устройств и происходит соединение.
Нашел я у себя Bluetooth 2.0 модуль HC-05. И тоже могу подключиться к HC-05 с любого Android смартфона. Но перед установкой соединения смартфон запрашивает PIN-код.
Я в документации вижу, что PIN-код можно поменять, но нигде не вижу как совсем отключить его проверку, чтобы любой Мастер мог подключиться без всяких PIN-кодов.
В общем мне нужно как-то отключить в блютус модуле проверку pin-кода. Может конкретно в HC-05 это сделать нельзя ? Или нужен именно BT 4.2 ?
-
Привет,
запустил MIPI DSI дисплей 5" . (720x1280). Выводится статическое изображение.
Картинка четкая, стабильная, ничего не трясется. Но как только прогреется некоторые зеленые пиксели кое-где начинают помигивать. Выглядит как-то не очень.
Настроек у драйвера дисплея(ILI9881C) море. Не подскажете что проверить ? VCOM , VGL, VGH ... даже не представляю куда лезть.
(Использую STM32H743 и мост MIPI DSI SSD2828)
-
On 9/27/2022 at 11:28 AM, aaarrr said:
В данном случае ничего не будет.
А в каком случае надо заморачиваться с последовательностью ?
-
Друзья,
пытаюсь освоить такую TFT LVDS панель WF101FSYAPLNG0
В даташите есть последовательность включения и выключения. Если мне не охота заморачиваться, что будет если все эти напряжения я подам как попало ?
С RGB дисплеями я не заморачивался, хотя там тоже есть какая-то последовательность включения и выключения и все работало.
Прикладываю даташит на нее, т.к на сайте он не полный.
-
On 9/21/2022 at 9:38 AM, uriy said:
Разве получится дебажить из кейла основную программу если туда перескакиваем из бута?
Да, отладка работает. Загрузчик отработал и передал управление основной программе и отладчик остановился на main.
-
On 9/19/2022 at 6:57 PM, Intel4004 said:
Делаете из скомпиленного бутлоадера сишный массив и подключаете его к проекту
Тоже отличный вариант, Intel4004 !
-
On 9/19/2022 at 3:55 PM, jcxz said:
Не очень понятен смысл всех этих телодвижений... Зачем например при отладке основной программы всё время перешивать бутлоадер???
Это чтобы через полгода, когда понадобится запустить этот проект я не вспоминал нужен ли приложению бутлоадер и где его искать, а просто нажал F8 и все заработало
-
On 9/19/2022 at 11:23 AM, x893 said:
Как делать расписано на сайте Keil ну и конечно в google.com
Гениально, x893 !
Всего одна строчка.
Создаем файл bootloader.ini с одной командой "LOAD Bootloader.hex"
Потом в основном проекте идем в Options->Utilities->Init File и прицепляем там этот init файл.
Теперь при нажатии F8(download) автоматом прошивается bootloader.hex и основной проект. Красота !
-
On 9/19/2022 at 10:28 AM, Arlleex said:
Я это делаю собственной консольной утилитой, пишется за 10 минут на Си.
Понял, Arlleex. Спасибо.
On 9/19/2022 at 10:30 AM, x893 said:Делаете две конфигурации. Одна с бутом, вторая с прошивкой.
Добавляете load бут... в Debug init script для прошивки.
Поподробнее бы чуть-чуть. Не пойму как эти конфигурации делать и где этот Debug init script ?
-
Друзья,
сделал простенький бутлоадер, заливаю его в STM32 по адресу 0x08000000. Потом заливаю основную программу по адресу 0x0800D000.
Все работает, бутлоадер запускается, потом передает управление основной программе.
Не могу сообразить как сделать, чтобы при заливке основной программы в чистый МК, туда автоматом бы заливался и бутлоадер ?
(Пользуюсь Keil MDK ARM)
-
Опубликовано · Изменено пользователем TOG · Пожаловаться
Друзья,
хочу на Али купить LVDS кабель типа такого(40 см). Подскажите пожалуйста название ответных разъемов ?
Мне нужно соединить 2 платы. На одной плате RGB->LVDS мост и разъем. На второй плате разъем и LVDS TFT панель.
-
On 9/9/2022 at 11:07 AM, x893 said:
Я использовал SSD202D
Очень крутая штука.
В продаже нашли такой модуль IDO-SOM2D02
Пишут, что в нем установлен Linux
Правильно ли я понимаю, что там уже есть все драйвера для работы с периферией установленной на модуле ?
То есть имеется какой-то набор API ? Примеры программ ?
-
On 9/8/2022 at 4:00 PM, aaarrr said:
К STM32H - никак. Выбирайте процессор, который сможет полноценно обслуживать такую панель.
Спасибо aaarrr.
Может есть какое-то народное решение ? (Популярный в сообществе процессор для вывода на Full HD панель) ?
-
Друзья,
сейчас работаем с STM32H743. Небольшие дисплеи(до 800х600) он тянет и по RGB и через MIPI DSI мост.
Есть потребность подключить большую Full HD панель или хотя бы 1920x720 (типа этого).
Как вообще такие панели подключают к своим проектам ?
-
Друзья,
программирую для МК STM32 и во все программы вставляется защита от клонирования (шифрование данных по UID).
Сейчас настройка этой защиты делается вручную, что очень долго, а главное я постоянно косячу с ее настройкой и защита постоянно затирает что-то лишнее.
В итоге отладка занимает по несколько дней.
Я хотел бы сделать как-то так:
В исходном тексте программы вставляю пору комментариев (PROTECT_BEGIN), (PROTECT_END) указывая между ними какие данные нужно шифровать.
Потом перед компиляцией запускается моя прога, которая находит в исходниках данные, которые нужно шифровать и сама вставляет в исходник весь нужный код для работы защиты. Потом как обычно вызывается компилятор.
// PROTECT_BEGIN
uint8_t data1[] = {12, 13, 14, 15};
uint8_t data2[] = {16, 17, 18, 19};
...
uint8_t data99[] = {20, 21, 22, 23};
// PROTECT_END
Подскажите, может есть уже какие-то заточенные под разбор текстов инструменты ?
Пока, что я планирую на C это делать.
-
On 8/24/2022 at 12:48 PM, Сергей Борщ said:
Может кабель слишком умный и ожидает резисторы 5.1 кОм на землю на контактах A5 и B5, а в вашем разъеме их забыли допаять?
Точно ! Подключил другим кабелем, есть +5 Вольт.
Спасибо Сергей Борщ !
-
Друзья,
купили на Али такой разъем USB Type-C для питания устройства, данные передавать не надо.
На разъеме всего 2 контакта VBUS и GND. Пытаюсь подключить это все к компу через кабель USB2.0 - Type-C.
Питания нет. Кабель рабочий, другие устройства от него питание получают.
Как получить питание от USB Type-C ?
(Подключать будем и через стандартный Type-C кабель и через кабель-переходник USB2.0 - Type-C)
-
Друзья,
есть инфракрасный приемопередатчик и я отключаю прием на время пока идет передача.
Отключаю глобальное прерывание USART1:
HAL_NVIC_DisableIRQ(USART1_IRQn) // Вижу, что бит Enable сбросился
Передаю данные по USART1 (без использования прерываний). У меня почему-то выставляется бит Pending в USART1 global interrupt
Пытаюсь сбросить бит Pending (HAL_NVIC_ClearPending(USART1_IRQn). Не выходит. Бит не сбрасывается.
Потом включаю глобальное прерывание USART1:
HAL_NVIC_EnableIRQ(USART1_IRQn) // Вижу, что бит enable установился. И срабатывает прерывание которое обрабатывает мусор.
Как мне напрочь отключить прерывание, чтобы бит Pending не выставлялся ? Или как сбросить бит Pending ?
-
On 7/20/2022 at 6:48 PM, x893 said:
2.
/* USER CODE BEGIN SysInit */ #if 0 /* USER CODE END SysInit */
Хитро ! Спасибо, x893.
-
Друзья,
Имеется проект созданный в CubeMX для STM32.
Мне нужно, чтобы мой код (тот, что между #ifndef...#endif) был перед функцией MX_TouchGFX_Init, чтобы TouchGFX мог начать грузить графику с QSPI флешки.
Мне каждый раз при перегенерации проекта в CubeMX приходится помнить, что надо вручную вставить этот код перед MX_TouchGFX_Init, потому-что из этого места куб сносит все, что не его.
Как бы кубу это объяснить ?
/* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_TIM6_Init(); MX_LTDC_Init(); MX_FMC_Init(); MX_CRC_Init(); MX_QUADSPI_Init(); MX_DMA2D_Init(); MX_DMA_Init(); MX_USART1_UART_Init(); MX_TIM2_Init(); MX_ADC3_Init(); #ifndef SIMULATOR qfs.hqspi = &hqspi; qfs.qspi_addr = (__IO uint8_t *)(QSPI_FLASH_ADDR); Sta = FlashDeviceInit(&qfs); Sta = FlashDeviceSetMemoryMappedMode(&qfs); #endif MX_TouchGFX_Init(); /* USER CODE BEGIN 2 */
-
-
Опубликовано · Изменено пользователем TOG · Пожаловаться
On 7/18/2022 at 10:10 AM, Allregia said:1) union
2) через #define
3) свое описание структуры для каждой ф-ии
Возможно подойдет вариант 3.
Сделаю свое описание структуры для каждой ф-и.
1. typedef struct { int16_t quart; int16_t X ... еще много всякого } DSP_DATAtype1 2. typedef struct { int8_t Temp; int8_t Bat ... еще много всякого } DSP_DATAtype2
Сейчас память выделяется статически во время компиляции:
DSP_DATAtype1 DspData1;
А как сделать это ? (Мне бы хотелось во время работы как-то переключать описания структуры)
On 7/18/2022 at 10:10 AM, Allregia said:но выделять память только на одну, и далее по указателю на эту память.
Как создаются инициализированные переменные в памяти ?
в Программирование
Опубликовано · Изменено пользователем TOG · Пожаловаться
Сотрудник, который сделал эту программу на больничном. У меня есть только МК с прошивкой. У него в программе на Си я точно видел, что объявлен массив был просто uint8_t data[] = {1,1,1,0,0,1 ..... всего 180 байт).
Сейчас хотел немного подправить массив в прошивке, а найти его не могу.
Для эксперимента сделал два проекта в котором массивы нулей и единичек отличаются только первым и последним байтом. И вот так выглядим место в прошивке, где есть отличия.
То есть так просто тут изменения не внесешь.