GPIO+DMA stm32f429

Кто любит RISC в жизни, заходим, не стесняемся.
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: GPIO+DMA stm32f429

Сообщение Reflector »

[uquote="allplayer",url="/forum/viewtopic.php?p=3294983#p3294983"]Разве могут быть помехи, если у меня внешний АЦП продавливает ноги порта?[/uquote]
Мк шумит, особенно в разгоне, но если у тебя с аналоговым питанием все в порядке, то может заметной разницы и не будет...
Реклама
Аватара пользователя
Fusion
Грызет канифоль
Сообщения: 272
Зарегистрирован: Пт ноя 13, 2009 10:39:32
Откуда: Москва
Контактная информация:

Re: GPIO+DMA stm32f429

Сообщение Fusion »

Если во время чтения АЦП я вывожу что нибудь на экран, то появляется шум до 3 младших разрядов.
Возможно разводка неудачная.
Реклама
Аватара пользователя
allplayer
Открыл глаза
Сообщения: 72
Зарегистрирован: Вс апр 24, 2011 20:12:21

Re: GPIO+DMA stm32f429

Сообщение allplayer »

[uquote="Fusion",url="/forum/viewtopic.php?p=3294836#p3294836"]STM32F446 разогнан до 240 мГц.
DCMI через DMA работает до 120мГц стабильно.
Клок для АЦП Port A8 OUT MCO.
На 60 мГц и ниже тактирование по таймеру.[/uquote]
А можно по подробнее про 120 МГц?
Не отказался бы от кода инициализации :roll:
Купил лазерный принтер... Теперь осталось спаять машину времени и прислать себе принтер пораньше =D
Аватара пользователя
Fusion
Грызет канифоль
Сообщения: 272
Зарегистрирован: Пт ноя 13, 2009 10:39:32
Откуда: Москва
Контактная информация:

Re: GPIO+DMA stm32f429

Сообщение Fusion »

СпойлерDCMI

Код: Выделить всё

//======================
void DCMI_init(char mode)
{
	RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_DCMI, ENABLE);
	DCMI_InitTypeDef DCMI_InitStructure;
	DCMI_DeInit();
	{DCMI_InitStructure.DCMI_CaptureMode = DCMI_CaptureMode_SnapShot;}
	DCMI_InitStructure.DCMI_ExtendedDataMode = DCMI_ExtendedDataMode_8b;
	DCMI_InitStructure.DCMI_CaptureRate = DCMI_CaptureRate_All_Frame;
	DCMI_InitStructure.DCMI_PCKPolarity = DCMI_PCKPolarity_Rising;
	DCMI_InitStructure.DCMI_HSPolarity = DCMI_HSPolarity_Low;
	DCMI_InitStructure.DCMI_VSPolarity = DCMI_VSPolarity_Low;
	DCMI_InitStructure.DCMI_SynchroMode = DCMI_SynchroMode_Hardware;
	DCMI_Init(&DCMI_InitStructure);

	DCMI_Cmd(ENABLE);
}
DMA

Код: Выделить всё

void DMA_init(unsigned int addressbuffer, unsigned int BufferSize)
{
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE);
	DMA_InitTypeDef DMA_InitStructure;
	DMA_DeInit(DMA2_Stream1);
	
	DMA_InitStructure.DMA_Channel = DMA_Channel_1;
	DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t) (&DCMI->DR);
	DMA_InitStructure.DMA_Memory0BaseAddr = addressbuffer;
	DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;
	DMA_InitStructure.DMA_BufferSize = BufferSize/4;
	DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
	DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
	DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;
	DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;
	DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;
	DMA_InitStructure.DMA_Priority = DMA_Priority_VeryHigh;
	DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;
	DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full;
	DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
	DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
	DMA_Init(DMA2_Stream1, &DMA_InitStructure);

	DMA_ITConfig (DMA2_Stream1, DMA_IT_TC, ENABLE);
	DMA_ITConfig (DMA2_Stream1, DMA_IT_HT, ENABLE);
	NVIC_EnableIRQ (DMA2_Stream1_IRQn);
}
На вход PIXCLK включить тактирование с таймера или MCO.
Старт по отрицательному синхроимпульсу на входы DCMI_VSYNC и DCMI_HSYNC. Может достаточно и одного DCMI_HSYNC, не проверял.
Реклама
Эиком - электронные компоненты и радиодетали
Ответить

Вернуться в «ARM»