STM32 на примере STM32F103C8T6

 
+
-
edit
 

Balancer

администратор
★★★★★
Пришёл китайский STM32F103C8T6




Не пойму, USB на нём разведён, системой видится. Но не определяется как опознанное устройство. Гугление на тему программирование обычно приводит только решения с подключением внешнего USB-UART. Понятно, что не проблема, но зачем тогда этому модулю полная разводка USB? Ведь не для одного же питания? :)
 33

GOGI

координатор
★★★★
У STM32F103 нет встроенного USB загрузчика, он прошиваться только через UART может.
В своей программе USB ты можешь использовать и даже можешь залить туда USB загрузчик, но встроенный поддерживает только UART
1  31.031.0

Balancer

администратор
★★★★★
Ага, уже так и понял.
 33
RU FantomAK #20.02.2016 17:55  @Balancer#16.02.2016 14:07
+
-
edit
 

FantomAK

втянувшийся

Balancer> Пришёл китайский STM32F103C8T6
Balancer>

Balancer> Понятно, что не проблема, но зачем тогда этому модулю полная разводка USB?
У этого, если верить кубику, полноценный USB на PA11/12 имеется
Для питалова - это у STM8
Ещё, засада, - PB2 выведен через 100к на один из джампиков, как boot1 и PA13/14 используются на выводах отладчика.
Но два полных порта, короче говоря, стрясти таки можно ;)
Ещё, на PC12 или PC13 светодиод висит (где точно не сообразил ещё)
Шить проще дешёвым ST-Link V2, заодно при отладке пригодится
ЗЫ: паять будешь - поделись впечатлением ;)
ЗЫЫ: схема там:

STM32F103C8T6 ARM Development Board (Cortex-M3) | Open ImpulseOpen Impulse

SKU: LCT35859789334 The STMF103xx medium-density performance line family incorporates the high-performance ARM Cortex-M3 32-bit RISC core operating at a 72 MHz frequency, high-speed embedded memories and an extensive range of enhanced I/Os and peripherals connected to two APB buses. These board’s features make it ideal for a wide range of applications such as motor control, power management, medical and handheld equipment, PC and gaming peripherals, GPS platforms, industrial applications and more. Loading... // www.openimpulse.com
 
"Быть пессимистом потрясающе. Я всегда или прав, или приятно удивлен."(с)  
RU Balancer #20.02.2016 17:58  @FantomAK#20.02.2016 17:55
+
-
edit
 

Balancer

администратор
★★★★★
FantomAK> Шить проще дешёвым ST-Link V2, заодно при отладке пригодится

Я таким шить планирую:

Брал под ESP8266 в минимальном варианте (ESP-01). Ну и под ATtiny85 теперь ещё  :)

FantomAK> ЗЫ: паять будешь - поделись впечатлением ;)

Да я почти сразу пропаял, как пакет открыл :) Паял коническим жалом, прикладывая проволочку припоя со встроенным флюсом, так что никаких интересных впечатлений :)
 33
RU Balancer #20.02.2016 18:03  @FantomAK#20.02.2016 17:55
+
-
edit
 

Balancer

администратор
★★★★★
FantomAK> Ещё, на PC12 или PC13 светодиод висит (где точно не сообразил ещё)

У меня прямо на плате возле светодиода написано PC13 (и на фотке в топикстарте тоже). И тестовый скетч-мигалка в библиотеке под Arduino PC13 использует. Правда, я пока не брался разбираться с программированием. Подключение в лоб TX/RX к A10/A9 не работает. То ли на что-то другое цеплять надо, то ли джамперами загрузчик выставлять соответствующий, то ли вообще по Serial не шьётся и придётся заказывать нормальный программатор, типа того же ST-Link V2 — разбираться надо, пока времени не было :)
 33

GOGI

координатор
★★★★
Balancer>то ли вообще по Serial не шьётся и придётся заказывать нормальный программатор, типа того же ST-Link V2 — разбираться надо, пока времени не было :)
По последовательному порту они все шьются. Есть аппноут по тому, как активируется bootloader в разных версиях, надо в нем смотреть.
1  44.044.0

Balancer

администратор
★★★★★
GOGI> По последовательному порту они все шьются.

Прошился blink из Arduino IDE. Нужно было boot в 1 поставить. По этому рецепту делал и цеплял:

Arduino goes STM32

You can develop for STM32 using the Arduino IDE. Here are the steps: What you need: Steps: 1. Wire STM32 module and Serial-to-USB module as shown below:        2. Download and install Arduino IDE (I did use 1.6.3) 3. Download ‘extract it and copy the folder ‘Arduino_STM32-master’ to your Arduino/hardware folder (C:\Programs\Arduino\hardware). 4. Run Arduino IDE, choose settings: ‘Board: Generic STM32F103C series‘‘Variant: STM32F103C8 (20k RAM, 64k Flash)’ ‘Upload method: Serial‘‘Port: ’ 5. // Дальше — grauonline.de
 

...

Теперь надо бы поискать что-то более высокоуровневое :)
 33
RU FantomAK #22.02.2016 09:21  @Balancer#20.02.2016 17:58
+
-
edit
 

FantomAK

втянувшийся

Balancer> Я таким шить планирую:
Balancer> 1pcs/lot FT232RL FT232 USB TO TTL 5V 3.3V Download Cable To Serial Adapter Module ForArduino USB TO 232-in Other Electronic Components from Electronic Components & Supplies on Aliexpress.com | Alibaba Group
Я такое вот прикупил, спецом:

Мини ST LINK/V2 ST LINK STLINK STM8 STM32 эмулятор скачать супер защита купить на AliExpress

Купить товар Мини ST LINK/V2 ST LINK STLINK STM8 STM32 эмулятор скачать супер защита в категории Прочие электронные компоненты на AliExpress. ST-LINK/V2 ST LINK STLINK STM8 STM32 эмулятор скачать супер protectioОписание продуктанаш продукт миni ST cc-link тренаж // ru.aliexpress.com
 

Подороже, но в Кейле вышло очень удобно - заливка и пошаговый отладчик получается сразу
Правда сейчас нужен полный порт и как-то придётся выкручиваться
ЗЫ: Там, кстати, такой-же STM32 воткнут ;)
"Быть пессимистом потрясающе. Я всегда или прав, или приятно удивлен."(с)  
+
-
edit
 

zeon13

новичок
Доброго времени суток всем! Кто может помогите пожалуйста в следующей проблеме:
Микроконтроллер stm32f103c8t6. В кубе выставляю RCC HSE и LSE от Crystall/Ceramic. Порт А2 - это 12 нога контроллера включаю как GPIO Output. SYS->Debug->Serial Ware.
Далее нажимаю создать проект, код генерится, открывается в IARе 7.50.2. Ничего не делаю, просто компилирую и вываливается ошибка Error[Ta097]: Cannot call intrinsic function "__nounwind __DSB" from Thumb mode in this architecture G:\STM_Project\ADC_\GPIO_Pin12\Drivers\CMSIS\Include\core_cm3.h 1618

Я пока еще начинающий, не знаю даже куда сунуться чтоб эту ошибку исправить.
Кто знает помогите пожалуйста?
 51.0.2704.10351.0.2704.103
+
-
edit
 

FantomAK

втянувшийся

G:\STM_Project\ADC_\GPIO_Pin12\Drivers\CMSIS\Include\core_cm3.h 1618
zeon13> Я пока еще начинающий, не знаю даже куда сунуться чтоб эту ошибку исправить.
zeon13> Кто знает помогите пожалуйста?
Есть подозрение - в кубике, в настройках, поищи галку что-то типа: "вставлять в проект только необходимое", и включи
Иначе оно по умолчанию нехилую кучу мусора даже в пустой проект пихает
Думаю в этом твоя собака зарыта ;)
Ага! Вот там:

STM32CubeMX start code -> Eclipse быстрый старт -> отладка в Eclipse через ST-Link Discovery / STM32 / Сообщество EasyElectronics.ru

Наверное в инете есть сотни статей с подобной темой. Но, так как тема относится к опенсорсу, — никто не гарантирует // we.easyelectronics.ru
 

Пункт "Начальный код в STM32CubeMX для Eclipse"
Картинка пять: "Progect Settings"
Только не: "Copy all used..."!!! ;)
"Быть пессимистом потрясающе. Я всегда или прав, или приятно удивлен."(с)  41.0.2272.11841.0.2272.118
Это сообщение редактировалось 12.08.2016 в 07:38
RU Balancer #19.05.2017 20:25  @Balancer#20.02.2016 20:58
+
-
edit
 

Balancer

администратор
★★★★★
Balancer> Прошился blink из Arduino IDE. Нужно было boot в 1 поставить. По этому рецепту делал и цеплял

Блин. Сейчас пытаюсь задействовать STM32 для управления RGB светодиодной матрицей:

RGB LED матрица 64x32 [Balancer#19.05.17 20:20]

Пришла китайская RGB-матрица Free shipping Led Display P5 32*64 Pixles 320*160mm 64x32 1/16 scan indoor rgb full color hub75 SMD p5 led display module-in LED Displays from Electronic Components & Supplies on Aliexpress.com | Alibaba Group Cheap led display module, Buy Quality smd p5 directly from China led display p5 Suppliers: Free shipping Led Display P5 32*64 Pixles 320*160mm 64x32 1/16 scan indoor rgb full color hub75 SMD p5 led display module //  www.aliexpress.com   Неплохо,…// Радиоэлектронный
 


И не могу воспроизвести прошивку blink для теста :) Старая прошивка работает, STM32 мигает, а новая не прошивается. Хотя, вроде, всё делаю, как раньше.

Надо, видимо, подробно записывать всю последовательность действий :)
 44
RU Balancer #19.05.2017 21:01  @Balancer#19.05.2017 20:25
+
-
edit
 

Balancer

администратор
★★★★★
Balancer> Надо, видимо, подробно записывать всю последовательность действий :)

Повезло. В старой тестовой прошивке стояло Serial.println("Hello World");. Посмотрел монитор порта — пусто. Оказалось, на той схеме, что смотрел, перепутаны RX и TX :) Поменял — заработало.

Ну и на будущее себе пометка, а то вдруг тоже забуду. При работе с Arduino IDE нужно:

1. Перевести BOOT0 в «1» (это я выше писал)
2. Нажать RESET.

Плата переходит в режим ожидания прошивки. После прошивки перезапустится и стартует автоматом. Если джампер BOOT0 в «0» не переставить, то после ресета снова ждёт прошивку. Соответственно, каждый раз перед аплоадом скетча нужно жать RESET.

Ну и настройки Arduino IDE для STM32F103C8T6:
Прикреплённые файлы:
2017-05-19_21-00-50.png (скачать) [383x157, 6 кБ, 0 загрузок]
 
 
 44

  • Balancer [19.05.2017 22:48]: Редактирование параметров темы
  • Balancer [19.05.2017 22:50]: Редактирование параметров темы
+
-
edit
 

Balancer

администратор
★★★★★
По поводу программирования через USB. Вот попался рецепт:

Programming an STM32F103 board using its USB port (Blue Pill)

While the $2 board is cheap and very commonly found, getting up and running is slightly convoluted. Here is a short guide on how to set it… //  medium.com
 

Надо будет попробовать (не пробовал).
 44
+
-
edit
 

Monya

опытный

Balancer>... Оказалось, на той схеме, что смотрел, перепутаны RX и TX :) Поменял — заработало.
Ага, эта музыка будет вечной... :D
Сколько раз уже так влетал, и все не могу привыкнуть и перестать ошибатся :(
 49.0.2623.11249.0.2623.112
+
-
edit
 

Balancer

администратор
★★★★★
Научился через Arduino (ЯП/IDE) управлять портами не через digitalWrite, а через регистры. То, что надо для управления панелью (вместо регистра PORTB Arduino).

Примерно так:
code cpp
  1. void setup() {
  2.   // Пока не знаю, как настроить вывод нативно, через GPIOA->regs->CRL не вышло.
  3.   // GPIOA->regs->CRL = (GPIOA->regs->CRL & 0x33333333) ; //set PA0-PA7 output — не работает
  4.   // Поэтому — через Arduino API
  5.   pinMode(PA0, OUTPUT);
  6.   pinMode(PA1, OUTPUT);
  7.   pinMode(PA2, OUTPUT);
  8. }
  9.  
  10. void loop() {
  11.   // Вешаем для теста RGB-светодиод каналами на PA0/PA1/PA2
  12.   // Инкрементим регистр состояний —
  13.   // младшие биты по очереди перебирают все комбинации
  14.   // Светодиод меняет цвета каждую секунду
  15.   GPIOA->regs->ODR++;
  16.   delay(1000);
  17. }


Подробнее по нативному программированию пинов:

GPIO registers and port manipulation - Arduino for STM32

Postby iwalpola » Sun Jul 03, 2016 9:35 pm Code: Select all Code: Select all Code: Select all Code: Select all Code: Select all Code: Select all Code: Select all Code: Select all Postby RogerClark » Sun Jul 03, 2016 10:42 pm Postby Ollie » Sun Jul 03, 2016 11:01 pm Postby RogerClark » Sun Jul 03, 2016 11:25 pm Postby iwalpola » Sun Jul 03, 2016 11:49 pm Postby smithy » Sun Sep 04, 2016 2:54 pm Code: Select all Code: Select all Code: Select all Code: Select all Code: Select all Code: Select all Postby atacanteknik » Mon May 08, 2017 7:05 am Postby edogaldo » Mon May 08, 2017 9:57 am Code: Select all Postby atacanteknik » Mon May 08, 2017 11:22 am Postby edogaldo » Mon May 08, 2017 11:53 am Return to “Code snipplets” Users browsing this forum: No registered users and 0 guests //  www.stm32duino.com
 

API - STM32duino wiki

Arduino boards support 8-bit PWM, which means that calls to analogWrite() take values between 0 (always off) and 255 (always on). STM32 boards support 16-bit PWM so values can range from 0 (always off) and 65535 (always on). For backward compatibility, in STM32duino, analogWrite() still takes values between 0 (always off) and 255 (always on); the new pwmWrite() function provides instead support to the higher resolution 0 (always off) and 65535 (always on). Arduino boards support 10-bit ADC, which means that calls to analogRead() will return values between 0 and 1023. //  Дальше — wiki.stm32duino.com
 

Потом прошил, наконец, USB-загрузчик. И теперь моя STM32 шьётся по USB, USB-Serial можно убрать в коробочку :) Рецепт есть тут:

Дешевая STM32 плата + Arduino IDE UPD 15.07.2016

Хотите прокачать ваши Arduino проекты? Заставить их работать быстрее, измерения и регулировку сделать точнее, ну и добавить баги(с новыми девайсами они... //  geektimes.ru
 
 44
+
-
edit
 

Monya

опытный

Balancer> Научился через Arduino (ЯП/IDE) управлять портами не через digitalWrite, а через регистры. То, что надо для управления панелью (вместо регистра PORTB Arduino).
Кстати, это хорошо, спасибо за инфу, что в ST это работает. А то я с PIC, с ассемблера начинал - так для меня как раз при переходе на Arduino и корежило это digitalWrite. У Microchip GPIO - стандартная команда.
 58.0.3029.11058.0.3029.110
+
-
edit
 

Balancer

администратор
★★★★★
Monya> Кстати, это хорошо, спасибо за инфу, что в ST это работает. А то я с PIC, с ассемблера начинал - так для меня как раз при переходе на Arduino и корежило это digitalWrite

Так оно и в Arduno (т.е. на Atmega) тоже можно так работать. Регистры (на самом деле макросы, в зависимости от платформы) PORTB/PORC/PORTD. Пишешь в регистр битовую маску, она появляется на соответствующих пинах:

Arduino - PortManipulation

Reference   Language | Libraries | Comparison | Changes Port registers allow for lower-level and faster manipulation of the i/o pins of the microcontroller on an Arduino board. The chips used on the Arduino board (the ATmega8 and ATmega168) have three ports: Each port is controlled by three registers, which are also defined variables in the arduino language. The DDR register, determines whether the pin is an INPUT or OUTPUT. The PORT register controls whether the pin is HIGH or LOW, and the PIN register reads the state of INPUT pins set to input with pinMode(). //  Дальше — www.arduino.cc
 
code cpp
  1. PORTD = B10101000; // sets digital pins 7,5,3 HIGH


При чём я об этом только вчера узнал :D:hihihi:
 44
+
-
edit
 

Monya

опытный

Balancer> PORTD = B10101000; // sets digital pins 7,5,3 HIGH
Balancer> }}}
Balancer> При чём я об этом только вчера узнал :D:hihihi:
Оно то и понятно, бо как это вроде стандартное средство для такого типа контроллеров. Причем точно также можно и переключать порты на ввод-вывод, только записывая значения в другой регистр. Но полную доку на ардуиновскую IDE на англицком читать влом, а в переводных опусах для радиогубителей этого нет, увы.
 49.0.2623.11249.0.2623.112
RU Balancer #05.06.2017 11:11  @Balancer#19.05.2017 22:51
+
-
edit
 

Balancer

администратор
★★★★★
Balancer> По поводу программирования через USB.
Balancer> Надо будет попробовать (не пробовал).

Забыл отчитаться :) Всё отлично работает. При чём через USB программировать намного удобнее. Просто жмёшь в IDE «Upload» и готово. Никаких манипуляций с перемычками и Reset'ом.
 44
Последние действия над темой

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru