• ↓
  • ↑
  • ⇑
 
Записи с темой: stm32f4discovery (список заголовков)
17:18 

STM32F4. Некоторые тонкости пошаговой отладки.

Кто-то любит пирожки, а кто-то - нет.
Итак, есть программа, которую мы хотим пошагово отладить. Ладно, если она затрагивает только ядро и сам алгоритм — щёлкай да смотри, всё ок. А если отлаживаем какую-нибудь периферию? Таймер там, или ещё какую штуку. Пока мы стоим, а таймер сто раз переполнился, буфер кана забился и т.д. Самое плохое, если переполнится таймер сторожевого таймера — контроллер просто-напросто перезапустится из-за того, что мы его остановили. Тут уж не поотлаживаешь. Или таймер отключай (и не забудь включить обратно), или не тормози вовсе. Не круто.

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

<< Предыдущее.

@темы: электроника, программизмы, stm32f4discovery, stm32, arm

11:14 

STM32F4. Внешний ЦАП CS43L22 и I2S

Кто-то любит пирожки, а кто-то - нет.
Как я уже говорил, на плате STM32F4-Discovery установлен ЦАП, который подключается по интерфейсу I2S. И оно может проигрывать мелодии, пищать и издавать в соответствующий разъём всякие звуки. Если, конечно, туда подключить какое-нибудь устройство воспроизведения.

Прежде, чем можно будет в I2S гнать аудиопоток, ЦАП надо включить и настроить, иначе он будет молча данные игнорировать:
1. Линию PD4 (~RESET) перевести в высокий уровень. ЦАП начнёт работать и воспринимать команды.
2. Командами по линии I2C программно включить ЦАП, выбрать и настроить протокол I2S, настроить коэффициенты усиления, установить громкость и всё такое. Настроек там выше крыши, и их все можно посмотреть в даташите.
3. Настроить I2S в контроллере.

После этого можно уже посылать данные и слышать результат в наушниках.

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

<< Предыдущее Следующее >>

@темы: электроника, программизмы, stm32f4discovery, stm32, arm

12:27 

STM32. Определение положения сбойного кода.

Кто-то любит пирожки, а кто-то - нет.
Бывает, при разных ошибках в коде возникают исключения. Переход по некорректному адресу, чтение или запись куда-то не туда, неправильная инструкция, да мало ли проблем. Как найти среди мешанины кода то место, где всё сломалось? Напрямую Кейл ничего не пишет, Список в Call Stack обычно пуст и не содержит ничего полезного (хотя иногда и обратное верно). Окошечек с информацией тоже нема. Грусть-печаль-тоска.

Но всегда можно вспомнить, что исключение — тоже вполне себе прерывание и действует, как и любое другое прерывание. То есть кладёт в стек копию 8 регистров: R0-R3, R12, LR, PC, CPSR. Нам нужен только PC, где содержится адрес инструкции, следующей за сбойной.


Вот как это можно подглядеть.

А ещё можно в поле Command записать

И получить ответ числом, как оно есть, не ползая по окну памяти.

Капитаню, конечно, но не всегда можно догадаться об этом сразу.

@темы: программизмы, stm32f4discovery, stm32f3discovery, stm32f0discovery, stm32, arm

16:06 

STM32F4. FLASH

Кто-то любит пирожки, а кто-то - нет.
Если вдруг хочется написать свой бутлоадер или встроенный самообновлятор ПО, то непременно нужно уметь перезаписывать флеш-память.
Микроконтроллеры STM32 предоставляют такую возможность, впрочем, как и все современные микроконтроллеры.

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

<< Предыдущее Следующее >>

@темы: arm, stm32, stm32f4discovery, программизмы, электроника

23:53 

STM32F4. SPI

Кто-то любит пирожки, а кто-то - нет.
Итак, снова SPI и снова акселерометр.
Про регистры акселерометра я уже говорил.

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

<< Предыдущее Следующее >>

@темы: электроника, программизмы, stm32f4discovery, stm32, arm

15:13 

STM32F4. Внешние прерывания на Си

Кто-то любит пирожки, а кто-то - нет.
И снова про внешние прерывания.

Задача - сделать простой в использовании драйвер. В идеале - указываем вывод, который хотим слушать, тип регистрируемого фронта и обработчик. Типа такого:


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

<< Предыдущее Следующее >>

@темы: электроника, программизмы, stm32f4discovery, stm32, arm

11:46 

STM32F4. DMX v2

Кто-то любит пирожки, а кто-то - нет.
Я хотел всё написать про протокол DMX на STM32. Я всё же сделал это>< Протокол сей используется большей частью в освещении (в театрах и типа того) и подобных некритических к потерям пактов областям. Один пакет DMX содержит информацию о уровнях 512 каналов (0-255), посылается он 44 раза в секунду, если без перерывов.
В качестве физической линии используется стандарт RS-485 (дифференциальная линия), программно же это последовательный асинхронный протокол (UART) со скоростью передачи данных 250 кбит/сек с двумя стоповыми битами и без контроля чётности.

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

@темы: программизмы, stm32f4discovery, stm32, arm, электроника

15:16 

STM32F4. system_stm32f4xx.c

Кто-то любит пирожки, а кто-то - нет.
Файлик system_stm32f4xx.c реализует канонную функцию SystemInit и настраивает тактирование системы. Не все знают, что для него есть гуй в виде экселевского файла, в котором можно изменить параметры под другой кварц, например, или ещё какую ерунду натворить.

скриншот

STM32F4xx_Clock_Configuration_V1.0.0.xls — гуй;
system_stm32f4xx.c — для работы от кварца 8 МГц.

@темы: няшодки, мии, stm32f4discovery, stm32, arm

13:32 

STM32F4. Поворотный энкодер.

Кто-то любит пирожки, а кто-то - нет.
Таймеры TIM2-TIM5 умеют аппаратно работать с поворотным энкодером. То есть вращение энкодера будет вызывать изменение регистра-счётчика (который TIMx->CNT). На самой плате энкодера нема, потому нужен свой. Если нема своего, то можно вовсе не смотреть.

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

<< Предыдущее Следующее >>

@темы: электроника, программизмы, stm32f4discovery, stm32, arm

14:33 

STM32F4. Локальные переменные в ассемблере

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

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

<< Предыдущее Следующее >>

@темы: arm, stm32, stm32f4discovery, ассемблер, программизмы

11:48 

STM32F4. Строки в ассемблере

Кто-то любит пирожки, а кто-то - нет.
Точно такой же отладочный вывод можно применять и в ассемблерном проекте. Кстати, это вполне себе повод ознакомиться с представлением строк в си и хотя бы самой простой работе с ними.
Файл retarget.c пусть и остаётся самим собой, реализация функции ITM_SendChar описана в файле cm4_core.h и пусть она там остаётся. Желающие, конечно, могут переписать на асм, она маленькая.

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

<< Предыдущее Следующее >>

@темы: программизмы, ассемблер, stm32f4discovery, stm32, arm

16:02 

STM32F4. Отладочный вывод в Кейл

Кто-то любит пирожки, а кто-то - нет.
Не все знают, что ST-Link на плате поддерживает трассировку (хотя бы по минимуму) и это можно использовать, чтобы выводить текстовую отладочную информацию с помощью printf прямо в кейл. Причём, это даже совсем не сложно.

Для начала требуется модуль трассировки в свойствах отладчика включить (см. на рисунке 1). И указать актуальную частоту ядра контроллера (см. на рисунке 2). Если system_stm32f4xx.c не используется, пишем 16, если же используется, то пишем 168. Если своя настройка производится — пишем своё число.
Для текстового отладочного вывода используется нулевой порт, только его и разрешим (см. на рисунке 3), нечего захламлять линию. То есть надо снять все галочки, каких на картинке нет (или в соответствующее поле записать 1).
читать дальше

<< Предыдущее Следующее >>

@темы: arm, stm32, stm32f4discovery, программизмы

16:31 

STM32F4. RTC

Кто-то любит пирожки, а кто-то - нет.
В STM32, конечно же, есть контроллер часов реального времени.

Для его запуска не обязательно даже иметь внешний кварц на 32.768 кГц, так как затактировать можно от внутреннего LSI-генератора на ~32 кГц (с возможностью калибровки) или внешнего основного кварца (с настраиваемым предделителем).
А ещё, как бонус, 20 регистров (80 байт) для хранения разных данных, питание им будет идти от батарейки, от которой часы и работают, когда нет основного питания.
Возможностей у часов много, они подробно описаны в RM, остановимся пока на базовом уровне...

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

<< Предыдущее Следующее >>

@темы: электроника, программизмы, stm32f4discovery, stm32, arm

11:14 

STM32F4. PWM

Кто-то любит пирожки, а кто-то - нет.
Практически все таймеры, за исключением базовых, имеют каналы сравнения, которые, в частности, умеют делать ШИМ. До четырёх штук на таймер. А именно: много всего
32 канала в сумме для всех таймеров, если я правильно посчитал.

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

<< Предыдущее Следующее >>

@темы: электроника, программизмы, stm32f4discovery, stm32, arm

17:30 

STM32F4. I2C

Кто-то любит пирожки, а кто-то - нет.
Интерфейс i2c широко распространён и используется. В stm32f4 модулей, реализующих данный протокол, аж целых три штуки.
Естественно, с полной поддержкой всего этого дела.

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

<< Предыдущее Следующее >>

@темы: программизмы, stm32f4discovery, stm32, arm, электроника

14:36 

STM32F4. Структура программы

Кто-то любит пирожки, а кто-то - нет.
Этот пост не относится конкретно к какой-то платформе, но примеры даны именно для stm32f4, ибо stm32 много у кого есть.

Раньше я особо не задумывался над структурой программ. Каждая программа была сделана по-разному, была весьма запутанной и со множеством очевидных и не очень связей между частями. Жуть. Между тем, использовать операционные системы не очень хотелось.
За год работы в ADL я всё же выработал для себя достаточно удобное представление кода в проекте.

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

<< Предыдущее Следующее >>

@темы: arm, stm32, stm32f4discovery, программизмы, электроника

22:52 

STM32F4. Контроллер внешних прерываний

Кто-то любит пирожки, а кто-то - нет.
Контроллер умеет следить за линиями ввода-вывода и генерировать события по фронту сигнала и имеет 7 векторов прерываний (5 индивидуальных и 2 групповых).

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

<< Предыдущее Следующее >>

@темы: программизмы, ассемблер, stm32f4discovery, stm32, arm, электроника

22:32 

STM32F4. NVIC

Кто-то любит пирожки, а кто-то - нет.
NVIC, векторный контроллер прерываний, есть во всех контроллерах на базе ядер Cortex-M, так как он входит в состав ядра. В старых ядрах контроллер прерываний был отдельно и не отличался хорошими характеристиками в плане скорости.
Описывается он подробно в Cortex-M4 Programming Manual.

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

<< Предыдущее Следующее >>

@темы: программизмы, ассемблер, stm32f4discovery, stm32, arm, электроника

22:44 

STM32F4. DMX

Кто-то любит пирожки, а кто-то - нет.
DMX - протокол, часто применяемый в современной осветительной технике. Обзорно я про него писал, вроде, сейчас же можно его сделать и на STM32F4. Благо, ничего сложного в нём нет.

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

@темы: электроника, программизмы, stm32f4discovery, stm32, arm

15:40 

STM32F4. Базовый таймер

Кто-то любит пирожки, а кто-то - нет.
Ознакомимся с такой очень полезной и простой периферией, как простой таймер (Basic timer), в микроконтроллерах STM32F4 простыми являются таймеры TIM6 и TIM7. Вообще, редкий микроконтроллер не имеет хоть какого-нибудь таймера для точного отсчёта времени. В STM32 все таймеры похожи по основным регистрам, просто в более сложных таймерах появляются новые флаги для настройки и новые регистры для контроля их работы в разных режимах.

Так вот, что же умеет и чем является даже самый простой и примитивный таймер?

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

<< Предыдущее Следующее >>

@темы: программизмы, ассемблер, stm32f4discovery, stm32, электроника, arm

Няшки-вкусняшки любят карандашики.

главная