/********************* COPYRIGHT  **********************
* File Name        : if_port.h
* Author           : Levetop Electronics
* Version          : V1.0
* Date             : 2017-9-11
* Description      : 选择不同的驱动接口
********************************************************/

#ifndef _if_port_h
#define _if_port_h
#include "sys.h"      // STM32的头文件

//选择通信方式

#define STM32_FSMC_8	0		// 使用STM32的外设FSMC驱动LT768(STM32硬件模拟8080总线(8位))
#define STM32_FSMC_16	1		// 使用STM32的外设FSMC驱动LT738(STM32硬件模拟8080总线(16位))
#define STM32_SPI		0		// 使用STM32的SPI驱动LT738

//选择显示分辨率
#define TFT480272 	1		// 选择分辨率480×272
#define TFT800480 	0		// 选择分辨率800×480
#define TFT1024600 	0		// 选择分辨率1024×600
#define TFT1024768 	0		// 选择分辨率1024×768

//选择8位8080总线驱动
#if STM32_FSMC_8
#define LCD_BASE0        ((u32)(0x6C000000 | 0x0000007E))
#define LCD_BASE1        ((u32)(0x6C000000 | 0x00000080))
#endif

//选择16位8080总线驱动
#if STM32_FSMC_16
#define LCD_BASE0        ((u32)(0x6C000000 | 0x0000007E))
#define LCD_BASE1        ((u32)(0x6C000000 | 0x00000080))
//#define LCD             ((LCD_TypeDef *) LCD_BASE)
#endif

//选择SPI驱动
#if STM32_SPI
//SPI模式设置
//4线串行模式
//IO方向设置
#define SPI_SDIN()  {GPIOE->MODER&=~(3<<(2*2);GPIOE->MODER|=0<<2*2;}///PF11输入模式
#define SPI_SDOUT() {GPIOE->MODER&=~(3<<(2*3));GPIOE->MODER|=1<<2*3;} 	//PF11输出模式

										
//-----------------端口定义----------------  					   
//#define SPI_CS 	PEout(7)
 
//使用4线串行接口时使用 
//#define SPI_SCLK 	PEout(10)
//#define SPI_SDO 	PEout(8)
//#define SPI_SDI 	PEin(9)


#define SPI_CS 	PEout(0)
 
//使用4线串行接口时使用 
#define SPI_SCLK 	PEout(1)
#define SPI_SDO 	PEout(2)
#define SPI_SDI 	PEin(3)
#endif




void Parallel_Init(void);
void FSMC_IO_Init(void);

void LCD_CmdWrite(u8 cmd);
void LCD_DataWrite(u8 data);
void LCD_DataWrite_Pixel(u16 data);
u8 LCD_StatusRead(void);
u16 LCD_DataRead(void);
	 
void Delay_us(u16 time); //延时函数us级
void Delay_ms(u16 time); //延时函数ms级

void test_FSMCIO(void);

void FMSC_16_DataWrite_Pixel(u16 data);



#endif
