


В статье "Часть 12. STM32 и C++. I2C в Cortex-M4" я описал, как работать с I2C на ядрах Cortex-M4. Продолжая работать с I2C на других чипах, я столкнулся с тем что данный способ общения с I2C корректен не для всех ядер. Описанный способ точно подходит для STM32F405xx и STM32F407xx, вполне возможно что подходит также и ...

Продолжение предыдущей статьи. Если разобрались в том, что я и сам плохо понимаю (для тех, кто не понял - шутка), будем продолжать разбираться дальше. Есть два способа обмена: просто ведущий стучится к ведомому, тот в ответ высылает пакет со всеми данными, и второй способ, похожий на ModBUS (совсем чуть-чуть). В этом случае ведущий передаёт один ...

ModBUS. О нем много было рассказано, много копий сломано. Но сложилась ситуация таким образом, что никто и ничего не рассказал о том, как пишется прошивка для ведомого, а не для ведущего. Как создаются регистры, как они заполняются, каким образом отыскивается нужный регистр. Вот общение с ведомым обсосано со всех сторон, но разговор сейчас не о ...

Что-то мне так сильно повезло, что у меня попёрли дисплеи на SPI, и поэтому пришлось написать библиотеку для работы с этим интерфейсом. Так как очень многие дисплеи могут работать только ведомыми (slave) и могут только принимать данные, написал только часть касающуюся передачи. Постарался сделать все типы передачи данных и часть функций чтения. Хоть передачу и ...

Все, кто пользовался отладкой на уровне регистров под STM32CubeIDE, замечал, что список регистров идёт вразнобой, без какой-либо логики. Например, список для типичного STM32F407xx выглядит таким образом, здесь у нас порты ввода/вывода: Это у нас UART/USART: Это таймеры: Как видим, все устройства идут не по порядку, а вразнобой. И это ещё цветочки. Есть МК, где всё ...

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

Сегодня рассмотрим таймер реального времени (RTC) или по-простому часы. Это такая штука, которая много чего умеет: Считать реальное время, учитывая високосный год, разное количество дней в месяцах и летнее время; Имеет два будильника, от которых можно выводить МК из спячки; Блок автоматической побудки с периодическим флагом и прерыванием; Специальные входы, к которым можно подключить концевые ...

Настало время заняться потихоньку таймерами. Начнём с самых простых - базовых таймеров TIM6 и TIM7. Благодаря библиотеке прерываний в статье STM32 и C++. Мой вариант архитектуры, обработка прерываний автора Aveal, мы теперь можем управлять прерываниями как захотим. Надеюсь, что всё получится, и в будущем можно будет писать более гибкие библиотеки. Ну и раз пошла такая ...

Сегодня рассмотрим подключение датчиков BMP280 и BME280. Описание и подключение уже рассматривалось здесь. Поэтому не будем долго толочь воду в ступе, а просто подключим и измерим. Датчики, в основном, практически одинаковы, вся разница заключается в точности и пределах измерения и, соответственно, в цене. Может есть ещё отличия, но нам они не принципиальны. Основная фишка этих ...

В предыдущей статье мы рассмотрели реализацию I2C на ядре Cortex-M4. Теперь настало время что-нибудь подключить. Давайте подключим серию микросхем AT24Cxx. Кроме этих микросхем можно подключить кучу разных датчиков. Позже на подходе BMP280, BME280, SGP30 и HDC1080. Других у меня пока нет. В библиотеку входит всего один конструктор и две функции. Конструктору AT24Cxx(I2C* I2C_Ptr, uint8_t DevAddress, ...



