не могу запустить SSD1289
index считал 0х8989
и все дальше не получается кто знает подскажите
Спойлер#include "stm32f4xx_gpio.h" //#include "stm32f4xx_spi.h" #include "stm32f4xx_rcc.h" //#include "stm32f4xx_dma.h" #include "stm32f4xx.h"
#define line 240 #define colum 320
#define CS_ON GPIO_SetBits(GPIOD,GPIO_Pin_15); #define CS_OFF GPIO_ResetBits(GPIOD,GPIO_Pin_15);
#define RS_ON GPIO_SetBits(GPIOD,GPIO_Pin_14); #define RS_OFF GPIO_ResetBits(GPIOD,GPIO_Pin_14);
#define RD_ON GPIO_SetBits(GPIOD,GPIO_Pin_13); #define RD_OFF GPIO_ResetBits(GPIOD,GPIO_Pin_13);
#define WR_ON GPIO_SetBits(GPIOD,GPIO_Pin_12); #define WR_OFF GPIO_ResetBits(GPIOD,GPIO_Pin_12);
#define RESET_ON GPIO_SetBits(GPIOD,GPIO_Pin_11); #define RESET_OFF GPIO_ResetBits(GPIOD,GPIO_Pin_11);
#define in 1 #define out 2
u16 LCD_index; u16 temp;
//uint16_t LCD_BUF[(320*240)/2];//*2
/* * * CS PD15 * RS PD14 * WR PD13 * RD PD12 * RESET PD11
* * D0 PE0 * D1 PE1 * D2 PE2 * D3 PE3 * D4 PE4 * D5 PE5 * D6 PE6 * D7 PE7 * D8 PE8 * D9 PE9 * D10 PE10 * D11 PE11 * D12 PE12 * D13 PE13 * D14 PE14 * D15 PE15 * */
void PORT_DATA_init(u8 data) { GPIO_InitTypeDef GPIO_InitStructure;
if(data == 2)//out { RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);
GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_All);//DATA 0...15 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; GPIO_Init(GPIOE, &GPIO_InitStructure); }
if(data == 1)//in { RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);
GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_All);//DATA 0...15 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_OType = GPIO_OType_OD; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOE, &GPIO_InitStructure); }
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD,ENABLE);
GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_15 | GPIO_Pin_14 | GPIO_Pin_13 | GPIO_Pin_12 | GPIO_Pin_11); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOD, &GPIO_InitStructure); }
void Write_Command(u16 addr) { GPIO_Write(GPIOE,addr); CS_OFF; RS_ON; WR_OFF; WR_ON; CS_ON; }
void lcd_data_write(u16 data) { RS_OFF; WR_OFF; RD_ON; CS_OFF; GPIO_Write(GPIOE,data); CS_ON; }
void LCD_Write_REG(u16 addr,u16 data) { RS_ON; WR_OFF; RD_ON; CS_OFF; GPIO_Write(GPIOE,addr); CS_ON;
RS_OFF; WR_OFF; CS_OFF;
RD_ON; GPIO_Write(GPIOE,data); RD_OFF; CS_ON; }
void LCD_READ_index() { RS_ON; WR_OFF; RD_ON; CS_OFF; GPIO_Write(GPIOE,0); CS_ON;
PORT_DATA_init(in);
CS_OFF; LCD_index = GPIOE->IDR; CS_ON;
PORT_DATA_init(out); }
void lcd_init() { if( LCD_index == 0x8989 ) { LCD_Write_REG(0x0000,0x0001); delay_ms(50); LCD_Write_REG(0x0003,0xA8A4); delay_ms(50); LCD_Write_REG(0x000C,0x0000); delay_ms(50); LCD_Write_REG(0x000D,0x080C); delay_ms(50); LCD_Write_REG(0x000E,0x2B00); delay_ms(50); LCD_Write_REG(0x001E,0x00B0); delay_ms(50); LCD_Write_REG(0x0001,0x2B3F); delay_ms(50); /* 320*240 0x2B3F */ LCD_Write_REG(0x0002,0x0600); delay_ms(50); LCD_Write_REG(0x0010,0x0000); delay_ms(50); LCD_Write_REG(0x0011,0x6070); delay_ms(50); LCD_Write_REG(0x0005,0x0000); delay_ms(50); LCD_Write_REG(0x0006,0x0000); delay_ms(50); LCD_Write_REG(0x0016,0xEF1C); delay_ms(50); LCD_Write_REG(0x0017,0x0003); delay_ms(50); LCD_Write_REG(0x0007,0x0133); delay_ms(50); LCD_Write_REG(0x000B,0x0000); delay_ms(50); LCD_Write_REG(0x000F,0x0000); delay_ms(50); LCD_Write_REG(0x0041,0x0000); delay_ms(50); LCD_Write_REG(0x0042,0x0000); delay_ms(50); LCD_Write_REG(0x0048,0x0000); delay_ms(50); LCD_Write_REG(0x0049,0x013F); delay_ms(50); LCD_Write_REG(0x004A,0x0000); delay_ms(50); LCD_Write_REG(0x004B,0x0000); delay_ms(50); LCD_Write_REG(0x0044,0xEF00); delay_ms(50); LCD_Write_REG(0x0045,0x0000); delay_ms(50); LCD_Write_REG(0x0046,0x013F); delay_ms(50); LCD_Write_REG(0x0030,0x0707); delay_ms(50); LCD_Write_REG(0x0031,0x0204); delay_ms(50); LCD_Write_REG(0x0032,0x0204); delay_ms(50); LCD_Write_REG(0x0033,0x0502); delay_ms(50); LCD_Write_REG(0x0034,0x0507); delay_ms(50); LCD_Write_REG(0x0035,0x0204); delay_ms(50); LCD_Write_REG(0x0036,0x0204); delay_ms(50); LCD_Write_REG(0x0037,0x0502); delay_ms(50); LCD_Write_REG(0x003A,0x0302); delay_ms(50); LCD_Write_REG(0x003B,0x0302); delay_ms(50); LCD_Write_REG(0x0023,0x0000); delay_ms(50); LCD_Write_REG(0x0024,0x0000); delay_ms(50); LCD_Write_REG(0x0025,0x8000); delay_ms(50); LCD_Write_REG(0x004f,0); LCD_Write_REG(0x004e,0); } }
void LCD_EnterDataMode() { CS_OFF; /* CS\ */ GPIO_Write(GPIOE,0x0022); WR_OFF; /* WR\ */ WR_ON; /* WR/ */
RS_ON; /* RS/ */ CS_ON; /* CS\ */ }
int main(void) { PORT_DATA_init(out); RS_ON; CS_ON; RD_ON; WR_ON;
RESET_ON; delay_ms(10); RESET_OFF; delay_ms(10); RESET_ON;
LCD_READ_index();
lcd_init();
LCD_EnterDataMode();
while(1) {
} }
_________________ Во имя пpоцесса-отца, пpоцесса-сына и святаго root'а... АМИHЬ!
|