Найти тему
MinGW + Visual Studio Code. Руководство для старта
Данный текст будет полезен тем, кто давно хотел слезть с иглы тяжеленных IDE, но настройка компилятора под себя - казалось делом неблагодарным и запутанным. VS Code - это лишь редактор кода. Эт не среда разработки - здесь нет встроенного компилятора или дебаггера. Здесь есть только их поддержка. Чем более инструмент универсален - тем сложнее вначале разобраться в его особенностях. Однако, здесь нет ничего невозможного! Если правильно один раз настроить VS Code, то вы получите замечательную среду с помощью которой можно поддерживать различные проекты на совершенно разных языках...
115 читали · 2 года назад
I2C Slave устройство на STM32. Сегодня с регистрами
Вот что действительно было тяжело найти, так это адекватный пример реализации i2c подчиненного устройства на STM32 с использованием прерываний. Нашлись несколько примеров блокирующих реализаций и пара вопросов на st-community. А вот прям более-менее рабочий проект, где есть реализация нескольких регистров ведомого устройства, да еще и с разным уровнем доступа - такого очень не хватало. Буквально, чуть: В общем, я достиг комедии дна. Мне понравилось, как работало на mbed OS, поэтому, я полез в исходники (https://github...
2 года назад
STM32. Применение Option Bytes без перезагрузки устройства
Гипотетическая ситуация следующая - у нас есть устройство до которого очень тяжело дотянуться ручками, но есть доступ к загрузчику. И нужно установить некоторые OB, например, управление ножками бута или установка защиты от чтения. Для того, чтобы OB встали на свое место - необходим перезапуск МК. Причем, простого ребута по вочдогу или через NVIC_SystemReset() будет недостаточно. Нужен именно Power Cycle всей внутренней периферии. Мы предполагаем, что у нас уже заведен watchdog, который "разбудит" МК перезагрузкой или включены часы RTC с ножкой WakeUp. Разницы особой нет. Вся соль применения Option Bytes без физической перезагрузки - именно в переходе в режим ожидания...
2 года назад
Когда нужна сотня UART'ов или примитивный драйвер для SC16IS740/SC16IS750/SC16IS760
Вот и наступил прекрасный момент, когда все доступные порты заняты, а битбэнгать как-то не сподручно. На сцену выходит микросхема-преобразователь UART в-из I2C/SPI Есть аналоги подобных микросхем-преобразователей (MAX3107, MAX14830), которые скорей всего будут лучшим выбором, чем представленная выше. У них нет "магических" регистров доступа и FIFO длиннее. Так вышло, что под рукой была именно эта микросхема. Работа с доступом к определенным регистрам у нее очень специфичная. Вот, например, сноски под описанием регистров из даташита: Обратите внимание на п...
2 года назад
Поиск устройств на шине I2C STM32
Как понять, что устройство с определенным адресом есть на шине i2c? Конечно же по биту подтверждения ACK (Acknowledge). Этот бит выставляет не мастер, а ведомое устройство. И, если ведомое устройство получило свой адрес, то оно выставит бит подтверждения (прижмет линию к земле). На отличной картинке от DI HALT это наглядно продемонстрировано. В HAL-библиотеке есть специальная функция для проверки доступности устройства: HAL_StatusTypeDef HAL_I2C_IsDeviceReady (I2C_HandleTypeDef *hi2c, uint16_t DevAddress,...
2 года назад
Добавляем Unit-тестирование в проекты STM32CubeIDE
А именно, мы будем добавлять отличную систему Сeedling. Данная система содержит в себе сразу два инструмента - Unity - непосредственно для проведения и написания тестов и CMock для генерации объектов-заглушек. Но самая большая заслуга данного пакета - простота во всех аспектах - начиная от генерации тестируемых модулей и до релиза проекта. Использование Сeedling превращает рутинное TDD (Разработка через тестирование) или TLD(если захочется так) в обычный рабочий процесс. Как именно использовать данные...
2 года назад
Запускаем кодек OPUS на микроконтроллере
Исходные данные - есть контроллер STM32 с очень ограниченной памятью, а мы хотим записывать на нем звук. Допустим, что примеров с подключением выбранного нами микрофона гора и маленькая тележка. В итоге имеем контроллер, который умеет выдавать нам WAV-подобный сигнал. Хотелось бы этот WAV-сигнал куда-то записать или передать. Таких данных будет очень много, есть ненулевая вероятность, что мы не влезем по полосе пропускания используемого канала или заполним память до того, как получим нужную информацию...
2 года назад
USB-HID на STM32F103. Примочка для управления треками и громкостью
Люблю слушать музыку, чтобы сконцентрироваться или расслабиться. Но вот управлять громкостью и переключать треки было ой как неудобно на моей китайской механике. В один прекрасный день работа не сильно давила на голову и я решил сделать себе примочку к компу похожую на те, которые я видел на Алике. В первую очередь, определимся, что нам нужно от готового устройства: До глобального кризиса микросхем (2020-2021) я закупал пачками STM32F103 (в народе "BluePill"). Весной 2021 цена BluePill'ы стала на 30% выше, чем BlackPill'ы...
2 года назад
STM32 SAI и микрофон INMP441
Представим, что у нас есть STM32L4 серии и на нем мы пытаемся подключить микрофон INMP441 через интерфейс SAI. Данный микрофон выводит данные сразу в PCM коде и имеет хорошие звуковые характеристики для своего ценового диапазона. Быстрым гуглением мы можем найти три основные ссылки по данному вопросу: Допустим, у нас подключение микрофона в режиме моно и активен только левый канал. Подключение имеет следующий вид: Открываем даташит на микрофон INMP441 и смотрим, что там по таймингам в его протоколе Ссылка на даташит https://invensense...
2 года назад
Сливаем дамп флешки STM32 стандартными инструментами
Как считать прошивку контроллера который не был залочен? Да очень просто. Подключаем плату через st-link и запускаем программу STM32CubeProgrammer или ST-LINK Utility. Обе программы имеют вполне годный консольный help и документацию, в которой он, по сути, дублируется. STM32CubeProgrammer. Сохраняет прошивку в bin, hex, srec STM32_Programmer_CLI.exe -c port=SWD -r 0x08000000 0x20000 firmware.srec В port выбирается используемый интерфейс, далее идет адрес старта прошивки (0x08000000), размер прошивки (0x20000) и название файла куда будет сохранена прошивка...
1989 читали · 2 года назад
Установка BL-touch (3D Touch) на Ender 3
Я установил официальную плату Silent Mainboard с 8-битным Atmega 1284p, в которой используется тот же самый микроконтроллер, но драйверы TMC2208 Я установил официальную плату Silent Mainboard с 8-битным Atmega 1284p, в которой используется тот же самый микроконтроллер, но драйверы TMC2208 Стоковая площадка для печати имеет определенную кривизну. Причем у меня вогнутая как стакан, а у моего коллеги наоборот - выгнутая. Печатать приходилось всегда с подложкой (Raft). Печать без подложки требовала очень проблематичной, долгой калибровкой с листочком...
671 читали · 2 года назад
Изоляция на оптронах
Зачем нужна изоляция? Изоляция нужна, чтобы изолировать. Прекрасно. Или вы не хотите увидеть дымок из вашей отладки, когда подключаете ее напрямую к сети устройств или к драйверу чего-нибудь мощного. Задача управлять шаговым двигателем с нежной и дорогой ПЛИСы точно требует хорошей изоляции. Или, например, MIDI стандарт говорит, что нужно использовать гальваническую изоляцию для MIDI-устройств при подключении к компьютеру. Electronic and Computer Music Fourth Edition Peter ManningС чего-то в нашей...
2 года назад