Загрузчик STM32

В микроконтроллерах STM32 существуют три интерфейса для заливки прошивки: 

  • JTAG
  • SWD
  • UART (через загрузчик)

Как вы уже догадались, в этой статье пойдет речь о последнем способе. Я считаю его не самым лучшим вариантом для постоянного использования, однако в некоторых случаях он очень даже хорош. Вот допустим устройство уже готово и работает у пользователя, и вдруг ВНЕЗАПНО возникает потребность в перепрошивке. Конечно, можно разобрать девайс и подпаяться к отладочному интерфейсу, но это относительно сложно + нужен отладчик. А что если устройство уже соединено с компом через UART ? В этом случае гораздо проще использовать этот интерфейс для загрузки прошивки. Вот тут-то загрузчик будет очень кстати. Пользователю достаточно нажать одну кнопку и девайс входит в режим прошивки. Пару нажатий мышки и прошивка обновлена. Теперь попробуем разобраться более детально как все это работает. Для начала нам нужно подключить наш контроллер к компьютеру через интерфейс USART1.

Читать далее «Загрузчик STM32»

Подключаем сервопривод к STM32

Те кто занимаются робототехникой наверняка прекрасно знают, что такое сервопривод и для чего он нужен. Ну а лично я встретился с этим механизмом впервые и в этой статейке хочу попытаться максимально просто объяснить как подключить сервопривод к STM32. Итак, что же представляет собой этот хитрый механизм: Сервопривод — это устройство позволяющее относительно точно задавать и сохранять положение своего вала. В отличии от обычных двигателей вал которых крутится постоянно, в сервоприводе он поворачивается на определённый угол. Причем если какое либо внешнее воздействие будет стараться изменить угол поворота, то хитроумная схема внутри будет заставлять сервопривод вернуть вал на место. Хотя если расковырять и присмотреться, то ничего шибко хитрого: Внутри небольшая платка, коллекторный двигатель, переменный резистор и редуктор. Электроника определяет текущее положение вала благодаря переменному резистору который вращается вместе с ним. Из сервопривода выходят три провода — питание и управляющий. Электроника сравнивает текущее положение вала с тем которое должно быть (исходя из управляющего сигнала) и если есть разница, то пытается эту разницу свести на нет за счет вращения двигателя в ту или другую сторону. В силу своего нищебродства я купил самый дешевый сервопривод Mystery SD-90 за 4 бакса, вот он:

Читать далее «Подключаем сервопривод к STM32»

Работа с MicroXplorer

У всех контроллеров STM32 очень много ног. Это конечно же хорошо, отпадает необходимость наращивать количество ножек при помощи сдвиговых регистров и расширителей портов. Но иногда из-за их большого количества возникает путаница. Большинству периферийных устройств типа АЦПUARTов итд необходимы ноги контроллера для работы, и бывает такая ситуация когда два блока периферии претендуют на одну и ту же ногу. Естественно одновременно использовать её они не могут и тут у нас есть два выхода из ситуации:

  1. Использовать другой аналогичный блок периферии (второй UART например) 
  2. Использовать ремап

С первым пунктом всё понятно, а вот что же такое remap в STM32 ? В двух словах: Ремап позволяет какому-либо блоку периферии использовать для своих целей другие (но тоже жестко заданные) ноги контроллера. Чтоб смотреть что куда ремапится надо лазить в даташит и искать это там. Для того чтоб узнать какая периферия использует одинаковые ноги надо опять смотреть даташит. А можно не открывать его по таким пустякам, а просто заюзать неплохую программку от ST под названием MicroXplorer

Читать далее «Работа с MicroXplorer»

Вычисление контрольных сумм

Что такое контрольная сумма (CRC) и для чего она нужна, я думаю знают многие. Ну а если кто не знает, то напомню, что контрольная сумма это некоторое число которое получается в результате обработки по определённому алгоритму некоторого объёма данных. Главное свойство контрольной суммы заключается в том, что она будет разной для двух массивов данных если они различаются хотя бы на один бит. Применяются контрольные суммы зачастую при передаче данных, для проверки целостности информации. Для расчета контрольных сумм применяются самые разнообразные алгоритмы, количество матана в которых превышает все разумные пределы. Именно поэтому применять мы их не будем, а пойдем другим путём. В контроллерах STM32 есть много полезной периферии, но ничего особо нового и необычного (например по сравнению с AVR) я не увидел. Лишь только одна штука меня немного приятно удивила и порадовала — аппаратная считалка контрольной суммы, и ей то мы сейчас и займемся.

Читать далее «Вычисление контрольных сумм»