Предыдущая версия справа и слева
Предыдущая версия
Следующая версия
|
Предыдущая версия
Следующая версия
Следующая версия справа и слева
|
ob:o7:stm32f103c8t6 [2017/10/03 10:19] prospero78 [Сборка контроллера] |
ob:o7:stm32f103c8t6 [2017/10/03 10:58] prospero78 [Прошивка контроллера] |
Также не помешают какие-нибудь газеты на рабочую поверхность, особенно, если это любимый полированный столик мамы/сестры/жены. Не забываем, что паяльник горячий -- нужна подставка, которая легко делается из куска медного провода толщиной 2,5...4 мм. | Также не помешают какие-нибудь газеты на рабочую поверхность, особенно, если это любимый полированный столик мамы/сестры/жены. Не забываем, что паяльник горячий -- нужна подставка, которая легко делается из куска медного провода толщиной 2,5...4 мм. |
| |
Обратите внимание, что длина контактной гребёнки в разы больше длины платы. Её необходимо монтажным ножом разрезать пополам, если у вас есть какие-либо платки для расширения, либо разъёмы, либо вы можете напаять гибкие проводники сечением 0,22...0,5 мм кв прямо на плату. С монтажным проводом туго, автор статьи обошёлся слаботочным проводом из кабеля SAS 8 x 0,22. Но необходимо помнить: перегрев платы чреват выходом из строя контроллера. Кто уже работал с паяльником, также должны помнить о статическом напряжении. Для избежания пробоя необходимо заземлять жало паяльника и тело. Например, на батарею (Если такая батарея не покрашена и надёжно заземлена. В противном случае, может быть даже ухудшение ситуации по сохранности контроллера). | Обратите внимание, что длина контактной гребёнки в разы больше длины платы. Её необходимо монтажным ножом разрезать пополам, если у вас есть какие-либо платки для расширения, либо разъёмы, либо вы можете напаять гибкие проводники сечением 0,22...0,5 мм кв прямо на плату. С монтажным проводом туго, автор статьи обошёлся слаботочным проводом из кабеля `SAS 8 x 0,22`. Но необходимо помнить: перегрев платы чреват выходом из строя контроллера. Кто уже работал с паяльником, также должны помнить о статическом напряжении. Для избежания пробоя необходимо заземлять жало паяльника и тело. Например, на батарею (Если такая батарея не покрашена и надёжно заземлена. В противном случае, может быть даже ухудшение ситуации по сохранности контроллера). |
| |
==== Чем подключить к ПК ==== | ==== Чем подключить к ПК ==== |
Самый оптимальный вариант подключения платы к ПК -- через переходник USB-UART. Выглядит он так: | Самый оптимальный вариант подключения платы к ПК -- через переходник `USB-UART`. Выглядит он так: |
| |
{{:ob:o7:cp2102-ms-1-1_zpsdf87b620.jpg?200|}} | {{:ob:o7:cp2102-ms-1-1_zpsdf87b620.jpg?200|}} |
| |
==== Подключение ==== | ==== Подключение ==== |
Из-за дешевизны контроллера, его начинка упрощена до невозможности. Так, например, контроллер Arduino более прост в этом плане. Но и более дорогой (примерно в 4 раза, при гораздо более скромных возможностях). | Из-за дешевизны контроллера, его начинка упрощена до невозможности. Так, например, контроллер `Arduino` более прост в этом плане. Но и более дорогой (примерно в 4 раза, при гораздо более скромных возможностях). |
| |
На конвертере UART нам потребуются все сигнальные контакты: Rx (чтение), Tx (передача). Дело также не пойдёт без питания 3.3 Вольта (3V3), и "земли" (GND). На контроллере часто есть дополнительный контакт 5 Вольт. Не вздумайте его подключить к 3.3 Вольта!!!! Ваш контроллер сразу отправится на небесную лужайку для электроники, которая умерла мученической смертью. По описанию, контроллер STM32F103C8T6 в качестве питания принимает напряжение от 2.2 до 3.3 Вольта. | На конвертере `UART` нам потребуются все сигнальные контакты: Rx (чтение), Tx (передача). Дело также не пойдёт без питания 3.3 Вольта (`3V3`), и "земли" (`GND`). На контроллере часто есть дополнительный контакт 5 Вольт. Не вздумайте его подключить к 3.3 Вольта!!!! Ваш контроллер сразу отправится на небесную лужайку для электроники, которая умерла мученической смертью. По описанию, контроллер `STM32F103C8T6` в качестве питания принимает напряжение от 2.2 до 3.3 Вольта. В ходе многочисленных экспериментов над этим контроллером, автор статьи по невнимательности подал питание через `UART`, и через блок питания от мобильного телефона на разъём `MicroUSB Type A` (на самом микроконтроллере). Результаты такой запарки были катастрофическими: вышли из строя микроконтроллер, `UART`, блок питания мобильного телефона, и есть подозрения, что в ноутбуке тоже не всё в порядке (по крайней мере, пришлось переустанавливать операционную систему). |
| |
Со стороны контроллера всё несколько сложнее. К моменту подключения все ножки гребёнки уже должны быть распаяны, так как контакты Tx и Rx у контроллера сидят ножках. Они все подписаны, так что при нормальном зрении -- они читаемы легко. | Подключение со стороны контроллера выглядит несколько сложнее. К моменту подключения все ножки гребёнки уже должны быть распаяны, так как контакты `Tx` и `Rx` у контроллера сидят ножках. Они все подписаны, так что при нормальном зрении -- они читаемы легко. |
| |
Небольшая табличка, как будет выглядеть подключение: | Небольшая табличка, как будет выглядеть подключение: |
|| GND || GND || | || GND || GND || |
| |
На контроллере, по крайней мере, две точки подключения 3V3 и GND. Никакой разницы нет между контактами с одинаковой маркировкой. Тут проблем не будет. | На контроллере, по крайней мере, две точки подключения `3V3` и `GND`. Никакой разницы нет между контактами с одинаковой маркировкой. Тут проблем не будет. |
| |
==== Подготовка инструментов ==== | ==== Подготовка инструментов ==== |
Разумеется, потребуется BlackBox Component Builder. На этой Вики, в разделе ссылки можно скачать этот пакет. | Разумеется, потребуется **BlackBox Component Builder**. На этой Вики, в разделе ссылки можно скачать этот пакет. |
В данном случае был использован пакет для Linux (x64). Он свободно скачивается с сайта http://oberoncore.ru/, раздел "Проекты". Пакет подготовлен Иваном Денисовым ((Новосибирск рулит)), потому, как всегда всё работает)). Выбор такого пакета обусловлен тем, что у автора статьи на личном ноуте стоит Linux Mint (x64). Обратите внимание: чтобы под Linux запустился BlackBox -- необходимо установить все пакеты, от которых зависит BlackBox. На странице загрузки Иван Денисов представил исчерпывающую информацию, как это сделать. На http://youtube.com/ можно посмотреть дополнительно видео. | В данном случае был использован пакет для **Linux (x64)**. Он свободно скачивается с сайта http://oberoncore.ru/, раздел "Проекты". Пакет подготовлен **Иваном Денисовым** ((Новосибирск рулит)), потому, как всегда всё работает)). Выбор такого пакета обусловлен тем, что у автора статьи на личном ноуте стоит **Linux Mint (x64)**. Обратите внимание: чтобы под **Linux** запустился **BlackBox** -- необходимо установить //все// пакеты, от которых зависит **BlackBox**. На странице загрузки **Иван Денисов** представил исчерпывающую информацию, как это сделать. На http://youtube.com/ можно посмотреть дополнительно видео. |
| |
Кроме BlackBox потребуется компилятор от Александра Ширяева((https://github.com/aixp/O7)). В этой подсистеме для BlackBox будет несколько папок: | Кроме **BlackBox** потребуется компилятор от** Александра Ширяева** ((https://github.com/aixp/O7)). В этой подсистеме для **BlackBox** будет несколько папок: |
* Micro -- содержит набор модулей для описания внутренней архитектуры множества контроллеров и их распиновку. Практически все они построены поверх ядер процессоров ARMv6 и ARMv7((Тех самых, что стоят в наших мобильных телефонах на базе Android)) | * `Micro` -- содержит набор модулей для описания внутренней архитектуры множества контроллеров и их распиновку. Практически все они построены поверх ядер процессоров **ARMv6** и **ARMv7** ((Тех самых, что стоят в наших мобильных телефонах на базе **Android** )) |
* O7 -- собственно, сам компилятор Oberon-O7. | * `O7` -- собственно, сам компилятор **Oberon-O7**. |
* Examples -- содержит ряд примеров, но их совсем немного. Так что вероятность, что попадётся пример под нужную модель контроллера весьма низка. | * `Examples` -- содержит ряд примеров, но их совсем немного. Так что вероятность, что попадётся пример под нужную модель контроллера весьма низка. |
| |
==== Код программы ==== | ==== Код программы ==== |
По сути, код показывает, как можно плавно (ШИМ) и дискретно управлять встроенным светодиодом. Вся программа состоит из мелких процедур, разобрать самостоятельно их совсем не сложно. | По сути, код показывает, как можно плавно (ШИМ) и дискретно управлять встроенным светодиодом. Вся программа состоит из мелких процедур, разобрать самостоятельно их совсем не сложно. |
==== Компиляция ==== | ==== Компиляция ==== |
Файл модуля должен быть сохранён в папке Mod подсистемы Micro. Если попытаться стандартным способом скомпилировать эту программу -- ничего не выйдет. Это правильно. Так как, это не Компонентный Паскаль!! Это Oberon-O7!!! Хотя, спутать их не составит никакой сложности. Разница между этими двумя языками -- в деталях ((именно в деталях кроется дьявол)). | Файл модуля должен быть сохранён в папке `Mod` подсистемы `Micro`. Если попытаться стандартным способом скомпилировать эту программу -- ничего не выйдет. Это правильно. Так как, это не **Компонентный Паскаль**!! Это **Oberon-O7**!!! Хотя, спутать их не составит никакой сложности. Разница между этими двумя языками -- в деталях ((именно в деталях кроется дьявол)). |
| |
Если подсистема O7 установлена верно, то должно появиться соответствующее меню -- O7. Именно в нём и надо выбрать команду на компиляцию. В нашем случае -- это архитектура ARMv7. Либо воспользоваться коммандером в комментариях, либо за концом модуля. | Если подсистема `O7` установлена верно, то должно появиться соответствующее меню -- `O7`. Именно в нём и надо выбрать команду на компиляцию. В нашем случае -- это архитектура **ARMv7**. Либо воспользоваться `коммандером` в комментариях, либо за концом модуля. |
| |
И, конечно, полученный бинарник надо скомпоновать с загрузчиком. После этого, бинарный код готов к прошивке на контроллер. | И, конечно, полученный бинарник надо скомпоновать с загрузчиком. После этого, бинарный код готов к прошивке на контроллер. |
| |
==== Прошивка контроллера ==== | ==== Прошивка контроллера ==== |
Для успешной прошивки контроллера необходимо установить программу stm32flash. На контроллере, для успешной прошивки необходимо перемычку boot0 поставить в положение ON((изначально обе перемычки стоят в OFF)). Это разрешит прошивку контроллера в его системную память. И в завершении всего, необходимо нажать кнопку RESET. Это заставит контроллер войти в режим прошивки и ожидать информацию с порта UART1 (те самые две ножки на боковой гребёнке контроллера). | Для успешной прошивки контроллера необходимо установить программу **stm32flash**. На контроллере, для успешной прошивки необходимо перемычку boot0 поставить в положение ON((изначально обе перемычки стоят в OFF)). Это разрешит прошивку контроллера в его системную память. И в завершении всего, необходимо нажать кнопку RESET. Это заставит контроллер войти в режим прошивки и ожидать информацию с порта UART1 (те самые две ножки на боковой гребёнке контроллера). |
| |
После этого, из каталога, где лежит готовый файл-прошивка с именем нашего модуля, но расширением *.hex, необходимо выполнить команду: | После этого, из каталога, где лежит готовый файл-прошивка с именем нашего модуля, но расширением *.hex, необходимо выполнить команду: |
stm32flash -w ./SlowLed.hex -v -g 0x0 /dev/ttyUSB0 | stm32flash -w ./SlowLed.hex -v -g 0x0 /dev/ttyUSB0 |
| |
Обратите внимание, что имя файла указано без названия подсистемы. Утилита stm32flash не понимает таких выкрутасов. Кроме того, устройство /dev/ttyUSB0 -- у читателя может называться по-другому. Чтобы узнать название устройства, необходимо запустить stm32flash без параметров((если не получится посмотрите видео Ивана Денисова)). | Обратите внимание, что имя файла указано без названия подсистемы. Утилита **stm32flash** не понимает таких выкрутасов. Кроме того, устройство `/dev/ttyUSB0` -- у читателя может называться по-другому. Чтобы узнать название устройства, необходимо запустить **stm32flash** без параметров ((если не получится посмотрите видео **Ивана Денисова** )). |
| |
Если прошивка прошла успешно, утилитка stm32flash выведет сообщение, что прошивка залита на 100%. У автора статьи за примерно 20 попыток прошить -- не было ни одного сбоя. Признаком передачи информации будет моргание светодиода на контроллере UART (Если, конечно, такой есть. А он обычно есть). | Если прошивка прошла успешно, утилитка **stm32flash** выведет сообщение, что прошивка залита на 100%. У автора статьи за примерно 20 попыток прошить -- не было ни одного сбоя. Признаком передачи информации будет моргание светодиода на контроллере `UART` (Если, конечно, такой есть. А он обычно есть). |
| |
После окончания прошивки контроллер сразу перейдёт к исполнению программы. Смотрим ссылку на видео: [[https://vk.com/videos309656471?z=video309656471_456239142%2Fpl_309656471_-2|вот так оно работает]], и, как говорится, не забываем ставить лайки :-) | После окончания прошивки контроллер сразу перейдёт к исполнению программы. Смотрим ссылку на видео: [[https://vk.com/videos309656471?z=video309656471_456239142%2Fpl_309656471_-2|вот так оно работает]], и, как говорится, не забываем ставить лайки :-) |
| |
Для того, чтобы контроллер работал сразу после подачи питания в автономном режиме, необходимо перемычку boot0 вернуть в положение OFF. В качестве источника питания подойдёт любая зарядка от сотового телефона с выходным током от 250 мА. | Для того, чтобы контроллер работал сразу после подачи питания в автономном режиме, необходимо перемычку `boot0` вернуть в положение `OFF`. В качестве источника питания подойдёт любая зарядка от сотового телефона с выходным током от 250 мА. Если будет необходимость питать дополнительную периферию -- не следует стесняться взять блок питания под 1000 мА. |
| |
==== Заключение ==== | ==== Заключение ==== |