Size: a a a

2021 June 13

IM

Inga Muste YL3IM in Hardware & Radio
первый закон Ома
источник
2021 June 14

ВU

Владимир US5LSK... in Hardware & Radio
источник
2021 June 15

AA

Aleksander Alekseev in Hardware & Radio
Подскажите пожалуйста у кого богатый опыт с DMA. Я заблуждаюсь или выигрыш от такого изменения нулевой? https://github.com/afiskon/stm32-ssd1306/pull/42/files#r651552394
источник

r

romanetz in Hardware & Radio
выигрыш тем больше, чем больше каждый пересылаемый блок
источник

AA

Aleksander Alekseev in Hardware & Radio
а за счет чего он тут? я имею ввиду что вызов синхронный (или нет?) и скорость SPI фиксированная
источник

AA

Aleksander Alekseev in Hardware & Radio
просто мне всегда казалось что главная фишка DMA против простого аппаратного SPI что можно пересылать данные и параллельно что-то еще делать. это правильно?
источник

AA

Aleksander Alekseev in Hardware & Radio
Я извиняюсь за глупые вопросы, просто у меня для DMA как-то задач никогда не возникало 🤷‍♂️
источник

АХ

Андрей Хлебников... in Hardware & Radio
В теории - да. На практики также его не использовал, как-то не надо было
источник

r

romanetz in Hardware & Radio
Правильно. Потоковая обработка так именно и работает
источник

r

romanetz in Hardware & Radio
Минимум два буфера, один отсылаем, со вторым работаем
источник

r

romanetz in Hardware & Radio
В предельном случае - fifo, но аппаратных fifo, не привязанных к периферии, как-то нету в микроконтроллерах.
источник

KK

Kirill Kotyagin in Hardware & Radio
Судя по исходникам и доке, HAL_I2C_Mem_Write_DMA неблокирующий. Так что действительно, можно запустить отправку данных и что-то там еще делать.
источник

AA

Aleksander Alekseev in Hardware & Radio
тогда пач на гитхабе не выглядит правильным...
источник

r

romanetz in Hardware & Radio
он с колбэком из прерывания работает
источник

KK

Kirill Kotyagin in Hardware & Radio
Коллбек можно не использовать же? HAL_I2C_Mem_Write_DMA вначале ждет пока I2C освободится не более чем переданный timeout, затем стартует отправку данных черех DMA. Так что коллизий там не должно возникнуть.
источник

KK

Kirill Kotyagin in Hardware & Radio
Тьфу, про коллбек неправильно понял вначале. Да, там из DMA по TX Complete вызывается I2C_DMAXferCplt который в частности рулит состоянием I2C в HAL.
источник

KK

Kirill Kotyagin in Hardware & Radio
Короче, нормальный PR в этой части. Если одна запись случаится до того, как закончится другая, то HAL_I2C_Mem_Write_DMA подождет просто.
источник

KK

Kirill Kotyagin in Hardware & Radio
А хотя нет… Не вполне нормальный MR. Появляется чудная возможность словить deadlock. Если вызвать HAL_I2C_Mem_Write_DMA в момент когда не закончилась предыущая отправка данных и из ситуации в которой не обработается прерывание от DMA, все повиснет нафиг)
источник

KK

Kirill Kotyagin in Hardware & Radio
Посмотрел код. Короче да, в том виде в котором там сейчас код, все будет временами виснуть если работать с дисплеем из прерываний. Поправьте если ошибся.
источник

AA

Aleksander Alekseev in Hardware & Radio
Спасибо большое! Если вас не затруднит там автору черкануть буду очень признателен. Ну чтобы я не делал вид будто понимаю что происходит :D
источник