Нестабильная работа с I2C под STM32

Волею судеб мне пришлось разрабатывать прошивку для одного устройства на основе микроконтроллера STM32F103. Функций у устройства много, в том числе и общение с EEPROM подключенным посредством протокола I2C. Кто не знает, микроконтроллеры STM32 во многих своих версиях поддерживают работу по данному протоколу на аппаратном уровне. Это значит, что у микросхемы микроконтроллера присутствуют специальные выводы, которые можно использовать в том числе и для работы по протоколу I2C, а все издержки по этому протоколу выполняются «железом» микроконтроллера.

микросхема, eeprom

Вообще, I2C — штука популярная. Реализуется не так сложно, для его работы требуется всего два сигнальных провода. По одному подаются тактовые импульсы, по второму происходит передача данных, привязанная к тактам первого провода. К шире или выводам I2C можно подключить несколько устройств, они не будут мешать друг-другу, т.к. при обращении к конкретному устройству указывается его уникальный адрес.

Читать далее ...



Безопасность: Telegram vs WhatsApp vs Viber. Усиленно размышляем о прайваси.

versusМессенджеры нынче суперпопулярны. Позвонить сегодня по телефону, когда есть возможность отправить сообщение, причем бесплатно, в некоторых кругах уже считается чуть ли не дурным тоном. А как отправлять SMS-ки знают вообще только аксакалы, а молодое поколение и не подозревает, что SMS можно пересылать другим людям. Но чем больше мы пользуемся мессенджерами, тем больше нас начинает охватывать беспокойство о том, насколько безопасно хранится и передается то, что мы пишем и отправляем нашим контактам? Не смогут ли злобные хакеры стащить картинки в неглиже, а усатый товарищ майор прочитать о черном нале?

Проблема приватности или как говорят американцы «прайваси» встала в полный рост, и вызвала беспокойство в законотворческих коллективах до принятия целого вороха законов, указов, нормативных актов. Бешенству принтера подверглись практически все страны мира, где уже более-менее слезли с деревьев и наконец-то осознали, что информация тоже товар, причем очень ценный, а чем его больше, тем он дороже. Ни для кого не секрет, что информацией о своих пользователях во всю приторговывают социальные сети. Да, что там сети, вон тот же Gmail еще в самом начале объявил, что мы даем вам бесплатную почту, а вы смотрите рекламу, которую мы вам показываем, анализируя тексты ваших писем. Ох как жесто́к современный мир! Но вернемся к мессенджерам, к этим «волшебным палочкам», при помощи которых общаются друг с другом миллиарды людей, и попробуем разобраться, на каких же принципах строится безопасность в одних из самых популярных мессенджерах.

Но, прежде чем приступить к небольшому диванному исследованию, необходимо определиться, от каких напастей должен защищать мессенджер. Во-первых, пользователей беспокоит то, что их сообщения передаются по сети в незащищенном виде, и их могут перехватить злобные, чаще всего русские (отличающиеся повышенной степенью свирепости), хакеры, которые перехватят, скопируют, растиражируют. Данный сценарий вполне возможен, особенно если подключаться к открытым точкам доступа, ведь хозяин такой точки доступа может открыть ее специально, дабы отлавливать доверчивых любителей бесплатного Wi-Fi и копировать чувствительные данные, передаваемые через его инфраструктуру. Во-вторых, граждане обеспокоены, что государство перехватит их сообщения и будет их использовать против самих пользователей. Как правило, страхи основаны на том, что в чатах обсуждаются мелкие правонарушения и способы как еще объегорить родное или иноземное государство.

Вот с этими тревогами и попробуем разобраться, насколько они обоснованы.

Читать далее ...



Node-RED: что к чему и главное зачем. Разбираемся.

node-red editing siteНаписать эту статью меня побудил шок от первого знакомства с Node-RED. Я давно уже не работал с продуктами с историей из недр IBM, поэтому как-то поотвык. Все дело в том, что IBM имеет давние традиции по написанию программного обеспечения. Они в стародавние времена, когда основатели Microsoft еще ходили в коротких штанишках, уже пожинали в полном объеме все проблемы, связанные с написанием крупных программных продуктов. Именно там, на вершине IT-прогресса, выкристаллизовывался тот самый подход, который позволил IBM в дальнейшем делать очень интересные программные продукты. Как правило, они отличаются по логике работы и внешнему виду от всего, к чему мы, работая за компьютером, обычно привыкли. Но как только начинаешь понимать логику и процессы работы в продуктах от IBM, то не перестаешь все время задавать себе один и тот же вопрос: «А как же раньше мы без этого работали?» За свою долгую историю «Голубой гигант», как называются компанию в США, прошел путь от табуляторов до одной из богатейших транснациональных компаний в мире. И богатство компании приносит в первую очередь ее интеллектуальная собственность: ноу-хау, патенты и прочее. Из того чем компания занималось особенно запомнилась: OS/360 (потомки этой операционной системы с обратной совместимостью живут и сейчас, а ведь прошло уже более полувека, почти вся история современной вычислительной техники), OS/2 (эта операционная система по сути крутится внутри всех современных Windows), Visual Age (интегрированные среды разработки с существенной визуальной составляющей).

Читать далее ...



OneNote на Windows постоянно просит ввести пароль или предлагает войти в учетную запись — что делать?

one note, onente, onenote, щтутщеуOneNote — штука наизамечательнейшая. Это отличный блокнот с синхронизацией записей, бесплатный и доступный на всех актуальных платформах, в том числе и виде нативных приложений. Впрочем, я уже достаточно пел дифирамбы OneNote в своей статье про битву титанов, поэтому повторяться не буду. И поскольку я весьма активный пользователь OneNote, он у меня установлен везде, где только можно, то я столкнулся с проблемой, которую ни коллективный разум, ни служба поддержки Microsoft (доступная через форум, так как продукт бесплатный) решить не смогли.

OneNote может работать в режиме без синхронизации, тогда записные книжки пользователя хранятся только на его компьютере локально. Но вся ценность OneNote в его способности синхронизировать записи записных книжек между устройствами. Происходит данная процедура через синхронизацию файлов записных книжек через облачный сервис Microsoft OneDrive. Облачно хранилище предоставляется на бесплатной основе, достаточно только завести эккаунт у дяди Билла. И именно в него, после каждой перезагрузки OneNote, просил войти еще раз. Для этого необходимо было тяпнуть по раздражающей ссылке вверху первой же страницы записной книжки.

Читать далее ...



Как прошить чип STM32

В своей недавней статье я подробно разобрал каким образом можно прошивать программным кодом чипы семейства AVR. Сегодня же я рассмотрю способы, которыми можно прошить чипы семейства STM32. Но, я не буду приводить примеры того, как можно «залить» прошивку в микроконтроллер при помощи шнура от утюга или же варианты сопряжения CentOS установленного на Chromebook и программатора от STMicroelectronics. Пойдем по пути наименьшего сопротивления и используем современный ПК с установленной на него Windows 10 64-х битной редакции. В качестве подопытной, которую будем прошивать, возьмем фирменную плату NUCLEO-F103RB. Плата относится к серии Nucleo-64, хотя сами микроконтроллеры 32-х битные. Вероятно, что цифра 64 используется по количеству выводов чипа микроконтроллера, так как для плат серии Nucleo-64 обычно используются LQFP64 корпуса микросхем.

деревья, лес, жуть

Тот самый случай, когда за деревьями не видно леса

В платы Nucleo производитель заботливо уместил средство подключения, программирования и отладки, ST-Link. Плата просто подключается USB-кабелем к компьютеру, и если установлены драйвера, то ее можно прошивать новой прошивкой, связаться по последовательному порту и протоколу, а также начать процедуру отладки. И все по одному кабелю. Однако, ST-Link, вместе с USB-портом, выполнены на куске платы, который можно с легкостью удалить, попросту его отломав. Именно так и поступим, дабы приблизить ситуацию к наиболее распространенной, когда у нас нет встроенного программатора. Ведь нам с вами так или иначе приходится сталкиваться с чипами STM32 без каких- либо дополнительных интегрированных инструментов вообще. Но прежде, чем переходить к практике по прошивке необходимо разобраться в теории, точнее в теории управлением чипами семейства STM32.

Читать далее ...



Добавляем свою плату в PlatformIO в разрезе проекта на конкретном примере

platformio ide pio homeВот в старое время, бывало, откроешь текстовой редактор, накидаешь несколько сот строк на ассемблере, откомпилируешь одной программой, затем отлинкуешь другой и все, программа готова. А нынче? А нынче вычислительные мощности подросли настолько, что даже мои часы мощнее компьютера на котором я обучался алгоритмизации. А труд программиста почти не изменился. Разработчики все так же пишут код руками, вводят его в текстовом редакторе, затем компилируют, да линкуют. Только вот со времен Кобола, Алгола, да чистого ассемблера много чего изменилось. Сейчас никому и в голову не придет писать программу на ассемблере даже для микропроцессора. Это не только не эффективно, но и игра не стоит свечей, которые сгорят, пока программист будет выдавливать из себя инструкции для конкретного процессора. «Железо» нынче стоит куда дешевле труда человека.

Вот и появляются на свет разного рода фреймворки для облегчения труда разработчика, ускорения и упрощения написания программ. В среде микроконтроллеров настоящую революцию произвела Arduino. Простейшая среда разработки, с упрощенной библиотекой команд, да инициализацией периферии, спрятанной от разработчика. При помощи Arduino можно написать за минуту простую мигалку светодиодом, а можно потратить куда больше времени и реализовать настоящую прошивку с множеством функций. Только вот в последнем случае использовать простецкую Arduino IDE становится невыносимо трудно. Тут тебе нет отладчика, нет автодополнения, да вообще много чего нет. Возможно, что ввиду отсутствия единой системы разработки для встраиваемых систем и появилась на свет PlatfromIO IDE. Среда позволяющая разрабатывать прошивки для невероятного количества платформ и микропроцессоров со всеми возможными удобствами для разработчика.

PlatformIO поддерживает наверное все популярные платы, какие только могут быть. Поддерживается все это дело частной компанией и многочисленным комьюнити. И действительно, попробовав написать хоть небольшой проект на PlatformIO обратно на Arduino IDE возвращаться уже не захочется. Эффективность написания сложного кода для встроенных систем на PlatformIO, пожалуй, самая высокая, среди всех доступных пользователям средств. Да и IDE, став Open Source и опираясь на такие же продукты, позволяет без опаски и не пиратствуя писать свой код свободно. Прям утопия.

Но есть у всего этого малинового многообразия и отрицательная сторона, чем больше поддерживается плат и микропроцессоров в PlatformIO, тем сложнее и дольше происходит интеграция новых версий всего программного обеспечения. На такую проблему напоролся и я. Возникла необходимость написать прошивку для устройства на чипе STM32F103RE. Чип вполне актуальный, распространен, его поддерживает версия Arduino для архитектуры STM32 (STM32Duino) начиная с версии 1.7.0. Но вот беда. В PlatformIO самой актуальной версии хоть и интегрирована Arduino для STM32 от STM32Duino, но вот сам чип STM32F103RE поддерживается только устаревшей версией Arduino для STM32 (Maple). И использовать STM32Duino с PlatfromIO я не могу, хотя тот же процессор отлично прошивается через Arduino IDE с установленной поддержкой SMT32Duino. Вопиющая несправедливость, с которой следует разобраться.

Звучит сложно? Именно по этой причине, прежде чем приступать к подключению STM32F103RE к Arduino STM32Duino под PlatformIO мне пришлось на протяжении нескольких дней усиленной изучать документацию, исходные коды и сообщения на форумах. Пришлось даже вспоминать как писать на Python.

Читать далее ...



Переход с Arduino IDE на PlatformIO IDE на базе Microsoft Visual Studio Code. Что нужно знать.

Несколько лет тому назад я подарил сыну набор «Матрёшка» с электронными компонентами и микроконтроллером Arduino Uno. Набор сопровождался скромным, но толковым учебным пособием, с которым можно не только освоить основы электроники, но и попытаться научиться программировать в среде Arduino. И хотя по первому образованию я радиотехник, а по второму инженер в ИТ, но мне было жутко интересно проходить все уроки «Матрешки» вместе с молодым поколением. Постепенно я втянулся и по дому начали плодиться многочисленные системы «Умного дома», различные датчики, улучшители и все прочее. А затем хобби перекинулось и на профессиональную сферу деятельности. И вот уже по рабочим вопросам начали появляться устройства автоматизации, измерительно-контрольные приборы и прочая уникальная незаменимая электронная утварь.

Но время идет и постепенно проекты начали усложнятся. В скетчах Arduino уже не десятки, а сотни строк. Количество переменных не влезает на один экран, а отсутствие отладчика временами приводит к нервному истощению. И в конце концов, было принято окончательное решение по миграции с Arduino IDE на что-то более удобное в плане разработки. Мой выбор почти сразу пал на PlatformIO IDE, причем перешел я на него только со второй попытки. Первая оказалась неудачной, поковырявшись несколько часов с PlatformIO я пришел к выводу, что в Arduino IDE все делается куда легче и быстрее. Но затем, спустя несколько месяцев я выкроил еще несколько часов своего драгоценнейшего времени для того, чтобы все же разобраться с PlatformIO IDE и постараться понять ее, а затем и полностью перейти на эту интегрированную систему. В качестве альтернативы я рассматривал Atmel Studio 7… Но обо всем по порядку.

Читать далее ...