PDA

Просмотр полной версии : Микроконтроллеры STM32, "с нуля".



Страницы : 1 [2]

Tronix
16.03.2015, 09:34
Было бы еще неплохо на плате сделать 4 дырки под провод для XT клавы. Или просто джампер/кнопку выбора выхода AT/XT. Если кнопку - то записывать настройки во влеш внутренюю микроконтроллера. Получился бы более универсальный девайс. Причем в прошивке не обязательно XT реализовывать, кому надо - тот допилит сам.

Ewgeny7
16.03.2015, 09:56
По моему под микросхемой, земляной полигон был побольше или можно сделать побольше, а то чё он такой маленький и раскоряченный
Это не земля, а плюс питания. Потому и маленький и раскоряченный. Земля на нижнем слое.

artyr_n
16.03.2015, 19:36
под процом желателен полигон земли, а плюс питания перенесите на другую сторону

Ewgeny7
16.03.2015, 20:53
Так и буду переносить туда-обратно...
Полигон питания под процем и земляной низ тут уже описывалось как вариант для разгона кристалла. Значит, на нормальных частотах будет работать тем более.

dosikus
16.03.2015, 21:30
Оставь как счас .

Ewgeny7
22.03.2015, 23:37
Я не умер, просто долго не мог заняться.
Полную эмуляцию PS/2-девайса я не делал, ограничился тем, что конвертер дает отклики на запросы хостов и имитирует бурную деятельность. А также автоматом переключает раскладки сканкодов между 2 и 3 набором.
В результате, работа проверена на u8_Reverse, ZXMC, контроллер на Мега48 для отечественных ПК, ПентЭво, Спекки-2007.
На Фениксах стоит тот же ZXMC по сути. Проверить пока не могу, нет Феникса под рукой.
Но вроде как почти весь парк форумных компьютеров охватил.
Надо делать печатку, ожидаю прибытие партии STM32F105RBT6 из Китаев.

---------- Post added at 22:57 ---------- Previous post was at 22:54 ----------

Да, сырки отдам народу, но - позже. После причесывания и приведения в нестыдный вид.

---------- Post added at 23:23 ---------- Previous post was at 22:57 ----------

Проверил на Ленинград-2012 со штатным PS/2-контроллером. Тоже работает. Попробую воткнуть в ПЦ... :)

---------- Post added at 23:37 ---------- Previous post was at 23:23 ----------

Дохлые фашисты сказали - "годен" :)

http://savepic.net/6440609m.jpg (http://savepic.net/6440609.htm)

dosikus
23.03.2015, 09:07
[/COLOR]Дохлые фашисты сказали - "годен" :)


Гы... Return to Castle Wolfenstein?

Ewgeny7
23.03.2015, 11:25
Return to Castle Wolfenstein?
Он, родной. Наизусть его помню, но постоянно там лысого гоняю :)

Ewgeny7
24.03.2015, 18:03
Обновил прошивку (https://yadi.sk/d/-HGx2n-efV8aH), сделал сигналы красивыми :)
Попутно убрал пару глюков.
Интересно наблюдать за поведением "хостов", микроконтроллеров АТМега в контроллерах клавиатуры Камиля.

http://savepic.net/6533578m.png (http://savepic.net/6533578.htm)

После отправки сигнала ED 02 (зажигание светика на клавиатуре) линия клока остается притянутой к земле. А после окончания "базара" контроллер периодически "пингует" линию клока. Зачем? Эта картинка с контроллера на Мега48 для Ленинграда-2012. Мега8515 с ZXMC шлет пинги аналогично. А Мега48 для Ориона-128 и прочих РКшек такого не делает.

---------- Post added at 18:03 ---------- Previous post was at 18:00 ----------

Следующим апгрейдом прошивки будет, вероятно, зажигание светиков на USB-клаве. Пока курю тему отправки данных в клавиатуру.

dosikus
24.03.2015, 22:35
Ewgeny7, А че ты Saleae софтом не пользуешься?
Родной USbee - тормозной и глючный , да и в Saleae намного удобней.

Ewgeny7
24.03.2015, 23:15
А че ты Saleae софтом не пользуешься?
Да я первый раз о нем слышу...

Vslav
24.03.2015, 23:27
Еще советую разные USB-клавиатуры погонять, там очень много сюрпризов бывает. Некоторые, если у них нет нажатых клавиш чтобы отдать пакет на опрос Interrupt EP, могут STALL прислать. Некоторые присылают 8 байт и все, некоторые присылают 8 байт и ZLP. В-общем, кладут на стандарт разнообразно, причем такое встречалось и на нонаме и на брендовых клавиатурах.

Ewgeny7
25.03.2015, 08:13
Ассортимент у меня невелик, к сожалению :(
Про разную работу клавиатур народ упоминал, на том же изиэлектрониксе.

dosikus
25.03.2015, 15:30
Софт здесь
http://support.saleae.com/hc/en-us/articles/201589175

Но надо твое железо посмотреть, ибо там требуется доработка . Но не сложная.
Пин Wakeup отсоединить от GND и подтянуть к VDD через резистор ~2К .
Прошить еепром соответствующей прошивкой и залочить запись - пин WP посадить на GND.


http://s020.radikal.ru/i718/1503/9f/0277eb3e5960.jpg
http://s017.radikal.ru/i442/1503/7b/4c602bddcf80.jpg
http://s018.radikal.ru/i517/1503/f9/4bafe9314902.jpg




:020000040000FA
:10000000C025098138000000FFFFFFFFFFFFFFFF51
:10001000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0
:10002000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0
:10003000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0
:10004000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0
:10005000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0
:10006000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0
:10007000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90
:00000001FF

---------- Post added at 15:30 ---------- Previous post was at 14:27 ----------

http://s020.radikal.ru/i723/1503/03/549e8c8d9eee.jpg
http://s48.radikal.ru/i119/1503/1f/0917a1d880d1.jpg
http://s52.radikal.ru/i138/1503/6a/afbde178efa9.jpg
http://s017.radikal.ru/i415/1503/e8/240d51dd4fe3.jpg
http://i072.radikal.ru/1503/a8/dd4f4341657a.jpg

Ewgeny7
04.05.2015, 19:58
dosikus, у тебя есть живой проект на Кейле для образца понимания с FATFS через SPI на стм32ф1хх?
Третий день кувыркаюсь...
Что-то Кейл никак не может WORD и DWORD арифметику толком считать.
В отладчике шагаю по коду, и какая-то хрень вылезает...
Пробовал варианты, которые не требуют процессов дёрганья каждые 10 миллисекунд, не нравится мне это. В частности, привинчивал VINX_FS и сильно кастрированный, но легкий вариант от HiSER. Но везде, где идет арифметика между разными типами данных, улетаем в космос. На AVR оба варианта пашут без нареканий.

Ewgeny7
26.06.2015, 20:56
Неожиданные и непонятные грабли с STM32F103RBT6 + Keil 5.0
Многие начинают с подобного камня, а я вот иду своей дорогой, только сейчас добрался до 103-серии, после успешного юзания 105-ой и 407-ой.
В общем, проект в кейле компилируется как положено.
Камень в опциях выбран, хтал установлен, выбран файл stm32f10x_md.s в стартапе, в закладке программирования выбраны соответствующие алгоритмы под камушек.
Но - при прошивании сначала вываливается окно "internal error", после него - "target dll has ben canceled". И всё... С другими сериями камней такого небыло. Что это может быть? Сигналы SWDIO и SWCLK подключены правильно, на вкладке программатора при переключении JTAG/SW камень видится.

dk_spb
10.08.2015, 23:19
Можно я попробую сформулировать чайниковский вопрос по производительности STM32F4discovery?
Есть задача - сэмплить входной сигнал, что-то типа
for (i=0;i<1000;i++) buf[i]=GPIOx->IDR;
Какова достижимая производительность по количеству сэмплов?

Вот что я пробовал. На один из пинов входного порта подал 10Mhz с кварцевого генератора. Тестовая задача - "прожует" ли STM32F407 (168Mhz) такой сигнал:
while(1)
{ if ((GPIOE->IDR & 0x0100)) GPIOC->ODR |= GPIO_Pin_4;
else GPIOC->ODR =0;
}
То есть я просто по состоянию входного сигнала выставляю выходной pin. При достаточной производительности ожидаю что частота выходного сигнала будет равна частоте входного (меряю частотомером).
И тут сюрприз: при входном 10Mhz выходной сигнал всего 4 :-(
Меняю код:
if ((GPIOE->IDR & 0x0100)) GPIOC->ODR = 0xffff;
else GPIOC->ODR =0;
Частота уже 7.
---
А я то хотел сигнал сэмплить, да еще и по внешнему стробу....
Это я хочу чего-то космического или я что-то делаю не так?

tnt23
10.08.2015, 23:32
А тактовая точно 168МГц? или по умолчанию, какие-нибудь 8МГц встроенного RC-генератора?

---------- Post added at 23:32 ---------- Previous post was at 23:28 ----------

Вообще же смотри в сторону DMA. Например, вот:
https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=https%3a%2f%2fmy%2est%2ecom%2 fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_ mx_stm32%2fData%20transfer%20from%20GPIO%20port%20 to%20RAM%20buffer%20using%20DMA%20upon%20receiving %20a%20trigger%20signal%20on%20the%20timer%20captu re%20input%20channel&FolderCTID=0x01200200770978C69A1141439FE559EB459D7 580009C4E14902C3CDE46A77F0FFD06506F5B&currentviews=4311

и два: http://roboforum.ru/forum2/topic13542.html

dk_spb
10.08.2015, 23:42
>А тактовая точно 168МГц?
Да, 8 генератор через PLM (типа 8 кварца/8*336/2)

> какие-нибудь 8МГц встроенного RC-генератора?
У этой RC на 16, но это не важно.

Про DMA можно попробовать, но сначала бы совет знатоков:
по внешнему стробу 10 MHz DMA сумеет GPIO->mem
Или хотя бы по 5 MHz ?

AlecV
11.08.2015, 00:48
Насколько помню, выходные пины конфигурируются на разную скорость. На высоких скоростях фронты покруче, но и помех побольше. Может просто уровень не набегает.

А так было бы интересно сосчитать просто количество входных фронтов в 32-битном регистре за секунду. Должно быть 10 млн штук.

Aprisobal
11.08.2015, 01:00
Поискал по теме и почему-то нет упоминания программы STM32CubeMX. Она очень сильно упрощает жизнь! На выходе получаем готовый шаблон программы под выбранный IDE (есть и Keil).

dk_spb
11.08.2015, 07:53
Вообщем похоже разобрался я. Прямая дорога мне в DMA. Гуру пишут что до 21Mhz получается.

tnt23
11.08.2015, 11:43
Вообщем похоже разобрался я. Прямая дорога мне в DMA. Гуру пишут что до 21Mhz получается.

Пожалуйста.

dk_spb
11.08.2015, 12:03
А вот всё-равно засада.
Может ли STM32 использовать внешний строб для DMA?
Все найденные примеры умеют по внешнему стробу запускать DMA, который соответственно копирует N-ное число данных с GPIO в память.
При этом готовность данных на GPIO входах никак не отслеживается.
А вот как сделать чтобы DMA тактировалось внешним стробом - непонятно. Такое точно умеет DCMI интерфейс в STM32 (Pixel Clock), но у него полно ограничений и в моём случае он не подходит.

dosikus
18.08.2015, 22:30
dosikus, у тебя есть живой проект на Кейле для образца понимания с FATFS через SPI на стм32ф1хх?
Третий день кувыркаюсь...
Что-то Кейл никак не может WORD и DWORD арифметику толком считать.
В отладчике шагаю по коду, и какая-то хрень вылезает...
Пробовал варианты, которые не требуют процессов дёрганья каждые 10 миллисекунд, не нравится мне это. В частности, привинчивал VINX_FS и сильно кастрированный, но легкий вариант от HiSER. Но везде, где идет арифметика между разными типами данных, улетаем в космос. На AVR оба варианта пашут без нареканий.



Упс, извини давно не заходил.
Актуально еще ?

У меня рабочее и FatFs R0.10c и PetitFatFs R0.03 на F0, правда только на SPI , зато с DMA .
Сейчас буду прикручивать : FatFs R0.11
На 103ем надо причесать .

У тебя скорей всего проблемы с _WORD_ACCESS читай здесь о конфигурации
http://elm-chan.org/fsw/ff/en/config.html

VINX_FS - выкинул на этапе изучения , не стоит оно того...

dk_spb
23.03.2016, 00:56
Гуру, посоветуйте чайнику куда копать:
Есть две библиотеки. Одна - StdPeriph USB (от USB простого хочу, CDC, то есть консольку). Вторая чья-то с FafFS для SD карты (SDIO). По отдельности обе работают на ура.
Вместе если USB не подключен - тоже на ура.
А вот если подключить USB то в функции f_mount на операторе
is (fs) {
в 90% случаев вылетает в HardFault
Отладчиком смотрел:
на одном и том же месте оператор LDR R1, [SP, #0x8] вызывает HardFault.
И адреса стека, и содержимое стека что при включенном USB что при выключенном - одинаковы.
Куда копать.......

- - - Добавлено - - -

Подробности : BusFault - Imprecise data access error has occurred
Чтобы это значило...

- - - Добавлено - - -

Вроде разобрался. Кто-то гадит мне переменную FatFs, указатель на cfs=FatFs[0] попадает на область кода (ROM) и попытка сделать cfs->fs_type = 0; заканчивается ай-ай-ай-ем.

dk_spb
07.11.2016, 13:16
Подскажите по CCM RAM:
1) можно ли всю её отъесть под переменные, или она еще для чего-то может быть нужна?
2) можно ли туда "класть" stack и heap ? Или есть какие-то соображения почему так не надо делать?

Titus
07.11.2016, 13:50
Подскажите по CCM RAM:
1) можно ли всю её отъесть под переменные, или она еще для чего-то может быть нужна?
2) можно ли туда "класть" stack и heap ? Или есть какие-то соображения почему так не надо делать?

что за память такая CCM (core coupled memory) ? (http://forum.easyelectronics.ru/viewtopic.php?p=200740)

Vslav
07.11.2016, 19:34
Подскажите по CCM RAM:
1) можно ли всю её отъесть под переменные, или она еще для чего-то может быть нужна?
2) можно ли туда "класть" stack и heap ? Или есть какие-то соображения почему так не надо делать?
Не работает с DMA, класть переменные, стек и кучу можно, практически проверено. Выигрыша по скорости с "обычной" RAM на кристалле, увы, не дает.

dk_spb
07.11.2016, 19:45
Vslav, Спасибо, мне как раз надо не скорость, а объем ОЗУ. Избавление от стека и кучи уже многое решает. Хотя у меня, конечно, объем занимаемого ОЗУ совсем не оптимизирован, но "лишние" 64K снимают все вопросы в принципе.