16 апреля 2014

Работа с энергонезависимой памятью на STM32

Введение

Во встраиваемых системах часто возникает необходимость хранить данные во время отключенного питания. Это могут быть настройки программы, журналы событий, логи работы устройства и многое другое. Для этих целей можно использовать средства, встроенные в контроллер, а можно взять внешние микросхемы памяти. Каждый из вариантов имеет свои положительные и отрицательные стороны.
Внутренняя энергонезависимая память контроллера, пригодная для наших целей может быть как EEPROM, так и память программ (FLASH). EEPROM есть ни у каждого чипа, и ее объемы часто бывают недостаточны. FLASH, в силу своей особенности имеет ощутимые ограничения по количеству циклов стирания/записи. Плюс ко всему, стирание возможно только постранично. То есть, если нужно переписать один байт, то необходимо стереть всю страницу, затем заново записать нужные данные. Есть методики использования FLASH для этих целей, которые позволяют использовать ее более эффективно, но данная статья не об этом.

В этой статье мы рассмотрим работу с внешними энергонезависимыми микросхемами памяти, которые работают по последовательному интерфейсу I2C. Протокол весьма стандартный, подходит как для классических 24LCxx микросхем, так и для современных FRAM. Последние имеют ряд ярко выраженных плюсов, отставая, разве что, только по цене от классической EEPROM.

08 апреля 2014

Пример реализации софтового I2C на STM32

Введение

I2C - последовательная шина данных для связи интегральных схем, разработанная фирмой Philips в начале 1980-х как простая шина внутренней связи для создания управляющей электроники. Используется для соединения низкоскоростных периферийных компонентов с материнской платой, встраиваемыми системами и мобильными телефонами. (с) wikipedia.

Основные особенности I2C:

  1. Мультимастер. Устройства на шине одновременно могу работать как мастером, так и подчиненным.
  2. Аппаратный контроль доставки пакета. В конце каждого пакета принимающая сторона обязана подтвердить факт корректного приема входящего пакета.
  3. Используются всего две линии ввода/вывода.
  4. Возможность "горячего" подключения новых устройств к шине во время работы.
  5. Не самая большая скорость обмена, по сравнению с другими интерфейсами.
  6. Отсутствие встроенного контроля целостности передаваемых данных.

10 января 2014

Подготовка кода к публикации в блоге

Вступление

Опубликовать некоторый код в красивом и форматированном виде можно несколькими способами. Я остановился на SyntaxHighlighter, так как он очень легко встраивается на платформу Blogger. Но описание установки здесь приводится не будет.
При использовании SyntaxHighlighter я столкнулся с одной проблемой. При написании кода я пользуюсь символами табуляции, в то время как при переносе кода на Blogger,  ширина табуляции "уезжает". Было решено написать простенькую утилиту, которая просматривает весь код и заменяет символы '\t' на необходимое количество знаков пробела (от 1 до 4) в зависимости от текущего положения каретки. В качестве бонуса я добавил автоматическую подготовку кода для встраивания в статью. А именно замена знаков '"', '<' и '>' на соответствующие наборы строк, необходимые для корректной вставки в скрипт. Плюсом идет добавление тега <pre> вместе с параметрами. Схожую функцию выполняет простенькое веб-приложение, но я предпочел иметь "все в одном".