реклама на сайте
подробности

 
 
> STM32L15x + DMA + Bit Banding
ArtDenis
сообщение Aug 4 2015, 08:23
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 142
Регистрация: 10-11-12
Пользователь №: 74 318



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


--------------------
http://ufa-darts.ru/ - собираем дартс-лигу в Уфе
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 2)
jcxz
сообщение Aug 5 2015, 01:48
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(ArtDenis @ Aug 4 2015, 14:23) *
Случайно обнаружил, что для регистров DMA не работает bit banding (для другой периферии вроде всё нормально). Почему это может быть? Может я что-то не так настраиваю?

Вероятно они у Вас не в области памяти bitband.
Go to the top of the page
 
+Quote Post
ArtDenis
сообщение Aug 5 2015, 02:47
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 142
Регистрация: 10-11-12
Пользователь №: 74 318



Нет. Путём научного тыка выяснилось, что когда обращаешься к регистрам 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


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


--------------------
http://ufa-darts.ru/ - собираем дартс-лигу в Уфе
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th July 2025 - 00:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01362 секунд с 7
ELECTRONIX ©2004-2016