×

Внимание

Форум находится в режиме только для чтения.

STM32 + SRAM

10 года 7 мес. назад #5258 от Денис Ягов
Денис Ягов ответил в теме Re: STM32 + SRAM
Можно обращаться к внешней ОЗУ как через DMA, так и через ядро. С DMA - всё понятно, указываем адрес источника/приёмника на внешнюю память.

Ядро может записывать данные через указатель на конкретный адрес во внешней памяти.

например считываем:

#define BANK1_WRITE_START_ADDR  ((uint32_t)0х60000000)

u16 a;
a = *(__IO uint16_t*) BANK1_WRITE_START_ADDR;


ЗЫ: не проверял, но работать должно.
10 года 7 мес. назад #5259 от Dimaxa
Dimaxa ответил в теме Re: STM32 + SRAM
Спасибо получилось, но возник другой вопрос. DMA Переносит 32-х разрядное слово в память 16-и разрядную, происходит потеря половины информации, нет идеи как в память из DMA всё слово перенести?
10 года 7 мес. назад #5260 от Dimaxa
Dimaxa ответил в теме Re: STM32 + SRAM
Нашёл как:), DMA же предлагает указать разрядность данных :)
10 года 7 мес. назад #5261 от Dimaxa
Dimaxa ответил в теме Re: STM32 + SRAM
Нет, лажа. При попытке записать данные через DMA в массив 16 бит, ругается что размерность массива мала, DMA жёстко работает только с 32-битным словом, тогда не понимаю зачем указывать размерность памяти в настройках.
Есть мысли как всё таки слово 32 бит из DMA перенести в память 2 слова по 16 бит?
10 года 7 мес. назад #5262 от Dimaxa
Dimaxa ответил в теме Re: STM32 + SRAM
И ещё такой вопрос. у DMA всегда слово 32 бита.  Если я указываю размерность передаваемого слова 16 бит, первые 16 бит несут информацию, остальные пустые. Но переменная в которую записываются данные должна иметь разрядность всё таки 32 бита. Что не есть хорошо.

У меня сейчас массив из 10240 точек по 32 бита, если переходить на 16 бит, так как массив будет переноситься во внешнюю память, потребуется массив 20480, остался вопрос, как из DMA данные перенести в переменную 16 бит. Желательно без всяких посторонних конвертаций, дабы не тратить ресурсы ядра.
10 года 7 мес. назад #5263 от Dimaxa
Dimaxa ответил в теме Re: STM32 + SRAM
Если в DMA указано что данные перемещать в память по определённому адресу, и в настройках DMA стоит размерность данных 16 бит, в память будет переноситься только 16 бит несущие информацию, или 32 битное слово целиком, 16 бит информации и 16 пустоты?


Или если в настройках DMA стоит размерность данных 32 бита, как они в память 16 бит будут переноситься.

Голова вскипает.
Время создания страницы: 0.037 секунд
Работает на Kunena форум