DCMI for f446re ,ov7670

Dependencies:   ILI9341_SPI OV7670_SCCB mbed

Committer:
tmnt
Date:
Sun Nov 20 10:59:03 2016 +0000
Revision:
0:4e2fae6764b6
DCMI for f446re

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tmnt 0:4e2fae6764b6 1 #include "mbed.h"
tmnt 0:4e2fae6764b6 2
tmnt 0:4e2fae6764b6 3
tmnt 0:4e2fae6764b6 4
tmnt 0:4e2fae6764b6 5 DMA_HandleTypeDef SPIDma;
tmnt 0:4e2fae6764b6 6 SPI_HandleTypeDef spi1;
tmnt 0:4e2fae6764b6 7
tmnt 0:4e2fae6764b6 8
tmnt 0:4e2fae6764b6 9 void spi_Init() {
tmnt 0:4e2fae6764b6 10
tmnt 0:4e2fae6764b6 11
tmnt 0:4e2fae6764b6 12 __DMA2_CLK_ENABLE();
tmnt 0:4e2fae6764b6 13 SPIDma.Instance = DMA2_Stream3;
tmnt 0:4e2fae6764b6 14 SPIDma.Init.Channel = DMA_CHANNEL_3;
tmnt 0:4e2fae6764b6 15 SPIDma.Init.Direction = DMA_MEMORY_TO_PERIPH;
tmnt 0:4e2fae6764b6 16 SPIDma.Init.PeriphInc = DMA_PINC_DISABLE;
tmnt 0:4e2fae6764b6 17 SPIDma.Init.MemInc = DMA_MINC_ENABLE;
tmnt 0:4e2fae6764b6 18 SPIDma.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; // 8 bit
tmnt 0:4e2fae6764b6 19 SPIDma.Init.MemDataAlignment = DMA_PDATAALIGN_BYTE; // 8 bit
tmnt 0:4e2fae6764b6 20 SPIDma.Init.Mode = DMA_CIRCULAR;
tmnt 0:4e2fae6764b6 21 SPIDma.Init.Priority = DMA_PRIORITY_HIGH;
tmnt 0:4e2fae6764b6 22 SPIDma.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
tmnt 0:4e2fae6764b6 23 HAL_DMA_Init(&SPIDma);
tmnt 0:4e2fae6764b6 24
tmnt 0:4e2fae6764b6 25 // SPI pin
tmnt 0:4e2fae6764b6 26 __GPIOB_CLK_ENABLE();
tmnt 0:4e2fae6764b6 27 GPIO_InitTypeDef spipins;
tmnt 0:4e2fae6764b6 28 spipins.Pin = GPIO_PIN_5|GPIO_PIN_4|GPIO_PIN_3;
tmnt 0:4e2fae6764b6 29 spipins.Mode = GPIO_MODE_AF_PP;
tmnt 0:4e2fae6764b6 30 spipins.Pull = GPIO_PULLDOWN;
tmnt 0:4e2fae6764b6 31 spipins.Speed = GPIO_SPEED_HIGH;
tmnt 0:4e2fae6764b6 32 spipins.Alternate = GPIO_AF5_SPI1;
tmnt 0:4e2fae6764b6 33 HAL_GPIO_Init(GPIOB, &spipins);
tmnt 0:4e2fae6764b6 34
tmnt 0:4e2fae6764b6 35 // SPI
tmnt 0:4e2fae6764b6 36 __SPI1_CLK_ENABLE();
tmnt 0:4e2fae6764b6 37 spi1.Init.Mode = SPI_MODE_MASTER;
tmnt 0:4e2fae6764b6 38 spi1.Init.Direction = SPI_DIRECTION_2LINES;
tmnt 0:4e2fae6764b6 39 spi1.Init.DataSize = SPI_DATASIZE_8BIT;
tmnt 0:4e2fae6764b6 40 spi1.Init.CLKPolarity= SPI_POLARITY_LOW;//パリティビット無し
tmnt 0:4e2fae6764b6 41 spi1.Init.CLKPhase = SPI_PHASE_1EDGE; // transmit only mode 送信のみ
tmnt 0:4e2fae6764b6 42 spi1.Init.NSS = SPI_NSS_SOFT;
tmnt 0:4e2fae6764b6 43 spi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
tmnt 0:4e2fae6764b6 44 spi1.Init.FirstBit = SPI_FIRSTBIT_MSB ;
tmnt 0:4e2fae6764b6 45 spi1.Init.CRCPolynomial = 7;
tmnt 0:4e2fae6764b6 46
tmnt 0:4e2fae6764b6 47 spi1.Instance = SPI1;
tmnt 0:4e2fae6764b6 48 spi1.hdmatx = &SPIDma;
tmnt 0:4e2fae6764b6 49 HAL_SPI_Init(&spi1);
tmnt 0:4e2fae6764b6 50
tmnt 0:4e2fae6764b6 51
tmnt 0:4e2fae6764b6 52 }