- PVSM.RU - https://www.pvsm.ru -

Не так давно мне в руки попала отладочная плата STM32F429I-DISCO [1] на базе контроллера STM32F429ZI [2].
Пожалуй главной ее отличительно особенностью является помимо достаточно производительного процессора Cortex M4 — интегрированный экран на 2,4'' дюйма, которого вполне хватает для многих экспериментов.
Первым делом я естественно начал искать по нему документацию и примеры. Хорошая документация вместе с примерами нашлась прямо на сайта st.com [1], но естественно хотелось большего, туториалов и прочего. То чего так не хватает начинающему программисту под ARM. Но детальный поиск не дал каких то больших результатов. Поэтому пришлось собирать информацию по крохам, анализировать, пересматривать и тестировать ее.
И я решил как то попробовать поспособствовать популяризации данной удобной платформы.
Но данный пост не призван решить какие то всеобъемлющие проблемы, он ориентирован безусловно на начинающих и на тех, кто хотел бы попробовать, но считает, что это слишком сложно.
Тем кому это может показаться интересным, добро пожаловать под кат.
Я сам программист фрилансер, но сайтами и прочим программированием как то несколько наелся, потянуло ближе к уровню железа. Но к сожалению до этого с Си имел очень мало дела, поэтому осваивать по ходу пришлось не только отладку с ее периферией, но и язык и среду программирования.
Теперь о сути проекта и кратко об истории, почему меня это заинтересовало.
Какое то время назад я захотел сделать свой собственный GPS-трекер и в процессе его создания столкнулся с рядом проблем. Одной из которых была проблема антенн, нужно было подобрать хорошую антенну, а так же правильно ее подключить. Другой проблемой, которая вытекала из первой — анализ той или иной GPS антенны на основании той информации которую предоставляет GPS-модуль. И с появлением данной отладки эта задача стала для меня легко реализуема.
За основу я взял модуль EB-500, который легко можно достать и ценник у него вполне гуманный, а главное в интернете достаточно много информации по нему. Например тут [3]. В этом посте я не буду описывать как сделать свой GPS модуль. Его можно купить готовый, а можно легко спаять самому по ссылке выше.
Так же я считаю что данный код без адаптации сможет работать с разными модулями, поддерживающими протокол NMEA-0183, но подтвердить это не могу — не проверял лично.
После непродолжительных метаний выбрал среду разработки KEIL. На мой взгляд это одна из самых удобных сред разработки из существующих под STM32.
Начал я естественно с более простых вещей, освоился с периферией, с дисплеем и начал заниматься непосредственно проектом.
Первой задачей было написать приличную библиотеку для работы с USART-ом для общения с GPS модулем.
Второй задачей было написать библиотеку для анализа данных приходящих от GPS модуля, в моем случае это разбор NMEA команд.
Последней задачей было вывести информацию на экран отладки и представить ее в более менее удобном для восприятия и анализа виде.
Так же для удобства отладки кода разобрался с SWO (Serial Wire Viewer), через этот порт очень удобно передавать отладочную информацию прямо через USB подключение отладочной платы.
В код, чтобы все не было слишком скучно добавил картинку спутника в качестве заставки, показывающуюся при включении платы.
На видео показано 3 этапа. Первый — подключена активная антенна, которая висит на окне. Второй — антенна убрана от окна вглубь квартиры. Третий — активная антенна отключена от модуля.
Я решил не вываливать весь код здесь, а выложил его на GitHub-е, он рабочий, проверенный и довольно простой, думаю ни у кого не возникнет проблем с ним, хотя сразу оговорюсь — до совершенства ему очень далеко, так как я только начинающий «C» программист, прошу это учитывать.
Один момент только мне кажется имеет смысл пояснить. У меня в коде настроена работа с USART1 и скорость 9600, но все эти настройки могут быть легко переключены в заголовочном файле /mylibs/usartlib.h
Код на GitHub [4]
Дальше я хочу реализовать функцию загрузки Эфемерид в модуль EB-500, подключив к отладке еще и GPRS модуль.
На этом все, надеюсь мои наработки кому-нибудь пригодятся. Удачи!
Автор: czuryk
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/stm32/57225
Ссылки в тексте:
[1] STM32F429I-DISCO: http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF259090
[2] STM32F429ZI: http://www.st.com/web/en/catalog/mmc/FM141/SC1169/SS1577/LN1806/PF255419
[3] тут: http://we.easyelectronics.ru/part/gps-modul-eb-500.html
[4] GitHub: https://github.com/czuryk/stm32f429-gps
[5] Источник: http://habrahabr.ru/post/216095/
Нажмите здесь для печати.