5 сообщений в этой теме

A_R_M    0

Добрый день, (пост длинный, если нужна суть, читаем со 2 абзаца, все вопросы к Вам - в конце)

1) Около года назад понял, что ардуинка это всего-лишь игрушка (а потратил на неё довольно большие для подростка деньги), разочаровался и наконец вовсе забросил всё это (ещё немного поигравшись с avr). Потом интерес ожил, заказал с али вот такую (см прикрепление) платку с  Stm32f407VE камнем с 168 мгц, DMA, 192 КБ ОЗУ, 512 КБ ПЗУ и множество других различных вкусностей. Во время того, как эта платка лежала на таможне, ускоренными курсами проходил вот такую книжку http://www.softlabirint.ru/book/23552-mikrokontrollery-avr-ot-azov-programmirovaniya-do-sozdaniya-prakticheskih-ustroystv-av-belov-2016-pdfcd.html (хотя она для AVR, но для общего развития сошла :-))

2) Ну естественно, программировать stm посложнее чем avr (да ещё корявые библиотеки *(), да и тем более чем ардуинку. Решил попробовать всё самому https://habrahabr.ru/post/216843/  Поэтому даже старый-добрый Hello World на C++, да или просто С, (пока нет разницы) пошёл ну ОЧЕНЬ медленно, но стартовал.

Но зачем мне такая крутая платка для таких простых вещей, на которых хватило и возможностей Attiny? Да просто вдохновился такими проектами, как uzebox, avrchipbasic, эмулятор ZX Spektrum и проч. Но ведь возможности stm32f407 гораздо выше даже самой навороченной uzebox. По этому решил создать собсетвенную систему на этом камне с прерываниями, видеоплеером, ну и т.д. на C++. Естественно, это не тяп-ляп, да и корабль, а вполне серьёзная штука. Есть множество вопросов по ней. Ну, поехали!

I) Необходимо будет выполнять программы с Nand памяти, а сохранять и считывать, копировать с Micro sd (а это возможно?)

II) Решил использовать C++, но не думаю что его гибкости хватит на все задачи (а может, хватит?)

III) Микропроцессору, хотя и мощному, придётся одновременно и решать задачи, и производить прерывания, переключения, считывание, вывод информации НА ТВ ЭКРАН ПОСРЕДСТВОМ ТЮЛЬПАНОВ, вывод звука и прочие задачи. (А хватит на всё?)

IV) Решил использовать встроенную 192-КБ память для самой "Операционки" и её ядра, а для других приложений использовать внешнее ОЗУ

V)  а) Возможна ли разработка приложений для этой платы с неё самой (из-под неё, только как будет производиться компиляция?)

     б) Если пункт а) невыполним, то возможна компиляция программ на пк, например, в двоичный код, который понятен ядру ARM?

VI) Вообще за сколько можно разработать такую систему при ежедневной разработке в течение часа и постоянно кричащей маме "Делай уроки!"

За грамотные ответы буду очень благодарен!

 

stm32f407vet6-arm-stm32-minimum-system-learning-evaluation-development-board-module.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mail_robot    1 407

вы пытаетесь изобрести велосипед. Все это давно уже реализовано в Raspberry PI и его многочисленных клонах/ответвлениях. Там вам будет линукс со всеми блэкджеками и так далее. А эта плата и этот процессор совсем для других задач создавался. Понимаю что хочется что-то самомму сделать, но такая энергия достойна лучшего применения. Подумайте внимательно

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
hd44780    189
16 часов назад, A_R_M сказал:

I) Необходимо будет выполнять программы с Nand памяти, а сохранять и считывать, копировать с Micro sd (а это возможно?)

II) Решил использовать C++, но не думаю что его гибкости хватит на все задачи (а может, хватит?)

III) Микропроцессору, хотя и мощному, придётся одновременно и решать задачи, и производить прерывания, переключения, считывание, вывод информации НА ТВ ЭКРАН ПОСРЕДСТВОМ ТЮЛЬПАНОВ, вывод звука и прочие задачи. (А хватит на всё?)

IV) Решил использовать встроенную 192-КБ память для самой "Операционки" и её ядра, а для других приложений использовать внешнее ОЗУ

V)  а) Возможна ли разработка приложений для этой платы с неё самой (из-под неё, только как будет производиться компиляция?)

     б) Если пункт а) невыполним, то возможна компиляция программ на пк, например, в двоичный код, который понятен ядру ARM?

VI) Вообще за сколько можно разработать такую систему при ежедневной разработке в течение часа и постоянно кричащей маме "Делай уроки!"

1. Сомневаюсь. У f407 ядро Cortex-M4F, у него есть какие-то ограничения на исполнение кода не из flash. Точно не скажу, нужно проверять. Но что-то по этой части он умеет.

2. C++ - для данного проца чересчур. ООП (классы, объекты) предполагает интенсивное использование динамически выделяемой памяти, а с внутренним RAM в 192 кила, да ещё и разодранным на 3 или 4 разных куска Вы на плюсах далеко не уедете. В каком-то минимальном варианте оно, конечно, взлетит, но в целом - хило .... Если хотите плюсы на STM32 - берите хотя бы F4x9 + SDRAM.

3. Исключено. Забудьте. Ф407 слишком слаб для этого. Тюльпаны - вообще отдельная тема, насколько я знаю, на аврах, равно как и на STM32 её путём никто не решил. Разъём TFT - интерфейс FSMC проца - для дисплеев типа SSD1289, ILI9320, SSD1963 и родственных им. Либо что-то на SPI. Но это ещё тормознутее. Лучше уж этот FSMC.

4. Про внешнее ОЗУ забудьте полностью. У вас 100-ногий корпус, у него урезанный FSMC, ничего путного, кроме дисплея, к нему не прицепишь. С учётом п. 1 - хз, что выйдет ...

5. Прогу вы по-любому пишете на обычном компе, в специальных программах (Coocox, IAR, Keil и пр). Они умеют компилировать язык Си в код для этих процов. И заливать полученный код в процессор через программатор.

6. Без комментариев ... Прочитайте предыдущие пункты ... Может быть, у вас что-то изменится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
guest87    0
On 5/14/2017 at 6:13 PM, A_R_M said:

V)  а) Возможна ли разработка приложений для этой платы с неё самой (из-под неё, только как будет производиться компиляция?)

С таким аппетитом проще сразу Linux брать, его можно перепахать вдоль и поперек, да и плееров полно готовых. И желательно железку Cortex A, иначе вы замучаетесь компиляции ждать. В общем banana pi/orange pi и прочие raspberry на том же али. Если очень хочется сможете даже написать свою операционку, но это будет целая сага, лет на 10+, если вы это серьезно. Посмотрите спеки MPEG4 старых вариантов и подумайте - точно хотите такое програмить да еще единолично?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Oxford    17

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

  • Похожие публикации

    • Автор: Сергей Скопинцев
      Нужно разработать циклическую программу сбора информации от 10 измерительных источников. Период повторения цикла - одна секунда
      Источники:
       М - тензопреобразователь давления. Мостовая схема питается постоянным напряжением, выходной сигнал от 0 до 100 милливольт
       Т, ТМ, ТА- три канала измерения изменения напряжения в диапазоне от 400 до 600 милливольт (тоже нужен мост?)
       ЛМ - анализатор максимума напряжения (от 0 до 5 Вольт) по 10 точкам более-менее распределённых в измерительном цикле. Найденный максимум потом должен участвовать в анализе, постепенно уменьшаясь на 20% каждый цикл
       ВЛ - измерить напряжение на Малой емкости (50 пФ) с помощью емкостного делителя по алгоритму:
                         Снять Землю со средней точки емкостного делителя, подать на емкостной делитель положительный Импульс
                         Замерить нужное нам напряжение в средней точке делителя
                         Снять положительный Импульс с делителя, посадить на землю среднюю точку делителя
      - остальные каналы К7...К10  служебные
      Разрядность данных - 16 двоичных.

      Результаты писать на MicroSD текстовым файлом, на первом месте в строке текущее время в секундах, остальные каналы разделены пробелами
      Порядок каналов:
      Т - М -ТМ - Вл - ЛМ -...
      Коэффициенты усиления по каждому информационному каналу должен иметь возможность изменить оператор по формуле y = Ax + B
      Прибор автономный, питается от + 5 Вольт.
       
    • Автор: Anton Klapatun
      День добрый!
       
      Имеется sim-карта со статическим IP и модем SIM800C, который через UART соединен с STM32F0.
      Прочитав статью на хабре, которая и являлась отправной точкой, было решено повторить подвиг, но в версии lwip 2.0.3, которой я пользуюсь, ppp изменился до неузнаваемости, что сначала внесло некоторый сумбур. Но в документации к lwip был найден текстовый файл с настройкой ppp-соединения (ppp.txt, прикреплю его ниже), в котором было все, что нужно для счастья, но когда модем начал общаться с контроллером, дальше фазы LCP дело не зашло. Как я понял из документа (ppp_connect.docx), который оказался у меня уже-и-не-помню-откуда, после конфигурирования параметров соединения в фазе LCP контроллер должен посылать в модем пакет с заголовком PAP (C0 23), но он почему-то этого не делает... Он вообще больше ничего не делает. Я пытался проследить в отладчике весь путь запроса, что приходит от модема, но это только больше меня запутало.
      Собственно, прием данных у меня организован через прерывание. После ввода AT-команды "ATD*99***1#" и получения ответа "CONNECT", устанавливается флаг "ppp_enable" и при приходе байта он кладется в очередь `xQueue_PPP_Package`.
      void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { uint8_t u8; if(huart == &huart1) { if (ppp_enable == true) { portBASE_TYPE xHigherPriorityTaskWoken_PPP_Rx; u8 = Sim800.UsartRxTemp; xHigherPriorityTaskWoken_PPP_Rx = pdFALSE; xQueueSendFromISR(xQueue_PPP_Package, &u8, &xHigherPriorityTaskWoken_PPP_Rx); } else { /*Reception of AT commands*/ } HAL_UART_Receive_IT(&huart1,&Sim800.UsartRxTemp,1); } } В задаче `StartLwIPTask` в бесконечном цикле проверяется эта очередь и при появлении элементов, записывает их в массив `PPPx.Data` и при фиксации второго HDLC-заголовка (0x7E), отправляет данные в lwip функцией `pppos_input`.
      P.S. Переменная `PPPx.Last_Index` это размер пришедшего ppp-пакета.
      void StartLwIPTask(void const * argument) { /* USER CODE BEGIN StartLwIPTask */ /*Создаем очередь*/ xQueue_Sim800_Package = xQueueCreate(128, sizeof(uint8_t)); xQueue_PPP_Package = xQueueCreate(128, sizeof(uint8_t)); uint8_t u8=0; volatile int setup = 0; tcpip_init( NULL, NULL ); /*Инициализация стека tcp/ip*/ /*Create a new PPPoS interface*/ ppp = pppos_create(&ppp_netif, output_cb, status_cb, 0); // /* Auth configuration, this is pretty self-explanatory */ ppp_set_auth(ppp, PPPAUTHTYPE_PAP, "beeline", "beeline"); /* Require peer to authenticate */ ppp_set_auth_required(ppp, 1); /*Only for PPPoS, the PPP session should be up and waiting for input.*/ ppp_set_silent(ppp, 1); /* * Initiate PPP listener (i.e. wait for an incoming connection), can only * be called if PPP session is in the dead state (i.e. disconnected). */ ppp_listen(ppp); /* Infinite loop */ for(;;) { if (sim800_init() == S_RESET) /*Настройка модуля Sim800*/ continue; for (;;) { if (pdPASS == xQueueReceive(xQueue_PPP_Package, &u8, 100/portTICK_RATE_MS)) { if (u8 == 0x7E) t++; PPPx.Data[PPPx.Last_Index++] = u8; if (t==2) { PPPx.Last_Index--; pppos_input(ppp, PPPx.Data, PPPx.Last_Index); t=0; memset(&PPPx, 0, sizeof(PPPx)); } } } } /* USER CODE END StartLwIPTask */ } Как я писал выше, все идет хорошо, пока идет фаза LCP, но после подтверждения контроллера запроса опций, наступает тишина.
      В интернете мне удалось найти довольно мало исчерпывающей информации и примеров по связке stm32+lwip+ppp, если кто-нибудь занимался подобным или сталкивался с похожей проблемой, буду очень признателен за помощь и за пинки в нужном направлении. Заранее спасибо.
       
       
      ppp.txt
      ppp_connect.docx
    • Автор: Ru_s
      Здравствуйте. Подскажите пожалуйста, возможно ли на attiny13 реализовать такую штуку. Мне в процессе работы программы нужно поменять режим работы таймера/счетчика с fast PWM на обычный счёт, отсчитать длительный промежуток времени и опять вернутся в режим ШИМ. Т.е. я подаю на ногу сигнал ШИМ и когда он в максимальном значении, я его отключаю, и тупо подаю на ногу высокий лог. уровень. В это время Т/С по идее свободен, и мне надо посчитать время работы выхода на максимальном лог. уровне, при достижении какого-то значения времени нужно перевести т/с обратно в ШИМ. Возможно ли это? И как приблизительно это реализовать
    • Автор: Kiraspbkiev Kira
      День Добрый. Есть два вопроса от новичка: 1) Правильная ли схема сделанная мною? 2) если схема верна то как правильно подключить к atmega328p-mu usb на чипе cp2102-grm?
      На схеме колодка JP1 это AVR ISP а JP2 это UART
      С проектированием столкнулся в первый раз, цель узнать что то новое и сделать своими руками:)

    • Автор: agbp
      Приветствую! 

      Мы - молодой стартап из Санкт-Петербурга с хорошей финансовой поддержкой. Создаём дроны.
      Нам не хватает серьезного программиста на полный загруженный график (можно удаленно). 

      Из основных задач, которые нужно будет решать: 
      1. Программа отслеживания объекта в видеопотоке (процессор STM32F4xx). 
      2. Программа стабилизации БПЛА по данным с гироскопа и наведение на цель. 
      3. Создание программы управления бесколлекторным двигателем по закрытому контуру с возможностью бесшовной интеграции с программой просчёта траектории ЧПУ станка. 
      4. Программирование бортового комплекса управления БПЛА (автопилот) 
      5. Полный пакет работ по созданию бортового и наземного комплексов управления роем БПЛА. 
      Оформление в штат. 
      ЗП обсуждаема, от 60 000 в месяц.
      P.S. дроны, беспилотники, авиамодели... это только начало!
  • Сообщения

    • @dima1967 Перемудрили вы со схемой ))) Вот вам файл без индикации и термозащиты, ничего лишнего. Тренируйтесь на нем. ))) Обратите внимание на выбросы тока на шунте при КЗ.  И посмотрите что получилось у вас. Посмотрите пульсации на выходе и их изменение при увеличении емкости конденсатора фильтра после диодного моста. А так же стабильность схемы во всех режимах с вашими изменениями. Для сравнения с измененной схемой, не изменяйте номинал шунта. Его потом всегда можно изменить. Еще есть 17 версия от @Starichok . Полистайте немного назад.
    • Попробовал. Вроде работает как надо. (в симуляторе). Теперь бы найти копеечную и ходовую замену этому полевику. Напряжение там до 15 вольт, токи вообще мизерные. Нельзя-ли туда приколхозить как-то N-канальный полевик? У меня их полведра с материнок.
    • 220 мкф 16 в   дешево https://ru.aliexpress.com/item/FREE-SHIPPING-20pcs-16V220uF-NIPPON-SME-10x12-5mm-High-Quality-Original-Electrolytic-Capacitors/32256983502.html?spm=a2g0s.8937460.0.0.2e642e0eVanjkk
    • А можно услышать и без замены усилителя 
    • Типа песТня... А у бомжей каждый день выходной Им некуда больше спешить Кручусь каждый день типа я заводной И думаю как дальше жить Хотел бы всё бросить и снова начать Судьба ты моя госпожа Не видеть, не слышать, не отвечать Меня превратила в пажа...          
    • Чем уже полоса ос, тем меньше выброс, тем более звон. Полосу, собственно, и заужают до получения апериодического переходного процесса до, как я уже говорил, до сотен а то и десятков герц. Но на определенной частоте все равно ос будет чувствительна к нагрузке.
    • Судя по равномерности свечения на малых и очень малых токах, могу предположить что и ВАХ не сильно различается. Когда буду паять, сравню токи. Помню были фонарики с круглыми выводными светодиодами, один из которых всегда горел ярче всех, а после замены батареек на щелочные сгорал раньше всех. Надеюсь у SMD 5050 разброд параметров внутри партии не такой большой.