It's nucleo f4 DMA trandfer for ov7670&ILI9341.
Dependencies: mbed ILI9341_SPI OV7670_SCCB
Diff: SPI_DMAInit.h
- Revision:
- 0:ce10b2e08479
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SPI_DMAInit.h Mon Apr 04 02:05:59 2016 +0000 @@ -0,0 +1,52 @@ +#include "mbed.h" + + + +DMA_HandleTypeDef SPIDma; +SPI_HandleTypeDef spi1; + + +void spi_Init() { + + + __DMA2_CLK_ENABLE(); + SPIDma.Instance = DMA2_Stream3; + SPIDma.Init.Channel = DMA_CHANNEL_3; + SPIDma.Init.Direction = DMA_MEMORY_TO_PERIPH; + SPIDma.Init.PeriphInc = DMA_PINC_DISABLE; + SPIDma.Init.MemInc = DMA_MINC_ENABLE; + SPIDma.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; // 8 bit + SPIDma.Init.MemDataAlignment = DMA_PDATAALIGN_BYTE; // 8 bit + SPIDma.Init.Mode = DMA_CIRCULAR; + SPIDma.Init.Priority = DMA_PRIORITY_HIGH; + SPIDma.Init.FIFOMode = DMA_FIFOMODE_DISABLE; + HAL_DMA_Init(&SPIDma); + + // SPI pin + __GPIOA_CLK_ENABLE(); + GPIO_InitTypeDef spipins; + spipins.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; + spipins.Mode = GPIO_MODE_AF_PP; + spipins.Pull = GPIO_PULLDOWN; + spipins.Speed = GPIO_SPEED_HIGH; + spipins.Alternate = GPIO_AF5_SPI1; + HAL_GPIO_Init(GPIOA, &spipins); + + // SPI + __SPI1_CLK_ENABLE(); + spi1.Init.Mode = SPI_MODE_MASTER; + spi1.Init.Direction = SPI_DIRECTION_2LINES; + spi1.Init.DataSize = SPI_DATASIZE_8BIT; + spi1.Init.CLKPolarity= SPI_POLARITY_LOW;//パリティビット無し + spi1.Init.CLKPhase = SPI_PHASE_1EDGE; // transmit only mode 送信のみ + spi1.Init.NSS = SPI_NSS_SOFT; + spi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; + spi1.Init.FirstBit = SPI_FIRSTBIT_MSB ; + spi1.Init.CRCPolynomial = 7; + + spi1.Instance = SPI1; + spi1.hdmatx = &SPIDma; + HAL_SPI_Init(&spi1); + + +}