eddy_em: (Default)
[personal profile] eddy_em
Добавил DMA в сниппет I2C под G070. Оказалось все не так уж и сложно: нужно лишь внимательно читать собственный код, чтобы не пропустить косяк, когда ты обнулил I2C1->CCR1, а потом забыл там выставить флаги для чтения/записи по DMA.
Основной недостаток — "подвисание" DMA в случае NAK или других проблем. Поэтому нужно периодически проверять флаги I2C, и чуть какие ошибки — заново его настраивать, чтобы все эти зависоны сбросить.
А еще обнаружил, что подопытный SHT30 — та еще гадость. На малейшую ошибку (скажем, не ту команду дал или не в тот регистр попытался записать) он подвешивает линию I2C! Нужно четко запомнить: всегда питание устройств I2C нужно вешать на управляемый ключ, иначе одна зараза может лишить доступа к другим устройствам.
Пожалуй, на этом игры с G070 на какое-то время прекращу. Да и вообще, G0 по сравнению с F0 практически никаких плюсов не имеет (кроме, разве что, DMAMUX), зато имеет гору минусов. В общем, ну его нафиг! Да еще и каналов DMA на 64-ногий корпус всего лишь 7. Ну что за извращение? Хочу хотя бы 32. А вообще, по-хорошему, надо бы наделать мультиплексоров столько, чтобы было хотя бы 128 каналов DMA. И прерываний хотя бы 256 — чтобы не было этой необходимости делить одно и то же прерывание между несколькими разными интерфейсами.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org

May 2025

S M T W T F S
    123
45678910
11121314151617
1819202122 2324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 24th, 2025 06:07 pm
Powered by Dreamwidth Studios