Stm32 + 1-wire + DMA

В очередной раз потребовалось считывать данные по 1-wire. Сначала я это делал на AVR просто дерганьем ножек. Потом прочел небезызвестный аппнот от maxim Using a UART to Implement a 1-Wire Bus Master, начал использовать USART. Когда перебрался на STM32, увидел что усартов у него чуть больше чем дофига, поэтому милое дело использовать их для этих целей. Ясное дело, все получилось. Но тут заметил, что вдобавок к USART есть такой бонус — DMA. Вот про прикручивание его к работе с 1-wire и пойдет разговор в этой статье.


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

STM32 - организация виртуального COM-порта

Раз у камня есть аппаратный USB, то грех им не пользоваться. Один из способов плюнуть байтом в компьютер и чтобы он при этом не очень обиделся — это организация виртуального COM-порта.
Все в железе пробовалось на камне STM32F103ZE, на аналогах тоже должно взлететь.


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

STM32 + FreeRTOS

Про использование FreeRTOS есть достаточно много материалов, подробно описывающих работу с задачами, семафорами и очередями. Поскольку у нас блог посвящен STM32, то расскажу про минимально необходимые телодвижения, чтобы запустить эту ОС.


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

STM32, про что народу интересно?

Могу какую-нить тему по STM32 разжевать, что народу интересно? Про мигание лампочками есть везде :)

Сразу скажу, я сторонник библиотеки CMSIS, поэтому без оголтелого ассемблера )

Очередное мультиплексирование (8 семисегментных индикаторов по 8 ногам)

Тема мультиплексирования ввода вывода уже поднималась. Например, здесь.

Продолжим тему экономных подключений светодиодных индикаторов. Теперь рассматривается схема подключения восьми семисегментных индикаторов с использованием всего 8 ног контроллера.



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

Возня с MRF49XA

Напишу пару слов об опыте общения с MRF49XA — трансивер на частоты 433, 868 и 915 МГц. Модуляция — ЧМн (FSK — Freq. Shift Keying), скорости передачи — до 115.2 kbps. Из обвязки требует кварц на 10 МГц и три блокировочных конденсатора по питанию.


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

Использование External Memory Interface для работы с экранчиком

AVR
Сразу оговорюсь — это не отображение видеопамяти экрана в адресное пространство. Хотя такого функционала очень хочется, но его не поддерживают используемые мной контроллеры экранчиков. Да и сомневаюсь, что такое будут встраивать в дешевые LCD/OLED экранчики.

Итак, спросите вы, а зачем же тогда упоминания о внешней памяти? Пойдем по порядку.


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

pcb123

Наткнулся на такую среду проектирования ПП — pcb123. Бесплатная чуть меньше, чем полностью.
www.sunstone.com/PCB123.aspx

Попробую в ней что-нить сделать. Пока нашел такие фишечки:

— автоматическая генерация УГО и футпринтов. Пара щелчков мышкой, заполнить табличку с выводами (я копирую с даташита) и опаньки
— все в одном окне. Не нужно отдельно запускать редактор схем, отдельно трассировщик.

Непривычненько как-то. Но ведь халява же ))

Непонятно что у нее еще с экспортом-импортом.

Время говорить с камнями или USART Multi-processor Communication Mode

AVR
В устройствах, которые чуть сложнее «помигать на демоплате» часто встает вопрос коммуникации между блоками. Какие у нас есть варианты организации шины «один мастер-куча слейвов»?
1. SPI — классика жанра. Минус — надо к каждому слейву тянуть линию SS — Slave Select, чтобы выбирать конкретного
2. I2C (TWI) — вроде все хорошо, правда развязать двунаправленную шину — гемор тот еще.
3. ну и герой нашего обзора — USART Multi-processor Communication Mode

Работает на камнях, где есть полноценный USART (это меги). За базовый камень возьмем atmega32a.



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

AVR - Power management или как правильно спать

AVR
Когда начинаешь задумываться о снижении потребления камня — обычно все остальное уже вылизано. И светодиод мигает как надо, и RTOS исправно щелкает задачами, и экранчик подмигивает курсором. Соответственно, этот раздел можно рассматривать как мини-квалификационный экзамен на AVR-джедая. После него остается только всякая экзотика — вроде асинхронных счетчиков или External Memory Interface у старших мег.

Как вообще мы можем влиять на энергопотребление кристалла? Что там вообще потребляет?

Основной элемент кристалла — полевой транзистор. Он в стабильном режиме практически не потребляет энергии — емкость затвора изолирована и практически не разряжается, сопротивление в открытом состоянии мало. А вот при переключении нам надо очень быстро перезарядить эту емкость. Соответственно, чем быстрее, тем больше тока надо вдуть в затвор. А чем больше ток при постоянном сопротивлении, тем больше потери. И поэтому, чем выше тактовая частота, тем больше энергопотребление. Отсюда вывод — если хотим экономить, то сразу надо снижать частоту.

Память. То же самое — в стабильном режиме практически ничего не потребляет (наноамперы). Основные затраты — при чтении и записи.

Отсюда вывод — остановив процессор, затормозив его часы до нуля, можно снизить энергопотребление кристалла до минимума. Попробуем достичь его.



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