Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > Устройства на ARM процессорах

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.03.2013, 00:00   #1
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Maple Mini

Кандидат на замену моего ArDuino Nano V.7
Maple mini представляет собой отладочную плату с штыревыми выводами с низу, для удобства прототипирования.
В Maple mini установлен 48-контактный STM32 процессор с той же скоростью и памятью, как и у его старшего брата Maple,
но используется только 34 GPIO. Он может питаться от USB или внешнего источника питания.
Нажмите на изображение для увеличения
Название: mpm1.jpg
Просмотров: 1522
Размер:	104.0 Кб
ID:	903

Размеры: 50 х 18 мм
Микропроцессор: 32-разрядный ARM Cortex M3 72 МГц (STM32F103CBT6)
Память: 120 КБ флэш-памяти программ и 20 КБ SRAM
I / O Pins: 34 (12 из которых обеспечивают выход 16-бит ШИМ)
АЦП: 9 (Разрядностью 12-бит)
Периферия: 4 таймера, 2 I2C, 2 порта SPI, 3 USART
Нажмите на изображение для увеличения
Название: mpm1_01.jpg
Просмотров: 882
Размер:	103.3 Кб
ID:	902

Купить контроллер Maple

Установка драйверов для Maple mini и первый запуск Maple IDE

Мaple-ide, внешне ни чем не отличается от Arduino-IDE
Нажмите на изображение для увеличения
Название: maple.JPG
Просмотров: 751
Размер:	40.9 Кб
ID:	909
Admin вне форума   Ответить с цитированием
Старый 16.03.2013, 06:09   #2
fot
Junior Member
 
Регистрация: 24.11.2012
Адрес: Новосибирск
Сообщений: 14
Вес репутации: 0
fot is an unknown quantity at this point
По умолчанию

Серия статей про STM32 (4 части) на русском ; даташиты, руководства и т.п. ...

http://eugenemcu.ru/publ/13-1-0-71

Последний раз редактировалось fot; 16.03.2013 в 09:32.
fot вне форума   Ответить с цитированием
Старый 16.03.2013, 10:24   #3
stD
Senior Member
 
Аватар для stD
 
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1311
stD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant future
По умолчанию

Я бы взял пару штук!
stD вне форума   Ответить с цитированием
Старый 16.03.2013, 11:48   #4
stD
Senior Member
 
Аватар для stD
 
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1311
stD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant future
По умолчанию

IDE для неё такое же как для ардуины.

stD вне форума   Ответить с цитированием
Старый 16.03.2013, 16:39   #5
HiddenPilot
Member
 
Регистрация: 07.03.2013
Сообщений: 75
Вес репутации: 0
HiddenPilot is an unknown quantity at this point
По умолчанию

Цитата:
Сообщение от mebitek Посмотреть сообщение
IDE для неё такое же как для Кардуины.
Так и есть! Это логическое продолжение ардуины.
Почти все функции ардуины портированы. Скетчи написанные для ардуино с некоторыми изменениями спокойно компилируются в MAPLE IDE. библиотеки тоже потихоньку перенсят.

Некоторые особенности:
1. Есть небольшая специфика, в плане шевеления ногами. Но это не столько специфика, а сколько логическое продолжение, которого многим не хватало.

Режим работы ног теперь может быть не только In или Out. Но принимать следующие значения.
OUTPUT - тут и так все понятно, 1- TTL, 2- GND.
OUTPUT_OPEN_DRAIN - выход с открытым стоком, т.е., как я понял, в режиме "Low" пин потдякивается к земле, тем самым превращая в шине логическую 1 в 0.

INPUT - переводит ногу в режим Цифрового входа,
INPUT_ANALOG - переводит ногу в режим аналогового входа
INPUT_PULLUP – вход, подтянутый к плюсу питания. Как я понял, для считывания данных с выхода подобному OUTPUT_OPEN_DRAIN
INPUT_PULLDOWN– вход, подтянутый минусу питания.
INPUT_FLOATING – синоним INPUT. вход без подтяжки.
PWM – выход аналоговый PWM,
PWM_OPEN_DRAIN – выход аналоговый PWM с открытым стоком. (тоже может быть удобно для бездрайверного управления ключом, ИМХО)

2. Как можно было заметить, ноги в STM32 более гибко настраиваются, чем в AVR. Например Pin D4(PA7), может быть цифровым IO, может быть подключен к АЦП, так же может выступать в роли ШИМ, и при этом так же может перенастраиваться как составляющая порта SPI.

3. Но при разработке схем нужно обязательно учитывать, что не все ноги MAPLE выдерживают работу с TTL в 5V. Т.е. либо ставим делитель, либо подключаем к "5 volt tolerant" ногам. Все АЦП ноги работают с напряжением не более 3.3V.

4. Разрядность PWM в STM32 16-бит, так что для скетчей использующих в ардуине функцию analogWrite(n) придется добавить умножение на 256. т.е. поменять все "analogWrite(" на "analogWrite(256*" и получить в итоге analogWrite(256*n) выходе.

5. ШИМ у MAPLE работает на частоте 1,1кГц, у Ардуино - 490Гц.

5. Т.к. контроллер 32х разрядный, арифметика над большими числами должна производиться побыстрее, чем на арду. Так же появилась нативная поддержка функции деления. (очень не хватало в ардуино. некоторые скетчи очень мног4о теряли в быстродействии из-за деления).

7. 2х байтных переменных(типов данных) теперь нет. Либо 1 байт в памяти, либо 4 байта. При объявлении типа данных, Int и Long теперь синонимы. За-то появился тип данных - "монстр": Long Long - 8 байт в памяти, т.е. может хранить числа до 18 446 744 073 709 551 616.

8. Заливается все в MAPLE c помощью бутлоадера и хардварного USB.В системе опознается как DFU устройство и наверняка можно шить используя DfuSe. С помощью нее у меня перешивается осциллограф DSO201(он тоже на STM32). Есть еще JTAG и на некоторых MAPLE совместимых платах SWD. с ними превращение говнокодов в конфетку происходит гораздо проще(MAPLE IDE как я понял пока не поддерживает такую отладку, и наврятли будет)

9. Кстати! На счет отладки, наконец-то программу можно заливать прямо в RAM минуя Flash. А значит можно сколько угодно раз заливать прошивку в контроллер, без опасения запортить флеш по ограничению количества перезаписей. При обесточивании, MAPLE очистит все что мы на творили в RAM. да и запись проекта в рам должна проходить быстрее.

продолжение следует...

Последний раз редактировалось HiddenPilot; 16.03.2013 в 18:54.
HiddenPilot вне форума   Ответить с цитированием
Старый 17.05.2013, 22:51   #6
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Получил сегодня контроллер Maple Mini
Первый тестовый код заработал!!!
PHP код:
void setup() 
{
    
pinMode(BOARD_LED_PINPWM);  //  Настроить выход пина на PWM
}

void loop()  
{

    for (
int fade 0fade 65536fade++) //Плавно зажигаеи
    
{
        
pwmWrite(BOARD_LED_PINfade);
        
delayMicroseconds(15);
    }

    for (
int fade 65535 fade 0fade--) //плавно тушим
    
{
        
pwmWrite(BOARD_LED_PINfade);
        
delayMicroseconds(15);
    }

Первое включение и процесс установки драйверов Maple mini
Admin вне форума   Ответить с цитированием
Старый 23.05.2014, 02:57   #7
stD
Senior Member
 
Аватар для stD
 
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1311
stD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant future
По умолчанию Re: Maple Mini

А что можно на ней сделать, круче чем на дуине;
Вот тут : https://duino.ru/maple-mini-na-kontr...ortex-m3-.html

Что можно поключаться CAM-шне? И или на её чего! Просто штуа вроде иьересня.
stD вне форума   Ответить с цитированием
Старый 29.07.2014, 18:21   #8
sanyok
Junior Member
 
Регистрация: 12.03.2014
Сообщений: 3
Вес репутации: 0
sanyok is an unknown quantity at this point
По умолчанию Re: Maple Mini

Заказал себе одну платку Maple mini на STM32F103CBT6. Качество отличное. Плата приходит в комплекте с двумя нераспаяными рейками pin headers. На ebay такой цены нет вроде бы.
Плата, действительно, достойна внимания. Тем более по такой цене (ардуино нано так же стоит).
Будет ли у Админа либа к этой плате наподобее CyberLib?
sanyok вне форума   Ответить с цитированием
Старый 29.11.2014, 20:14   #9
HiddenPilot
Member
 
Регистрация: 07.03.2013
Сообщений: 75
Вес репутации: 0
HiddenPilot is an unknown quantity at this point
По умолчанию Re: Maple Mini

Цитата:
Сообщение от sanyok Посмотреть сообщение
Будет ли у Админа либа к этой плате наподобие CyberLib?
Думаю получится такую замонстрячить, а пока поделюсь кое-какими наработками:

Не плохие сайты/статьи с описанием работы того или иного функционала.
Для начала, в качестве справочного пособия, в части общего понимания:
1. http://www.gaw.ru/html.cgi/txt/doc/m..._arh/index.htm
Это как настольный букварь. Кратко, лаконично, и зачастую понятно. Не раз возвращался к разделам этой книги, и каждый раз она давала ключ к пониманию некоторых кодов в интернете.

2. Cайты с обучающими урками по различным направлениям Stm32:
http://cxem.net/mc/mc.php
http://eugenemcu.ru/publ/13
http://ziblog.ru/category/mikrokontr...stm32f1/page/2
http://chipspace.ru/category/microco...-stm32/page/4/

в частности:
SPI(max=18MHz):
http://www.gaw.ru/html.cgi/txt/doc/m..._arh/5_2_1.htm
http://easystm32.ru/interfaces/43-spi-interface-part-1
http://easystm32.ru/interfaces/45-spi-interface-part-2
http://chipspace.ru/stm32-spi/
http://pcus.ru/1567-prikruchivaem-k-...tu-po-spi.html
http://we.easyelectronics.ru/STM32/h...me-master.html

Много чего интересного есть у Stm32 в части SPI(2 канала, ремэп портов на другие ноги, подключение к ДМА, 16-битные пакеты.). Но один замечательный режим пришелся как нельзя кстати - полудуплексный режим работы SPI. Устанавливается старшим байтом "BIDIMODE". + делитель на 16(pclk=36МГц/16=2,25МГц). И для HX711 мы получаем готовый хардварный интерфейс самостоятельно складывающий через DMA прямо в нужный нам массив, или сразу в радиомодуль. А это значит, что любые весы могут быть подключены к умному дому и не только

2. Режим работы с адресным пространством в режиме "Bit Band"
http://www.gaw.ru/html.cgi/txt/doc/m..._arh/2_3_7.htm
http://we.easyelectronics.ru/STM32/s...t-banding.html
http://eugenemcu.ru/publ/13-1-0-77
http://forum.chibios.org/phpbb/viewtopic.php?f=3&t=1123

больше всего мне понравится этот скрипт, т.к. он показался самым универсальным.
http://electronix.ru/forum/index.php...3&#entry968953

Еще одна ооочень интересная статья про резервирование адресного пространства в памяти под бингбэнд и последующее использование его для быстрого доступа к битам.
http://www.micromouseonline.com/2013...ding-approach/


3. И самое вкусное, что так греет слух - это DMA(помните UDMA33/66? Это оно самое ):
http://www.gaw.ru/html.cgi/txt/doc/m..._arh/4_2_3.htm
http://amberclan.clan.su/publ/uroki_...7_dma/7-1-0-95
http://we.easyelectronics.ru/STM32/p...bibliotek.html
http://kazus.ru/forums/showpost.php?...45&postcount=9
http://amberclan.clan.su/publ/uroki_...7_dma/7-1-0-95
так же не плохие коды работы с ДМА и прерываниями генерит ниже приведённая программка.

если нужна быстрая работа с ногами контроллера, вот мой вариант ногодрыга.
PHP код:
    GPIOB_BASE->BSRR GPIO_BSRR_BS1//LEDPin(PB1) UP GPIO_BSRR_BS1 = ((uint32)0x00000002)/ 
    
+= gpio_read_bit(GPIOB,8)>>8// Read PB8 - Button
    
GPIOB->regs->BRR GPIO_BSRR_BS1;// LEDPin(PB1) Down 
ну и генератор настроек/програмного кода:





Вложения
Тип файла: zip STM32generator_exe (1).zip (446.0 Кб, 830 просмотров)

Последний раз редактировалось HiddenPilot; 10.01.2015 в 07:54.
HiddenPilot вне форума   Ответить с цитированием
Старый 29.11.2014, 21:30   #10
HiddenPilot
Member
 
Регистрация: 07.03.2013
Сообщений: 75
Вес репутации: 0
HiddenPilot is an unknown quantity at this point
По умолчанию Re: Maple Mini

Ну и еще хорошая новость.
не далее как месяц назад один хороший человек сделал удачную поделку. Скрестил ужа с носорогом, а именно синтегрировал maplelib и Arduino IDE 1.5.7 и выше. Теперь можно создавать и компилорвоать коды для мапле и Ардуино из одной и тоже программы.

Но самое главное в Arduino используется новй GCC компилятор, с помощью него удалось увеличить быстродействие ногодрыга с считыванием инфы на 35%: с 32(2,25Мгц) тактов до 23(3,12МГц), и это думаю не предел.
Мало того в Arduino IDE довольно таки просто обновляется компилятор. Достаточно скачать новую версию компилятора с сайа https://launchpad.net/gcc-arm-embedded , и заменить им все содержимое папки: C:\arduino-1.5.8\hardware\tools\gcc-arm-none-eabi-4.8.3-2014q1

для того чтобы самим скрестить ежа с носорогом. качаем самую свежую версию ARDUINO IDE (не ниже 1.5.7). Скачиваем отсюда архив с либой https://github.com/bobc/maple-asp . Из в архиве находим папку Maple-asp и копируем ее в C:\arduino-1.5.8\hardware . Запускаем IDE и наслаждаемся.
Несколько особенностей компилировать в память у меня получилось только при выборе "Maple Rev.3 to RAM".

Также (но это специфика китайской версии) при перекулючении режима заливки с RAM на Flash, после заливки программы в контроллер, программа всеравно стартует из RAM. Чтобы программа начала стартовать из Flash нужно передернуть питание контроллера. Но это нужно делать только в случае переключении с Ram на Flash, и только после заливки скетча в контроллер.
Кстати с Flash программа зачастую выполняется слегка медленнее. Но не всегда, бывает и наоборот. (все зависит от телепатических способностей модуля предвыборки команд). если отключить этот буфер то при ситывании каждой команды, процессор простыми NOP'ами будет пропускать до 3х тактов.
Цитата:
http://radiohlam.ru/teory/stm32_6.htm
Если мы работаем с flash-памятью, а не перегружаем программу в оперативку, то для оптимальной работы нашего камня должны быть настроены ещё кое-какие опции.

Во-первых, нужно задать параметр, называемый Latency. Это количество циклов задержки для операций чтения из flash. Оно задаётся исходя из следующих правил:
=0, если 0 ≤ SYSCLK ≤ 24 MHz;
=1, если 24 MHz ≤ SYSCLK ≤ 48 MHz;
=2, если 48 MHz ≤ SYSCLK ≤ 72 MHz.

Во-вторых, для ускорения работы процессора, должен быть включен буфер предварительной выборки (prefetch buffer), который позволяет вычитывать инструкции из flash двумя 64-х битными блоками. Включить или выключить этот буфер можно только когда SYSCLK < 24 MHz и делитель шины AHB=1. После сброса он автоматически включается, поэтому нам ничего делать не нужно. Но обычно если его хотят выключить, то делают это в самом начале программы, при инициализации, когда контроллер ещё работает от внутреннего генератора 8 MHz.

Обе перечисленные выше настройки flash-памяти доступны в регистре FLASH_ACR.
HiddenPilot вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 13 (пользователей: 0 , гостей: 13)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 01:59. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика