Отговори на тема  [ 3 мнения ] 
STM32: Generator for a lightweight DIO driver. 
Автор Съобщение
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Вто Фев 06, 2007 2:45 am
Мнения: 263
Мнение STM32: Generator for a lightweight DIO driver.
Преди няколко дни стигнах до писането по GPIO-та, а това при мен винаги е свързано с рутиране/пин мапинг. Което си е една досадна дейност. От мързел ми светна, че тая работа може да става и автоматично, затова сглобих едно малко програмче за тая цел.

Идеята: Абстракция на физическите пинове.

Как работи?
1.0. Тръгваме от вече готова пин конфигурация, правена с тула на ST - MicroXplorer (*.ioc). Там се дефинира кой пин като какъв ще играе - периферия, GPIO и т.н.
1.1. Създаваме си нова DIO конфигурация в нашето тулче (от файл менюто).
1.2. MicroXplorer-ската IOC конфигурация се импортва в генератора (от файл менюто-> импорт). В долните два групбокса излизат наличните портове и пинове (но само тези, които са конфигурирани като GPIO в *.ioc файла!).
1.3. Създаваме логичеки порт(ове) (от дървото в ляво, с контекстното меню).
1.4. Има 2 основни типа логически портове: входни и изходни. Това се настройва от пропърти грида.
1.5. От десния групбокс избираме пинове и влачим в порта. Ако порта е входен, всички дропнати OUTPUT пинове ще бъдат отсвирени и обратно.
1.6. Повтаряме действията от т.3 докато е необходимо.
1.7. Пиновете в даден логически порт могат да се местят. (Също и портовете.)
1.8. Настройват се дебаунс времена и активно ниво (за входните пинове)
1.9. Проверяваме дали конфигурацията е ОК от менюто Action.
1.10. Сейвваме конфигурацията като *.dio. Импортнатата информация от *.ioc файла се запазва в *.dio-то, така че при следващо отваряне импорт не е необходим. (Освен ако няма промяна в GPIO пиновете.)

Опции:
1.11 Използваните от тула типове могат да се настроят на вкус ( във втория таб ). Те също влизат в *.dio конфига.
1.12 Могат да се включат и допълнителни хедъри в сорса. Това става от главния нод -> Headers. Кавичките или скобите трябва да присъстват също.

Резултата?
2.1. Два файла: DIO_Drv.с и DIO_Drv.h.
2.2. За всеки дефиниран изходен порт, във файловете трябва да има по една Get и Set функции и комплект маски за съдържащите се вътре логически пинове.
2.3. За входните портове се генерират само Get функции и маски.
2.4. Не се разчита на стандартната библиотека на СТ. Нужен е единствено файла с дефинициите на регистрите.
2.5. Писането в изходите се прави чрез BSRR регистрите, уж да е atomic :)
2.6. Четенето е през IDR и ODR регистрите.

Ограниченията:
3.1 Общия брой дебаунсвани пинове (сумарно за всички дефинирани групи) не може да надвишава 32.

Използване:
4.0 Доколкото знам, регистрите, които се използват от драйвера са едни и същи при всички линии STM32 , така че би трябвало да върви навсякъде.
4.1 DIO_Init() се вика еднократно след като вече GPIO-тата са инициализирани. Аз лично инициализирам целия хардуер накуп, затова не съм мислил GPIO-тата да се инициализират от тула.
4.2 Дебаунсването се прави в DIO_Task(), затова трябва да се вика циклично. Времето се настройва в главния нод на *.dio конфигурацията.

Системни изисквания: .NET 4.0.
Disclaimer: Позлвате на своя отговорност. :D


Прикачени файлове:
Коментар на файл: DIO driver generator.
DIO_Driver_Gen.zip [134.07 KiB]
318 пъти
Пон Окт 22, 2012 10:39 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Вто Фев 06, 2007 2:45 am
Мнения: 263
Мнение Re: STM32: Generator for a lightweight DIO driver.
Реших да пусна тулчето по широкия свят, затова му направих малък ъпдейт.
Може да го свалите оттук: DioDriverGeneratorSTM32.


Пон Апр 01, 2013 10:51 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Вто Яну 20, 2009 11:54 pm
Мнения: 11338
Местоположение: "Занзибар"
Мнение Re: STM32: Generator for a lightweight DIO driver.
Nescafe те изпревариха ама тяхното е голямо менте: http://www.youtube.com/watch?v=PRfNJ6DJpp4
Оригиналът е тук: http://www.youtube.com/watch?v=PRfNJ6DJpp4
:)


Сря Май 22, 2013 8:22 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 3 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 6 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни