Demo of low res colour vga video for stm32f3 discovery board

Dependencies:   STM32F3-Discovery-minimal

Fork of Space_Invaders_Demo by Martin Johnson

Revision:
9:654866da5da4
Parent:
8:34fb94209517
Child:
10:8ffcefda667a
--- a/video.c	Tue May 29 23:16:35 2018 +0000
+++ b/video.c	Tue May 29 23:52:40 2018 +0000
@@ -97,10 +97,7 @@
 		Horizontal timing
 		-----------------
 		
-		Timer 1 period = 31468.53 Hz
-		
-		Since firing the DMA takes more or less 400ns, we'll start it 28 ticks early.
-		
+		Timer 1 period = 31468.53 Hz		
 	
 		Horizontal timing info
 		----------------------
@@ -112,12 +109,13 @@
 		Sync pulse		96		3.8133068520357		275
 		Back porch		48		1.9066534260179		137
 		Whole line		800		31.777557100298		2288
+		Sync + bp		144		5.7199602780536		412
 	
 	*/
 
 	TimerPeriod = 2288;//2303;
 	Channel1Pulse = 275;//274;//274;//277;		/* HSYNC */
-	Channel3Pulse = 382;//412;//394;
+	Channel3Pulse = 412;//412;//394;
 	
 	TIM1->CR1 &= ~TIM_CR1_CEN;
 	
@@ -290,7 +288,7 @@
 		
 	//printf("l:%d\n",nlines);
 	nlines=0;
-	DMA2_Channel1->CCR = DMA_CCR_DIR  | DMA_CCR_MINC  | DMA_CCR_PL_1 | DMA_CCR_PL_0 | DMA_CCR_TCIE | DMA_CCR_EN | DMA_CCR_CIRC;
+	DMA2_Channel1->CCR = DMA_CCR_DIR  | DMA_CCR_MINC  | DMA_CCR_PL_1 | DMA_CCR_PL_0 | DMA_CCR_TCIE | DMA_CCR_EN;// | DMA_CCR_CIRC;
 }
 
 //*****************************************************************************
@@ -315,7 +313,7 @@
 		vline++;
 		if (vline == VID_VSIZE) {
 			vdraw = vline = vflag = 0;
-			DMA2_Channel1->CMAR = (u32) fba+fboffset;
+			DMA2_Channel1->CMAR = (u32)fba;
 			DMA2_Channel1->CPAR=&nlines;
 			GPIOD->ODR=0x00;
 		} else {
@@ -324,18 +322,13 @@
 	}
 	//GPIOD->ODR=0x00;
 	if(vflag)
-		DMA2_Channel1->CCR = DMA_CCR_DIR | DMA_CCR_MINC  | DMA_CCR_PL_1 | DMA_CCR_PL_0 | DMA_CCR_TCIE | DMA_CCR_EN | DMA_CCR_CIRC;
+		DMA2_Channel1->CCR = DMA_CCR_DIR | DMA_CCR_MINC  | DMA_CCR_PL_1 | DMA_CCR_PL_0 | DMA_CCR_TCIE | DMA_CCR_EN;// | DMA_CCR_CIRC;
 	
 	
 }
-__attribute__ ((section ("ccmram"))) void vidNextBuffer1(void) {
-	    char *fp=(unsigned *)fb[0];
-	    for(int i=0;i<VID_VSIZE*HTOTAL;i++)
-	    	*fp++=(*fp>>4);//&0xf0f0f0f;
-}
 
 __attribute__ ((section ("ccmram"))) void vidNextBuffer(void) {
-	    unsigned *fp=(unsigned *)fb[0];
+	    unsigned *fp=(unsigned *)fba;
 	    for(int i=0;i<VID_VSIZE*HTOTAL/4;i++)
 	    	*fp++=(*fp>>4)&0xf0f0f0f;
 }
@@ -343,6 +336,7 @@
 __attribute__ ((section ("ccmram"))) void waitForRefresh(void) {
 	while(vflag) __wfi();
 }
+
 void vidClearScreen(void) {
 	u16 x, y;
 
@@ -366,7 +360,7 @@
 	DMA_Configuration();
 	TIMER_Configuration();
 	for(i=0;i<VID_VSIZE;i++)
-		fb[i]=fba+i*HTOTAL;
+		fb[i]=fba+i*HTOTAL+2;
 	vidClearScreen();
 }