This is out of my budget, как говорится. Загнули цену, однако, последователи товарища Мао.
Мне и chaineae пока хватает для эпизодических поисков при затыках.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
, вам ни о чем не говорит?с нужным параметрами
Код: Выделить всё
#define LCD_DAT ((volatile uint16_t*)0x60000040)
#define LCD_CMD ((volatile uint16_t*)0x60000000)
У FSMC выведено 26 линий адреса которые позволяют адресовать 64MB, но в банке 256MB, потому можно прицепить 4 микросхемы памяти и тогда роль физически отсутствующих A27:A26 будут выполнять четыре сигнала NE. Когда ты включаешь FSMC_Bank1_NORSRAM4 то чтобы на NE4 увидеть не только единицу по идее нужно писать по адресу в котором A27:A26 сами оба в единице(0x6С000000). Это в теории, я лично всегда выбирал только NORSRAM1...3. Правильно ли выбрал банк?
fsmc.FSMC_Bank = FSMC_Bank1_NORSRAM4;
FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM4, ENABLE);
Код: Выделить всё
uint8_t in[100];
uint8_t out[100] = "qwertyuiop1234567890";
void DMA_ini(void)
{
DMA_InitTypeDef dma;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1, ENABLE);
dma.DMA_Channel = DMA_Channel_0;
dma.DMA_PeripheralBaseAddr = (uint32_t)out;
dma.DMA_Memory0BaseAddr = (uint32_t)in;
dma.DMA_DIR = DMA_DIR_MemoryToMemory;
dma.DMA_BufferSize = 100;
dma.DMA_PeripheralInc = DMA_PeripheralInc_Enable;
dma.DMA_MemoryInc = DMA_MemoryInc_Enable;
dma.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
dma.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
dma.DMA_Mode = DMA_Mode_Normal;
dma.DMA_Priority = DMA_Priority_VeryHigh;
dma.DMA_FIFOMode = DMA_FIFOMode_Disable;
dma.DMA_FIFOThreshold = DMA_FIFOThreshold_Full;
dma.DMA_MemoryBurst = DMA_MemoryBurst_Single;
dma.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
DMA_Init(DMA1_Stream0, &dma);
DMA_ITConfig(DMA1_Stream0, DMA_IT_TC, ENABLE);
NVIC_EnableIRQ(DMA1_Stream0_IRQn);
}Код: Выделить всё
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1, ENABLE);Если выводишь из памяти в GPIO или FSMC просто на максимальной скорости, то да, будет M2M, но если делать то же самое, но уже по таймеру, то нужен MemToPeriph.И ещё бы научится через DMA c gpio и с fsmc работать. Я правильно понимаю, что с точки зрения контроллера DMA это не периферия и настраивать в этих случаях его надо для обмена DMA_DIR_MemoryToMemory?
Как уж я так просмотрел то, блин...F4 в режиме M2M работает только с DMA2.