10.01.2021, 15:44
|
|
Гражданин KAZUS.RU
Регистрация: 17.06.2008
Адрес: Украина
Сообщений: 734
Сказал спасибо: 363
Сказали Спасибо 808 раз(а) в 380 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
sat_art, полностью согласен. Смысла нет, просто интересно было - насколько этот изврат прокатывает на F103 и F030.
UPD:
Тут еще один изврат нарисовался: STM8S103 (ну или 003) в такой конфигурации:
таймер генерирует тактовую для SPI slave, который толкает данные на WS28xx.
DMA нэт, данные для SPI берем в прерываниях, на 16MHz для 8 пикселов вывод занимает 2% времени.
Так недолго и до PIC10F200
Последний раз редактировалось j-Roger; 10.01.2021 в 15:54.
|
|
|
|
23.02.2021, 20:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,645
Сказал спасибо: 117
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Товарищи, а где стырить вменяемую реализацию работы с DHT22 на STM32F103 — без калокуба, на таймере с DMA (либо, на худой конец, на UART в полудуплексном режиме с DMA). Лень самому городить, когда столько людей этим пользуется…
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
|
|
|
|
13.03.2021, 14:07
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,645
Сказал спасибо: 117
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Новый вопрос: вожусь со светодиодной матрицей (поочередно соединены четыре матрицы 8х га MAX7219. И в мануале вообще не вижу прерывания SPI по окончанию передачи данных! Есть по TXE, но в это время передача еще идет. Данные передаю при помощи DMA, а MAX7219 требует сразу после последнего тактового импульса поднять ногу CS, чтобы захватить данные из буфера.
А еще у меня почему-то все данные, приходящие на вход, идут на выход, хотя последние 16 бит должны захватываться!
Как с этой хренью бороться нормальным способом? Чтобы не по-абдурински, используя блокирующие вызовы, а с помощью DMA и конечных автоматов?
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
|
|
|
|
13.03.2021, 14:54
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Поднятие ноги CS должно происходить после загрузки всех матриц в линейке. И 7219 отличается от 7221 тем, что в 7219 - это не CS, а именно Load.
Поэтому привязывать это к концу каждой передачи SPI нет смысла. Можно передать по DMA полную строку, затем в прерывании по завершению ВЬФ-транзакции включить прерывание SPI RXNE и получить его по завершению передачи SPI
|
|
|
|
13.03.2021, 15:15
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,645
Сказал спасибо: 117
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
NewWriter, вот, что у меня получается на выходе первого модуля при передаче данных для двух:
Во-первых, первый MAX должен буферизовать первые 16 бит, а он выплевывает все, как есть. Во-вторых, ничего не происходит и на индикаторах темнота. (на наводки внимания не обращайте, у меня щупы дерьмовые).
А разве прерывание SPI RXNE произойдет, когда на входе ничего нет, да и SPI работает в режиме только на выход?
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
Последний раз редактировалось eddy; 13.03.2021 в 15:17.
|
|
|
|
13.03.2021, 15:41
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,645
Сказал спасибо: 117
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
О, команды screen test при блокирующей передаче таки отправляются. Видимо, я где-то накосячил с передачей данных по DMA (хоть осциллограф показывает красоту)…
UPD: все завелось, всем спасибо!
https://github.com/eddyem/stm32sampl...MAX7219_screen
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
Последний раз редактировалось eddy; 13.03.2021 в 16:54.
|
|
|
|
28.04.2021, 11:58
|
|
Прописка
Регистрация: 06.03.2007
Сообщений: 144
Сказал спасибо: 22
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Добрый день, подскажите, почему на выходах очень маленькая частота.
настраиваю stm32f103rb на 48МГц, в while переключаю вкл/выкл. частота всего 220кГц (64МГц-›290кГц)
Код:
|
while (1) {
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_0);
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_1);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
} |
Через таймер пробовал с 0 делителем и 1 отсчетом - там только 74кГц
|
|
|
|
28.04.2021, 17:06
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.11.2010
Адрес: г. Дзержинск Нижегородская обл.
Сообщений: 1,723
Сказал спасибо: 130
Сказали Спасибо 1,109 раз(а) в 528 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Потому-что не нужно использовать HAL для высокоскоростных операций.
1) Проверь тактовую частоту. Точно не накосячил? Выведи её наружу на MCO вывод и измерь. Возможно ошибка в конфигурировании.
2) Инверсия вывода - крайне медленная операция, связанная с необходимостью чтения регистра, модификации и последующей записью. Да и еще HAL часто генерит сильно не оптимальный код. Проще писать по очереди 1 и 0 в порт. Сразу. А еще лучше ручками через регистры установки и сброса битов (BSRR и BRR). Только так можно максимум выжать.
|
|
|
Сказали "Спасибо" DanilinSA
|
|
|
29.04.2021, 07:32
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от sanstan
|
с 0 делителем и 1 отсчетом - там только 74кГц
|
Если использовали программное переключение выхода через ф-цию ХАЛа, то она просто не успевала отработать со скоростью таймера. Посмотрите во внутрянку этой ф-ции - там овер-дофига текста написано.
И кстати, программное переключение с такой скоростью таймера будет вообще пропускать часть событий, ибо скорость таймера очень высока.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо NewWriter за это сообщение:
|
|
|
21.05.2021, 11:51
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,381
Сказал спасибо: 1,962
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Интересный глюк вылез. Плата с STM32F103RBT6, кетайская, ессно.
В устройстве тикает RTC - там все Ок.
И в процессе доработок, как обычно, чего-то не хватило. На сей раз - BACKUP регистров. Цеплять что-то типа 25 серии ПЗУ или писать во FLASH категорически не хочется.
И тут вижу, что в RTC есть регистр ALARM... и по даташиту он сбрасывается только при общем сбросе BACKUP-а, при этом сбрасывается и счетчик RTC
... а у меня при сбросе CNT на месте, а ALRM становится 0xFFFF
Вот как так? Я где то ступил или чип кривой? Маркировка вроде STM...
__________________
[ жизнь приятна и красива, если выпить литр пива ]
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:42.
|
|