Например TDA7294

Форум РадиоКот • Просмотр темы - STM32H743 DMA
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб июл 26, 2025 06:57:17

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: STM32H743 DMA
СообщениеДобавлено: Вт ноя 19, 2019 08:33:21 
Родился
Аватар пользователя

Зарегистрирован: Пт окт 18, 2019 10:24:38
Сообщений: 2
Рейтинг сообщения: 0
Доброго времени суток!

Понадобилось передать массив по SPI с использованием DMA. .data .bss ._user_heap_stack расположил в RAM_D1.
Среда разработки TrueSTUDIO в связке с CubeMX, использую стандартную команду HAL_SPI_Transmit_DMA.

При передаче глобального массива все ок, работает без проблем, но при попытке передачи массива, объявленного внутри функции, SPI не передает ничего.

Пробовал включать I,D cache, запрещал кеширование всего RAM_D1, менял расположение на RAM_D2, использовал DMA1,2 с разными потоками(все это в разных комбинациях). Ничего не помогает.
В HAL'овской структуре SPI код ошибки 16(Значит ошибка связана с DMA), в структуре DMA код ошибки 1.
Ниже прилагаю System architecture контроллера и(на всякий случай) данные структуры, после вызова функции HAL_SPI_Transmit_DMA

Изображение Изображение
Буду благодарен за любую идею.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32H743 DMA
СообщениеДобавлено: Вт ноя 19, 2019 13:23:56 
Говорящий с текстолитом

Карма: -10
Рейтинг сообщений: 173
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1504
Рейтинг сообщения: 1
При передаче глобального массива все ок, работает без проблем, но при попытке передачи массива, объявленного внутри функции, SPI не передает ничего.
Объявленного где? Уж не на стеке-ли с последующим выходом из функции до завершения DMA-транзакции? :))) :)))

Добавлено after 1 minute 36 seconds:
Буду благодарен за любую идею.
Лучше бы показали как объявляете массив, стартуете/завершаете DMA-транзакцию. А если массив на стеке, то ещё - где (в каком регионе ОЗУ) находится стек?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32H743 DMA
СообщениеДобавлено: Вт ноя 19, 2019 14:17:28 
Родился
Аватар пользователя

Зарегистрирован: Пт окт 18, 2019 10:24:38
Сообщений: 2
Рейтинг сообщения: 0
Объявленного где? Уж не на стеке-ли с последующим выходом из функции до завершения DMA-транзакции? :))) :)))
Лучше бы показали как объявляете массив, стартуете/завершаете DMA-транзакцию. А если массив на стеке, то ещё - где (в каком регионе ОЗУ) находится стек?

Спасибо, что заставили перепроверить, а то я уже хотел забросить это дело. Думал,что в build analyzer(нижеприведенный скриншот) достоверные данные.
Посмотрел через printf адрес переменной, а она почему то в DTCMRAM.

Изображение

Суть в том что в .ld файле есть нижеприведенный параметр(о котором я даже не подозревал). Вот я его и не заметил, поправив только циферки в build analyzer.
Код:
_estack = 0x20020000;    //было(конец DTCMRAM)
_estack = 0x24080000;    //стало(конец RAM_D1)


Теперь работает.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y