TMNTmaker ! / ov7670_dma_nucleo_f4

It's nucleo f4 DMA trandfer for ov7670&ILI9341.

Dependencies:   mbed ILI9341_SPI OV7670_SCCB

Committer:
tmnt
Date:
Sun Nov 20 11:30:49 2016 +0000
Revision:
7:2ed3ce710cc2
Parent:
5:541e2adc765d
i

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tmnt0:ce10b2e08479 1#include "mbed.h"
tmnt0:ce10b2e08479 2#include "TIM_DMAInit.h"
tmnt0:ce10b2e08479 3#include "SPI_DMAInit.h"
tmnt5:541e2adc765d 4#include "ILI9341.h"
tmnt5:541e2adc765d 5#include "SCCB.h"
tmnt5:541e2adc765d 6#include "GPIOInit.h"
tmnt0:ce10b2e08479 7/*
tmnt0:ce10b2e08479 8
tmnt0:ce10b2e08479 9 ********ov7670********
tmnt0:ce10b2e08479 10 +3V3 - 3V3 GND-GND
tmnt0:ce10b2e08479 11 PC_12 - SIOC SIDO - PC10
tmnt0:ce10b2e08479 12 PD_2 - VSYNC HREF - A3
tmnt0:ce10b2e08479 13 B4,A4 - PCLK XCLK - PC_9
tmnt0:ce10b2e08479 14 PB_7 - D7 D6 - PB_6
tmnt0:ce10b2e08479 15 PB_5 - D5 D4 - PB_4
tmnt0:ce10b2e08479 16 PB_3 - D3 D2 - PB_2
tmnt0:ce10b2e08479 17 PB_1 - D1 D0 - PB_0
tmnt0:ce10b2e08479 18+3V3-330Ω-RESET
tmnt0:ce10b2e08479 19
tmnt0:ce10b2e08479 20 ********74HC00*********
tmnt3:901230f7d62b 21A1 VCC - +3V3
tmnt0:ce10b2e08479 22B1 B4 -- PCLK
tmnt0:ce10b2e08479 23Y1 A4 -- PCLK
tmnt0:ce10b2e08479 24A2 Y4 - B3
tmnt0:ce10b2e08479 25B2 B3 - Y4
tmnt0:ce10b2e08479 26Y2 A3 - HREF
tmnt0:ce10b2e08479 27GND Y3 - PA8
tmnt0:ce10b2e08479 28
tmnt0:ce10b2e08479 29 ********ILI9341*********
tmnt0:ce10b2e08479 30SDO - PA6
tmnt3:901230f7d62b 31LED - 10kΩ - +3V3
tmnt0:ce10b2e08479 32SCK - PA5
tmnt0:ce10b2e08479 33SDI - PA7
tmnt0:ce10b2e08479 34DC - PA_4
tmnt0:ce10b2e08479 35RS - PA_12
tmnt0:ce10b2e08479 36CS - PA_11
tmnt0:ce10b2e08479 37GND - GND
tmnt0:ce10b2e08479 38VCC - +5V
tmnt0:ce10b2e08479 39
tmnt5:541e2adc765d 40
tmnt0:ce10b2e08479 41
tmnt0:ce10b2e08479 42*/
tmnt0:ce10b2e08479 43
tmnt0:ce10b2e08479 44uint8_t dma_buf[145][300];
tmnt0:ce10b2e08479 45uint8_t flag_dma;
tmnt0:ce10b2e08479 46
tmnt0:ce10b2e08479 47InterruptIn VSYNC(PD_2);
tmnt0:ce10b2e08479 48SPI spi(PA_7,PA_6,PA_5);
tmnt5:541e2adc765d 49ili9341_spi lcd(spi,PA_11,PA_4,PA_12);
tmnt5:541e2adc765d 50ov7670_sccb sccb(PC_10,PC_12);
tmnt0:ce10b2e08479 51PortIn cdata(PortB, 0x00ff);
tmnt0:ce10b2e08479 52
tmnt0:ce10b2e08479 53void camdma_start();
tmnt0:ce10b2e08479 54
tmnt0:ce10b2e08479 55int main() {
tmnt0:ce10b2e08479 56
tmnt0:ce10b2e08479 57
tmnt5:541e2adc765d 58 gpio_Init();
tmnt0:ce10b2e08479 59 dma_init();
tmnt0:ce10b2e08479 60
tmnt0:ce10b2e08479 61 spi.format(8,3);
tmnt0:ce10b2e08479 62 spi.frequency(20000000);
tmnt5:541e2adc765d 63 lcd.tft_reset();
tmnt0:ce10b2e08479 64
tmnt0:ce10b2e08479 65 __disable_irq();
tmnt0:ce10b2e08479 66
tmnt5:541e2adc765d 67 VSYNC.rise(&camdma_start);
tmnt5:541e2adc765d 68 sccb.cam_init();
tmnt0:ce10b2e08479 69
tmnt7:2ed3ce710cc2 70lcd.fillrect(0,0,149,144,0xf800);//red
tmnt0:ce10b2e08479 71
tmnt5:541e2adc765d 72wait(1);
tmnt5:541e2adc765d 73 lcd.wr_cmd(0x2C);
tmnt0:ce10b2e08479 74 spi.write(0x66);
tmnt0:ce10b2e08479 75 spi_Init();
tmnt0:ce10b2e08479 76
tmnt0:ce10b2e08479 77 __enable_irq();
tmnt0:ce10b2e08479 78
tmnt0:ce10b2e08479 79
tmnt0:ce10b2e08479 80 while(1) {
tmnt0:ce10b2e08479 81 }
tmnt0:ce10b2e08479 82}
tmnt0:ce10b2e08479 83
tmnt0:ce10b2e08479 84
tmnt0:ce10b2e08479 85void camdma_start()
tmnt0:ce10b2e08479 86{
tmnt0:ce10b2e08479 87if(flag_dma==0){
tmnt0:ce10b2e08479 88 HAL_DMA_Start_IT(&DMA_HandleType/*DMA初期設定構造体*/, (uint32_t)&GPIOB->IDR/*&0x00ff転送元アドレス*/, (uint32_t)dma_buf/*転送先アドレス*/,43500/*データ転送回数*/);
tmnt0:ce10b2e08479 89
tmnt0:ce10b2e08479 90 HAL_SPI_Transmit_DMA(&spi1, (uint8_t*)dma_buf, sizeof(dma_buf));
tmnt0:ce10b2e08479 91}
tmnt0:ce10b2e08479 92flag_dma=1;
tmnt0:ce10b2e08479 93}