Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


Ответ
Опции темы
Непрочитано 22.07.2015, 16:21   #4461
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Код на гитхабе + видео на тытрубе.
По умолчанию железяка выдает себя за клавиатуру с мышей, водит курсором по квадрату 40х40 пикселей и выплевывает текстовые матюки в каждом углу квадрата.
Если взять за основу, можно и что-нибудь полезное сделать. А можно народ вирусами пугать (если запрограммировать так, чтобы железяка в случайные моменты времени то курсор дергала, то какую-нибудь чушь писала).
Реклама:
__________________
Союз Советских Социалистических Округов Северной Америки
eddy вне форума   Ответить с цитированием
Непрочитано 24.07.2015, 13:29   #4462
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Вот и нашел применение к игрульке: приляпал к компьютеру матричную клавиатуру как обычную УПШную.
__________________
Союз Советских Социалистических Округов Северной Америки
eddy вне форума   Ответить с цитированием
Непрочитано 28.07.2015, 11:42   #4463
pambaru
Почётный гражданин KAZUS.RU
 
Регистрация: 24.03.2007
Сообщений: 1,359
Сказал спасибо: 85
Сказали Спасибо 616 раз(а) в 372 сообщении(ях)
pambaru на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Вопрос возник, чисто из любопытства: почему в камне STM32L100 (ну и в других подобных, видимо тоже) стирание EEPROM устанавливает все биты в ноль, а не в 1, как чаще всего бывает?
Видимо связано с тем, что, как я понял, используется схема ECC, и биты в действительности инвертируются?
pambaru на форуме   Ответить с цитированием
Непрочитано 28.07.2015, 20:39   #4464
pambaru
Почётный гражданин KAZUS.RU
 
Регистрация: 24.03.2007
Сообщений: 1,359
Сказал спасибо: 85
Сказали Спасибо 616 раз(а) в 372 сообщении(ях)
pambaru на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Прошу помощи у гуру по STM32L100.
Использую SP1, SPI2 и DMA.
SPI1, DMA1 Channel3 - только передача.
SPI2 DMA1 Channel 4 и 5 - прием и передача.
Все работает по отдельности: SPI1 и SPI2.

И вместе тоже почти работает.
Но! Иногда прием SPI2 подвисает при совместной работе.
Может пройти 1000 или 50000 транзакций, но в результате повиснет все равно.

Исходные данные такие:

SPI1 передает пакеты по 8 байт каждую мс, пакет передается со скоростью 1 мбит/с, это где-то 100 мкс (вывод на дисплей).

SPI2 время от времени передает и читает по 4 байта (обмен с хостом).
В результате на SPI2 изредка имеем зависон, симптом такой - отправились все 4 байта, но принялось только 3, соответственно регистр DMA1_Channel4-›CNDTR равен единице, прерывание завершения тоже не возникает.
Приоритет каналу DMA 4 (SPI2 RX ) назначен самый высокий (можно и ниже поставить, результат не меняется).
На передачу выдается все 4 байта, все флаги завершения транзакции передачи выставляются. Проблема только с приемом.
Корреляция зависонов с работой SPI1 100%.
Если отключить SPI1, зависонов нет.
Если увеличить скорость SPI1 (т.е. передача SPI1 будет занимать меньше времени), зависоны тоже уменьшаются (совсем прекращаются).
Такое ощущение, что SPI1 мешает приему SPI2, но приоритет у SPI1 выставлен ниже, да и 3 байта из транзакции SPI2 уже прошло, как она может прерваться?
Куда копать?
pambaru на форуме   Ответить с цитированием
Непрочитано 29.07.2015, 04:12   #4465
Hives
Гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
Hives на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

pambaru сейчас подойдут телепаты и начнем разбирать ваш глючный код...
Hives вне форума   Ответить с цитированием
Непрочитано 29.07.2015, 08:39   #4466
pambaru
Почётный гражданин KAZUS.RU
 
Регистрация: 24.03.2007
Сообщений: 1,359
Сказал спасибо: 85
Сказали Спасибо 616 раз(а) в 372 сообщении(ях)
pambaru на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от Hives Посмотреть сообщение
pambaru сейчас подойдут телепаты и начнем разбирать ваш глючный код...
ОК, жду с нетерпением...
pambaru на форуме   Ответить с цитированием
Непрочитано 29.07.2015, 08:53   #4467
pambaru
Почётный гражданин KAZUS.RU
 
Регистрация: 24.03.2007
Сообщений: 1,359
Сказал спасибо: 85
Сказали Спасибо 616 раз(а) в 372 сообщении(ях)
pambaru на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Код достаточно примитивен и, в целом, повторяет пример для SPI2 здесь:
http://we.easyelectronics.ru/STM32/p...bibliotek.html
SPI1 аналогично, только без приема и свой канал DMA.
Утренние исследования показали, что собака, похоже, порылась в пропускной способности шины DMA.
Вкратце начальные условия такие: частота шин APB1, APB2 32 Мгц.
Частота работы SPI1 1 Мгц, SPI2 16 Мгц. Приоритет DMA SPI2 приема наивысший (хотя результат всегда одинаков независимо от этого).
В этом случае при совместной работе, иногда по SPI2 "недополучаю" 1 байт. Флаг OVR в SPI_SR показывает при этом, что произошло переполнение буфера, т.е. получается, DMA не успело вовремя считать байт.
Получается, при загрузке DMA от SPI1 максимум 125 кбайт/сек (частота 1 Мгц, 8 байт каждую 1 мс) и загрузка от DMA2 прием 2 мб/сек и передача 2 мб/сек (чтение-запись 7 байт примерно каждые 100 мкс) шина DMA не справляется?
Эта догадка подтверждается тем, что уменьшение частоты SPI2 вдвое (до 8 Мгц) кардинально разрешает ситуацию.
Получается, нужно как то верно рассчитать максимальную пропускную способность шины DMA? Как? Или я не прав?
pambaru на форуме   Ответить с цитированием
Непрочитано 29.07.2015, 09:43   #4468
pambaru
Почётный гражданин KAZUS.RU
 
Регистрация: 24.03.2007
Сообщений: 1,359
Сказал спасибо: 85
Сказали Спасибо 616 раз(а) в 372 сообщении(ях)
pambaru на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Да, эксперименты подтверждают, что с частотой 8 Мгц на SPI2 все работает, даже если забить SPI1 непрерывным потоком данных.
А вот с частотой 16 Мгц на SPI2 DMA уже не справляется (при одновременном использовании других DMA каналов) ни при каких приоритетах.
Видимо, надо было предусмотреть какой-то приемный аппаратный FIFO для SPI, хотя бы байта на 4.
В LPC каких-то на UART помнится, были FIFO, правда DMA там не было.
pambaru на форуме   Ответить с цитированием
Непрочитано 29.07.2015, 11:50   #4469
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от pambaru Посмотреть сообщение
исследования показали, что собака, похоже, порылась в пропускной способности шины DMA.
Не верю!

Сообщение от pambaru Посмотреть сообщение
SPI1 передает пакеты по 8 байт каждую мс, пакет передается со скоростью 1 мбит/с
Сообщение от pambaru Посмотреть сообщение
SPI2 время от времени передает и читает по 4 байта
Шина ДМА здесь просто отдыхает. Что-то не то в консерватории.
STM32F0 вне форума   Ответить с цитированием
Непрочитано 29.07.2015, 12:12   #4470
pambaru
Почётный гражданин KAZUS.RU
 
Регистрация: 24.03.2007
Сообщений: 1,359
Сказал спасибо: 85
Сказали Спасибо 616 раз(а) в 372 сообщении(ях)
pambaru на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Ну мне тоже как-то не верится.
Но факты...
В среднем то пропускная способность вопросов не вызывает, но вот почему то байты, поступающие с интервалом 0.5 мксек, иногда не успевает забрать, если еще другие каналы DMA активно работают (точнее, даже еще один другой канал).
Если только работаем с SPI2 - все как надо.
Если же активируем SPI1 - периодически отлавливаем data overrun на spi2.
Причем, если забить SPI1 постоянным потоком данных (на вывод), то overrun в SPI2 отловится почти моментально.
Но стоит переключить SPI2 на частоту 8 Мгц - все начинает успевать.
Где-то описано минимальное время транзакции DMA или минимальное время реакции на запрос DMA?
pambaru на форуме   Ответить с цитированием
Ответ

Закладки


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Школа АRMрестлинга Uragan90 Микроконтроллеры, АЦП, память и т.д 54 22.08.2011 16:13
ARM Cortex M3 + Linux SiMiLya Микроконтроллеры, АЦП, память и т.д 10 17.06.2011 17:20
Помогите с STM32 - очень нужно... yakuzaa Микроконтроллеры, АЦП, память и т.д 60 04.08.2010 11:04
Как добавить поддержку для STM32 SFHK Микроконтроллеры, АЦП, память и т.д 11 18.12.2009 18:09


Часовой пояс GMT +4, время: 19:23.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot