SmartMeter / TFT_ILI9163C_aydo
Revision:
2:6c1fadae252f
Parent:
1:c271e7e2e330
Child:
4:90798975c496
--- a/TFT_ILI9163C.h	Thu Jan 22 12:16:31 2015 +0000
+++ b/TFT_ILI9163C.h	Mon Jan 26 10:39:12 2015 +0000
@@ -90,9 +90,21 @@
 
 #include <Adafruit_GFX.h>
 
-#if defined(STM32F411xE)
-	#define __F411RE__
-	#define __F411RE_DMA__		// use DMA
+// from http://www.keil.com/forum/21105/bitband-macro-to-get-bit-number-from-bit-mask/
+#define MASK_TO_BITNUM(x)	(x&0x1?0:x&0x2?1:x&0x4?2:x&0x8?3:\
+	x&0x10?4:x&0x20?5:x&0x40?6:x&0x80?7:\
+	x&0x100?8:x&0x200?9:x&0x400?10:x&0x800?11:\
+	x&0x1000?12:x&0x2000?13:x&0x4000?14:x&0x8000?15:\
+	x&0x10000?16:x&0x20000?17:x&0x40000?18:x&0x80000?19:\
+	x&0x100000?20:x&0x200000?21:x&0x400000?22:x&0x800000?23:\
+	x&0x1000000?24:x&0x2000000?25:x&0x4000000?26:x&0x8000000?27:\
+	x&0x10000000?28:x&0x20000000?29:x&0x40000000?30:x&0x80000000?31:32)
+
+#if defined(TARGET_NUCLEO_F411RE)	//#if defined(STM32F411xE)
+#define BITBAND_PERIPH(addr, bit) \
+    (volatile uint32_t*)(PERIPH_BB_BASE+((uint32_t)addr-PERIPH_BASE)*32+(bit*4))
+// use DMA
+	#define __F411RE_DMA__
 #endif
 
 //----- Define here witch display you own
@@ -257,19 +269,42 @@
 	void		writedata16(uint16_t d);
 	void		writedata32(uint16_t d1, uint16_t d2);
 	void		writedata16burst(uint16_t d, int32_t len);
-	void		waitSpiFree();
 	void 		chipInit();
 	bool 		boundaryCheck(int16_t x,int16_t y);
 	void 		homeAddress();
+	void		init(PinName cs, PinName dc);
 
 	DigitalOut _cs;
 	DigitalOut _dc;
 	PinName _resetPinName;
 	
-#if defined(__F411RE__)
-	SPI_TypeDef *spi_ptr;
+#if defined(TARGET_NUCLEO_F411RE)
+	void		selectSlave();
+	void		deselectSlave();
+	void		setCommandMode();
+	void		setDataMode();
+	void		set8bitMode();
+	void		set16bitMode();
+	void		waitSpiFree();
+	void		waitBufferFree();
+	
+	GPIO_TypeDef *cs_port_reg;
+	uint32_t cs_reg_mask;
+	GPIO_TypeDef *dc_port_reg;
+	uint32_t dc_reg_mask;
+	
+	// peripheral bit-band addresses
+//	volatile uint32_t *bb_cs_port;
+//	volatile uint32_t *bb_dc_port;
+	volatile uint32_t *bb_spi_txe;
+	volatile uint32_t *bb_spi_bsy;
+	volatile uint32_t *bb_spi_spe;
+	volatile uint32_t *bb_spi_dff;
+	
 #if defined(__F411RE_DMA__)
 	DMA_HandleTypeDef hdma;
+	volatile uint32_t *bb_spi_txdmaen;
+	volatile uint32_t *bb_dma_sxcr_en;
 #endif
 #endif