22.07.2015, 16:21
|
#4461
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Код на гитхабе + видео на тытрубе.
По умолчанию железяка выдает себя за клавиатуру с мышей, водит курсором по квадрату 40х40 пикселей и выплевывает текстовые матюки в каждом углу квадрата.
Если взять за основу, можно и что-нибудь полезное сделать. А можно народ вирусами пугать (если запрограммировать так, чтобы железяка в случайные моменты времени то курсор дергала, то какую-нибудь чушь писала).
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
24.07.2015, 13:29
|
#4462
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Вот и нашел применение к игрульке: приляпал к компьютеру матричную клавиатуру как обычную УПШную.
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
28.07.2015, 11:42
|
#4463
|
Почётный гражданин KAZUS.RU
Регистрация: 24.03.2007
Сообщений: 1,359
Сказал спасибо: 85
Сказали Спасибо 616 раз(а) в 372 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Вопрос возник, чисто из любопытства: почему в камне STM32L100 (ну и в других подобных, видимо тоже) стирание EEPROM устанавливает все биты в ноль, а не в 1, как чаще всего бывает?
Видимо связано с тем, что, как я понял, используется схема ECC, и биты в действительности инвертируются?
|
|
|
|
28.07.2015, 20:39
|
#4464
|
Почётный гражданин KAZUS.RU
Регистрация: 24.03.2007
Сообщений: 1,359
Сказал спасибо: 85
Сказали Спасибо 616 раз(а) в 372 сообщении(ях)
|
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 уже прошло, как она может прерваться?
Куда копать?
|
|
|
|
29.07.2015, 04:12
|
#4465
|
Гражданин KAZUS.RU
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
pambaru сейчас подойдут телепаты и начнем разбирать ваш глючный код...
|
|
|
|
29.07.2015, 08:39
|
#4466
|
Почётный гражданин KAZUS.RU
Регистрация: 24.03.2007
Сообщений: 1,359
Сказал спасибо: 85
Сказали Спасибо 616 раз(а) в 372 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от Hives
|
pambaru сейчас подойдут телепаты и начнем разбирать ваш глючный код...
|
ОК, жду с нетерпением...
|
|
|
|
29.07.2015, 08:53
|
#4467
|
Почётный гражданин KAZUS.RU
Регистрация: 24.03.2007
Сообщений: 1,359
Сказал спасибо: 85
Сказали Спасибо 616 раз(а) в 372 сообщении(ях)
|
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? Как? Или я не прав?
|
|
|
|
29.07.2015, 09:43
|
#4468
|
Почётный гражданин KAZUS.RU
Регистрация: 24.03.2007
Сообщений: 1,359
Сказал спасибо: 85
Сказали Спасибо 616 раз(а) в 372 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Да, эксперименты подтверждают, что с частотой 8 Мгц на SPI2 все работает, даже если забить SPI1 непрерывным потоком данных.
А вот с частотой 16 Мгц на SPI2 DMA уже не справляется (при одновременном использовании других DMA каналов) ни при каких приоритетах.
Видимо, надо было предусмотреть какой-то приемный аппаратный FIFO для SPI, хотя бы байта на 4.
В LPC каких-то на UART помнится, были FIFO, правда DMA там не было.
|
|
|
|
29.07.2015, 11:50
|
#4469
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от pambaru
|
исследования показали, что собака, похоже, порылась в пропускной способности шины DMA.
|
Не верю!
Сообщение от pambaru
|
SPI1 передает пакеты по 8 байт каждую мс, пакет передается со скоростью 1 мбит/с
|
Сообщение от pambaru
|
SPI2 время от времени передает и читает по 4 байта
|
Шина ДМА здесь просто отдыхает. Что-то не то в консерватории.
|
|
|
|
29.07.2015, 12:12
|
#4470
|
Почётный гражданин KAZUS.RU
Регистрация: 24.03.2007
Сообщений: 1,359
Сказал спасибо: 85
Сказали Спасибо 616 раз(а) в 372 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Ну мне тоже как-то не верится.
Но факты...
В среднем то пропускная способность вопросов не вызывает, но вот почему то байты, поступающие с интервалом 0.5 мксек, иногда не успевает забрать, если еще другие каналы DMA активно работают (точнее, даже еще один другой канал).
Если только работаем с SPI2 - все как надо.
Если же активируем SPI1 - периодически отлавливаем data overrun на spi2.
Причем, если забить SPI1 постоянным потоком данных (на вывод), то overrun в SPI2 отловится почти моментально.
Но стоит переключить SPI2 на частоту 8 Мгц - все начинает успевать.
Где-то описано минимальное время транзакции DMA или минимальное время реакции на запрос DMA?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:23.
|
|