Перейти к содержанию
    

STM32L15x + DMA + Bit Banding

Случайно обнаружил, что для регистров DMA не работает bit banding (для другой периферии вроде всё нормально). Почему это может быть? Может я что-то не так настраиваю?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Случайно обнаружил, что для регистров DMA не работает bit banding (для другой периферии вроде всё нормально). Почему это может быть? Может я что-то не так настраиваю?

Вероятно они у Вас не в области памяти bitband.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет. Путём научного тыка выяснилось, что когда обращаешься к регистрам DMA через bit banding, нужно обязательно читать или писать двойное слово (4 байта). Чтение/запись любого другого количества байт приводит HardFault. Т.е. для примера:

 

// Включаем half transfer interrupt (CCR, DMA_CCR_HTIE)
*(volatile uint8_t*) 0x424c0108 = 1; // HardFault
*(volatile uint16_t*)0x424c0108 = 1; // HardFault
*(volatile uint32_t*)0x424c0108 = 1; // OK

 

Для регистров другой периферии такого не наблюдается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...