Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
xXxBadBoyxXx
0 / 0 / 0
Регистрация: 18.09.2015
Сообщений: 70
1

Проект по автоматизации установки магнетронного напыления на МК STM32F303 Discovery

15.11.2018, 19:31. Просмотров 3298. Ответов 7
Метки нет (Все метки)

Всем доброго времени суток! Прошу подсказать некоторые моменты относительно программирования микроконтроллера STM32.

Ситуация такова – делаю дипломную работу (она больше практическая), цель – автоматизировать работу установки магнетронного напыления. В наличии имеется отладочная плата STM32F303 Discovery kit, на борту установлен МК STM32F303VCT6. Вот значит нужно запилить: во-первых, программу на ПК для управления МК, во-вторых программу собственно для самого МК. Моя идея - пишу графический интерфейс (с кнопками, показаниями датчиков) на C# WinForms, и используя класс SerialPort, общаюсь с МК. Насчет самого МК потруднее, я имею небольшой опыт только с Ардуиной, с STM-ми не сталкивался. Немного начал просматривать про них инфу, и оказалось очень много разных нюансов, библиотек, сред разработок и т. д. Таким образом возникло несколько вопросов:

1) Какую IDE выбрать (наиболее низкий порог вхождения, или наиболее удобная)?

2) Программировать МК, наверное, буду на Си, но может лучше С++?

3) Узнал про как минимум две библиотеки – HAL и StdPeriph. Использовал и первую и вторую, чтобы зажечь светодиоды, т. е. функционал, как я понял у них вроде как одинаковый. Тогда вопрос - какую легче всего юзать?

4) Как организовать двухстороннюю связь МК-ПК? Через что будет легче? (здесь нужно чтобы нажав на ПК кнопку, сигнал уходил на МК, например, подавалось бы питание на одну их ног, а также нужно, чтобы показания с датчиков установки уходили на МК далее через АЦП и выводились на ПК.

Прошу помочь, подсказать, посоветовать, так как я, ну можно сказать, новичок во всех этих делах.

Заранее благодарю за отзыв!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2018, 19:31
Ответы с готовыми решениями:

Моделирование напыления на пластину
Нужен совет, моделирую процесс напыления на пластину, все бы ничего но есть обязательное условие,...

Проект установки
Привет всем! Подскажите, пожалуйста, как в проекте установки для моей программы сделать так,...

После установки Netbeans немогу создать проект
На чистую Ubuntu 16.04 LTS установил через консоль JDK: sudo apt-get install default-jdk После...

Скомпилировать проект в один файл без установки
Доброго времени суток. Столкнулся с проблемой, на рабочие компьютеры нельзя устанавливать ничего...

Delphi не мотеж компилировать проект после установки Alphaskins
Hi all :declare: Суть траблы. Установил Alphaskins для Delphi XE3, Alphaskins. Всё прошло...

7
_SayHello
574 / 328 / 108
Регистрация: 30.07.2015
Сообщений: 1,188
15.11.2018, 22:17 2
xXxBadBoyxXx,
1) Бесплатная и самая простая IDE (на мой взгляд) Em-bitz. Платные присутствуют в виде Keil, IAR. Там есть и бесплатные, но с ограничениями.
2) На Си проще. Есть готовые либы от производителя.
3) Смотря как проще, HAL более абстрактная либа, если словишь где то косяк то у нее под капотом дебажить не особо приятно. StdPeriph просто немного обернутые в функции регистры.
4)Запили какой-нибудь протокол типа Modbus. МК будет хранить данные у себя в массиве (состояние ног, состояние для выводов, коды АЦП аналоговых входов), а ПК будет слать команды на считывание/запись определенных параметров.

Я на последнем курсе ВУЗа пилил установку управления нагревом на двух магнетронах. Использовал связку STM32F303VC + modbus. Кодил в EM-bitz с StdPeriph.
0
xXxBadBoyxXx
0 / 0 / 0
Регистрация: 18.09.2015
Сообщений: 70
16.11.2018, 09:02  [ТС] 3
Цитата Сообщение от _SayHello Посмотреть сообщение
4)Запили какой-нибудь протокол типа Modbus. МК будет хранить данные у себя в массиве (состояние ног, состояние для выводов, коды АЦП аналоговых входов), а ПК будет слать команды на считывание/запись определенных параметров.
А что думаете насчет виртуального COM порта, например, Uart или CDC?
0
_SayHello
574 / 328 / 108
Регистрация: 30.07.2015
Сообщений: 1,188
16.11.2018, 09:13 4
xXxBadBoyxXx, Я делал на USART через преобразователь ADuM1201 + cp2101. Работает хорошо, скорости 115200 бод/с достаточно было вполне. Про CDC. Тут немного с ним попрактиковался правда с STM32L4DISCOVERY. Можно попробовать и на нем. Либы USB стека есть у производителя для F3 серии на STDperiph и на HAL. Я пробовал только на HAL, потому что на L4 stdperiph не поддерживается.
В общем плане есть идея переписать интерфейс на USB, так как отпадет необходимость ADuM1201 + cp2101, а это минус 300-400 рублей с платы. Мне в экономическом плане это нравится. Если устройство штучное, я бы не парился и делал через USART+DMA.
Тут в чем вопрос USB стек работает внутри чисто на прерываниях, которых достаточно много от хоста прилетает. Даже если ничего не передается. Насколько это сильно грузит ядро я пока не знаю. У меня просто много в проект напихано + RTOS крутится. Надо будет поэксперементировать. У USB стека от производителя не предполагается работы с DMA, может туда как то и можно прикрутить, но мне было лень)))
UPD: У modbus максимальная длина фрейма 256 байт. CDC за раз вроде может съесть 64 байта (вроде даже 63), так что при больших посылках их придется дробить.
У F3 серии в прерываниях USART есть RTO прерывание которое специально для протокола Modbus срабатывает при нахождении линии IDLE в течение определенного таймаута. Таким образом можно вообще нахалявить, не париться с таймером после каждого байта. А просто поставить DMA на прием + прерывание RTO и по прерыванию забрать счетчик DMA и выключить его. Таким образом можно прикрутить DMA как на передачу так и на прием.
0
xXxBadBoyxXx
0 / 0 / 0
Регистрация: 18.09.2015
Сообщений: 70
16.11.2018, 11:20  [ТС] 5
Цитата Сообщение от _SayHello Посмотреть сообщение
xXxBadBoyxXx, Я делал на USART через преобразователь ADuM1201 + cp2101. Работает хорошо, скорости 115200 бод/с достаточно было вполне. Про CDC. Тут немного с ним попрактиковался правда с STM32L4DISCOVERY. Можно попробовать и на нем. Либы USB стека есть у производителя для F3 серии на STDperiph и на HAL. Я пробовал только на HAL, потому что на L4 stdperiph не поддерживается.
В общем плане есть идея переписать интерфейс на USB, так как отпадет необходимость ADuM1201 + cp2101, а это минус 300-400 рублей с платы. Мне в экономическом плане это нравится. Если устройство штучное, я бы не парился и делал через USART+DMA.
Тут в чем вопрос USB стек работает внутри чисто на прерываниях, которых достаточно много от хоста прилетает. Даже если ничего не передается. Насколько это сильно грузит ядро я пока не знаю. У меня просто много в проект напихано + RTOS крутится. Надо будет поэксперементировать. У USB стека от производителя не предполагается работы с DMA, может туда как то и можно прикрутить, но мне было лень)))
UPD: У modbus максимальная длина фрейма 256 байт. CDC за раз вроде может съесть 64 байта (вроде даже 63), так что при больших посылках их придется дробить.
У F3 серии в прерываниях USART есть RTO прерывание которое специально для протокола Modbus срабатывает при нахождении линии IDLE в течение определенного таймаута. Таким образом можно вообще нахалявить, не париться с таймером после каждого байта. А просто поставить DMA на прием + прерывание RTO и по прерыванию забрать счетчик DMA и выключить его. Таким образом можно прикрутить DMA как на передачу так и на прием.
Сложновато мне разобраться в вашем сообщении)) Но спасибо) Кстати, если что, в моей отладочной плате есть как бы уже встроенная пооддержка USB - виртуального COM порта, ну то есть можно без всяких переходников настраивать связь, просто воткнув USB кабель в мк и пк, главное библиотеки настроить.
0
_SayHello
574 / 328 / 108
Регистрация: 30.07.2015
Сообщений: 1,188
16.11.2018, 11:21 6
xXxBadBoyxXx, а я просто думал, что у тебя будет отдельное устройство на которое ты контроллер поставишь как на отладочной плате. Если ты отладочную будешь в самом устройстве использовать то USB да, уже готов.
0
xXxBadBoyxXx
0 / 0 / 0
Регистрация: 18.09.2015
Сообщений: 70
16.11.2018, 11:24  [ТС] 7
Цитата Сообщение от _SayHello Посмотреть сообщение
xXxBadBoyxXx, а я просто думал, что у тебя будет отдельное устройство на которое ты контроллер поставишь как на отладочной плате. Если ты отладочную будешь в самом устройстве использовать то USB да, уже готов.
А вот Вы советуете ModBus или вот еще SLIP есть, это тоже как через вирт. COM порт работать можно?
0
_SayHello
574 / 328 / 108
Регистрация: 30.07.2015
Сообщений: 1,188
16.11.2018, 11:37 8
xXxBadBoyxXx, я не использовал SLIP, не подскажу.
0
16.11.2018, 11:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.11.2018, 11:37

Прерывание EXTI на stm32f303
Всем добрый вечер!:) Начал изучать новый микроконтроллер и хочу зажигать светодиоды от нажатия...

Stm32f303+freertos+interrupts
Без прерываний все работает неплохо, хочу прикрутить прерывания, пока без семафоров, просто в...

Прерывания USART на STM32F303
Здравствуйте,я столкнулся с проблемой связанной с прерыванием USORT3. Мне нужно принимать и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru