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;
ЗЫ: не проверял, но работать должно.
Ядро может записывать данные через указатель на конкретный адрес во внешней памяти.
например считываем:
#define BANK1_WRITE_START_ADDR ((uint32_t)0х60000000)
u16 a;
a = *(__IO uint16_t*) BANK1_WRITE_START_ADDR;
ЗЫ: не проверял, но работать должно.
- Dimaxa
- Посетитель
10 года 7 мес. назад #5259
от Dimaxa
Dimaxa ответил в теме Re: STM32 + SRAM
Спасибо получилось, но возник другой вопрос. DMA Переносит 32-х разрядное слово в память 16-и разрядную, происходит потеря половины информации, нет идеи как в память из DMA всё слово перенести?
- Dimaxa
- Посетитель
10 года 7 мес. назад #5260
от Dimaxa
Dimaxa ответил в теме Re: STM32 + SRAM
Нашёл как, DMA же предлагает указать разрядность данных
- Dimaxa
- Посетитель
10 года 7 мес. назад #5261
от Dimaxa
Dimaxa ответил в теме Re: STM32 + SRAM
Нет, лажа. При попытке записать данные через DMA в массив 16 бит, ругается что размерность массива мала, DMA жёстко работает только с 32-битным словом, тогда не понимаю зачем указывать размерность памяти в настройках.
Есть мысли как всё таки слово 32 бит из DMA перенести в память 2 слова по 16 бит?
Есть мысли как всё таки слово 32 бит из DMA перенести в память 2 слова по 16 бит?
- Dimaxa
- Посетитель
10 года 7 мес. назад #5262
от Dimaxa
Dimaxa ответил в теме Re: STM32 + SRAM
И ещё такой вопрос. у DMA всегда слово 32 бита. Если я указываю размерность передаваемого слова 16 бит, первые 16 бит несут информацию, остальные пустые. Но переменная в которую записываются данные должна иметь разрядность всё таки 32 бита. Что не есть хорошо.
У меня сейчас массив из 10240 точек по 32 бита, если переходить на 16 бит, так как массив будет переноситься во внешнюю память, потребуется массив 20480, остался вопрос, как из DMA данные перенести в переменную 16 бит. Желательно без всяких посторонних конвертаций, дабы не тратить ресурсы ядра.
У меня сейчас массив из 10240 точек по 32 бита, если переходить на 16 бит, так как массив будет переноситься во внешнюю память, потребуется массив 20480, остался вопрос, как из DMA данные перенести в переменную 16 бит. Желательно без всяких посторонних конвертаций, дабы не тратить ресурсы ядра.
- Dimaxa
- Посетитель
10 года 7 мес. назад #5263
от Dimaxa
Dimaxa ответил в теме Re: STM32 + SRAM
Если в DMA указано что данные перемещать в память по определённому адресу, и в настройках DMA стоит размерность данных 16 бит, в память будет переноситься только 16 бит несущие информацию, или 32 битное слово целиком, 16 бит информации и 16 пустоты?
Или если в настройках DMA стоит размерность данных 32 бита, как они в память 16 бит будут переноситься.
Голова вскипает.
Или если в настройках DMA стоит размерность данных 32 бита, как они в память 16 бит будут переноситься.
Голова вскипает.
Время создания страницы: 0.037 секунд