Я использую 8-битные микроконтроллеры AVR для создания роботов-последователей со студентами уже несколько лет. Теперь я хотел бы перейти на ARM Cortex-M3, потому что я хотел бы добавить некоторые более ресурсоемкие функции, такие как одометрия и слияние датчиков.
Требования следующие:
- 8 аналоговых входов,
- 4 выхода ШИМ,
- Я 2 с ,
- 2 входа квадратурного энкодера,
- последовательный ввод / вывод,
- Самопрограммирование по беспроводной сети без физического доступа к роботу.
- Мультиплатформенный инструментарий + IDE (OS X, Linux, Windows).
Шаги, которые я предпринял до сих пор:
Я использую эту плату на основе STM32F103C8. Я полагаю, что у этого MCU есть все, что мне нужно, включая 2 x QEI, которые я планировал реализовать в программном обеспечении, но этот имеет аппаратное обеспечение, так здорово:
- Доска http://eud.dx.com/product/high-quality-cortex-m3-stm32-stm32f103c8t6-development-board-w-swd-interface-844380789
- Программист http://eud.dx.com/product/st-link-v2-programmer-emulator-mini-stlink-downloader-for-stm8-stm32-mcu-development-board-844380733
Я следовал этому, чтобы настроить мой toolchain + IDE:
Я обнаружил, что документация по этому чипу разбросана по ряду PDF-файлов, которые я скачал:
- Спецификация STM32F103x8 http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/CD00161566.pdf
- Справочное руководство http://www.st.com/st-web-ui/static/active/en/resource/technical/document/reference_manual/CD00171190.pdf
- Несколько других документов, таких как AN2606 (режимы загрузки памяти), PM0075 (руководство по программированию флэш-памяти) и AN3155 (протокол последовательного загрузчика), которые мне, вероятно, понадобятся в будущем.
Я также скачал стандартную периферийную библиотеку STM32F10x, но она, в свою очередь, порекомендовала мне приобрести более новую версию STM32CubeF1, которая, как я считаю, является всего лишь маркетинговым переименованием вышеупомянутого, поэтому я получил оба:
- http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/LN1939/PF257890
- http://www.st.com/web/en/catalog/tools/PF260820
Наконец, у меня также есть «Полное руководство по ARM Cortex-M3» Джозефа Ю, которое я читаю, ожидая прибытия плат.
Мои вопросы:
Я немного перегружен документацией, если не сказать больше, и я даже не уверен, что все понял. Например, в техническом описании и справочном руководстве указано, что микросхема имеет 3 таймера, способных к квадратурно-кодированным входам. Но я не могу найти документацию о регистрах, которые управляют таймерами где-либо в PDF-файлах выше. Что мне не хватает?
Должен ли я использовать (более старую?) Стандартную периферийную библиотеку или (новее?) Куб? Какая разница? Я понимаю, что обе библиотеки избавляют меня от манипулирования регистрами напрямую и являются рекомендуемым способом. Я прав?
Где находится документация для библиотек (кроме встроенных комментариев doxygen, которые хороши и все, но я бы предпочел иметь html / pdf с возможностью поиска)?
Я выбрал Eclipse + GCC ARM + OpenOCD в качестве набора инструментов, потому что считаю, что это единственный вариант, который будет работать на 3 основных ОС без размера кода или других ограничений. Есть еще варианты?
источник
Ответы:
Что касается таблиц, они действительно разделены. «Справочное руководство» представляет собой сложное описание того, как делать вещи, конфигурацию и подробные соображения обо всем MCU. «Datasheet» - это только краткое описание функций, выводов, пакетов MCU и т. Д. Также есть очень полезный документ для каждой линии STM32 (F1,2 ... 7) «Начало работы с аппаратной разработкой MCU STM32F7xxxx», в котором предоставляет вам много информации, если вы хотите разработать индивидуальную доску. По сравнению с AVR описания регистров иногда немного отстают от основного описания конкретной главы.
STM32CubeMX - это не библиотека, а полезная программа от ST, которая позволяет вам устанавливать распиновку, ее конфигурации, устанавливать системные часы и т. Д., А затем, в конце, генерировать код и весь проект. Проект может быть создан специально для Eclipse (System Workbench для STM32), в который вы просто импортируете этот проект и готовы к работе. Новая библиотека - HAL («уровень аппаратной абстракции»), и попробуйте ее использовать. Это новая вещь, и иногда трудно найти примеры в Интернете, но не учите своих студентов устаревшим технологиям. HAL удобен в использовании и имеет документацию, поэтому я думаю, что это лучший выбор.
Какая библиотека? Во всяком случае, я думаю, это не должно быть проблемой для Google.
Даже если вы хотите использовать только одну ОС (например, Windows), Eclipse (AC6 = Системная рабочая среда для STM32) является - я думаю - лучшим вариантом. Есть, например, Keil uVision 5 - но это действительно ужасная среда IDE - в ней отсутствуют большинство функций, которые должна предложить среда IDE (рефрактор, щелчок и поиск, правильная проверка ошибок, поиск ссылок и многое, многое другое). Итак, в целом, Eclipse - практически единственный разумный выбор для IDE для STM32.
источник