ویرایش توسط sadmonew : 13-12-2012 در ساعت 14:25
_____________________________________
_____________________________________
سلام اقا صادق ممنون
در مورد اون دوستی که گفتن راهی برای تست باید بگم اول اتصال بین 3.3 تا گراند رو چک کن حدودا اگه پلاریته هارو درست وصل کرد باشید حدودا 320 اهم رو باید بگیری در ضمن با اتصال تغذیه بردت یا اس اس دیت داغ نمیکنه در مورد پینهای کنترلیتم ببین درست وصل شدن در مورد فیلیپس اطلاعاتی ندارم شاید نیاز به ریمپ کردن پایه های دیتات باشه اینم چک کن
سلام
اینم مثال برای lpc1768 و با همون برد nxp 255 تومنی سایت راه اندازی شده و درایور بردها
مهندسین عزیز من پروژه رو مرتب کردم گذاشتم اگه لطف کنین اشگالشو بگیرین ممنون میشم
برنامه باید صفحه سیاه وآبی وسبز رو روی lcd نمایش بده
باتشکر از همه دوستان
سلام مهندس پروژتون چنتا ایراد اصلی داره یکیش تابع gpio اینیت هستش که شما اصلا پایه های کنترلیت رو فال نکردی چرا هر سه تا پورت gpio رو با هم نوشتی باید جدا جدا فالشون کنید من مثال اماده براتون بالا که گزاشتم مهندس من همین الان پروژم برای ال سی دی 4.3 داره کار میکنه و مشکلی نداره برای rcc هم همینطور من هدر کاملشو براتون گزاشتم فقط بیاید اون پایه های خودتون رو توش تعریف کنید موضوع رو پیچوندین قسمت gpio تون مشکل داره
در ضمن تابع رایت کامندتون تاخیر لازم رو نداره اون کامنتای تاخیرشو بردار
مهندس دستتون درد نکنه
کامنت تاخیرو ورداشتم gpio هاش رو هم اونجوری که شما گفتی گذاشتم ولی .
یه سوال کوچولو برام پیش اومده (همین الان)
الان ssd1963 توی کدوم مد راه اندازی شده 6800 یا 8080چجوریه؟
چون من توی لیست قطعات رو که نگاه کردم دیدم مقاومت R1 یا همون config خودمون جلوش خط تیره هست ومقدار نداره برای همین فکر کردم optional هست و برای کاربرد های بعدیه و بهش هیچ توجهی نکردم (مونتاژش نکردم) الان هم که دیتاشیت ssd رونگاه کردم دیدم ماله set کزدن نوع راه اندازیه ssd هست(ولتاژ روی پین conf=0.)یعنی مد 6800.
ویرایش توسط kazem67sh : 14-12-2012 در ساعت 11:53
_____________________________________
_____________________________________
سلام به دوستان مهندس محمدی عزیز و مهندس رحیمی گل
آقا منم توی راه اندازی LCD به مشکل خوردم من میام اینجا کدهارو میزارم ببینید اشکال از کجاست؟
پایه های پورت B رو به این صورت وصل کردم
و پورت C مربوط به دیتاکد:PORTB0=SSD1963_datapin.0 PORTB1=SSD1963_datapin.1 PORTB2=SSD1963_datapin.2 PORTB3=SSD1963_datapin.3 PORTB4=SSD1963_datapin.4 PORTB5=SSD1963_datapin.5 PORTB6=SSD1963_datapin.6 PORTB7=SSD1963_datapin.7 PORTB8=SSD1963_datapin.8 PORTB9=SSD1963_datapin.9 PORTB10=SSD1963_datapin.10 PORTB11=SSD1963_datapin.11 PORTB12=SSD1963_datapin.12 PORTB13=SSD1963_datapin.13 PORTB14=SSD1963_datapin.14 PORTB15=SSD1963_datapin.15
کد:PORTC0=SSD1963_datapin.16 PORTC1=SSD1963_datapin.17 PORTC2=SSD1963_datapin.18 PORTC3=SSD1963_datapin.19 PORTC4=SSD1963_datapin.20 PORTC5=SSD1963_datapin.21 PORTC6=SSD1963_datapin.22 PORTC7=SSD1963_datapin.23دو خط اول مربوط به پین های بالا برای دیتاکد:PORTC8=SSD1963_ctrlpin.E/RD PORTC9=SSD1963_ctrlpin.WR PORTC10=SSD1963_ctrlpin.CS PORTC11=SSD1963_ctrlpin.D/C PORTC12=SSD1963_ctrlpin.TE PORTA1=SSD1963_ctrlpin.RESET
خط سوم هم برای پینهای کنترلی که از پین های 8 تا 12 (که 12 مربوط به TE هست که فعلا استفاده نمیشه )و پایه rst که به پین 1 پورت A وصله
برای پایه ریست درست عمل کردم توی کدها برای پورت A ؟
[PHP]
#define SSD1963_DATAPORT GPIOB
#define SSD1963_DATAPORT_1 GPIOC
#define SSD1963_CTRLPORT GPIOC
#define PIN_RD (1 << 8)
#define PIN_WR (1 << 9)
#define PIN_CS (1 << 10)
#define PIN_A0 (1 << 11) // D/C
#define PIN_RST (1 << 1)// Port A
[/PHP]
توی قسمت init
[PHP]
void SSD1963_Init (void)
{
volatile unsigned int dly;
GPIOA->BRR = PIN_RST;
for(dly = 0; dly < 1000; dly++);
GPIOA->BSRR = PIN_RST;
[/PHP]
[PHP]
void SSD1963_WriteData(unsigned long dataToWrite)
{
volatile unsigned int dly;
SSD1963_DATAPORT->ODR = (dataToWrite & 0x00FFFF); //GPIOB
SSD1963_DATAPORT_1->ODR = (dataToWrite & 0xFF0000)>>16; //GPIOC
[/PHP]
اینم مربوط به تنظیمات GPIO که از هدر آقای رحیمی استفاده شده
[PHP]
// tarife porthaie motasel shode be TFT LCD Controller SSD1963
// Porte dade // D0..............D15
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
// Porte dade // D16..............D23
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_P in_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
// Portehaye Controly U/D R/L RD WR CS DC TE{NOT USE}
GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPI O_Pin_12);
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
// RESET
GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_1);
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
[/PHP]
تا اینجا مشکلی وجود داره ؟
بله مهندس چرا وجود نداره پورت b مربوط به پایه های jtag هستش چنتا پایه رو باید ریمپ کنید منظورم کلا jtag رو مگر اینکه از یه پورت دیگه استفاده کنید
ببخشید مهندس یادم رفت این قسمت مربوط به remap رو بزارم اینجا
[PHP]
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);
[/PHP]
ویرایش توسط saeidhp : 15-12-2012 در ساعت 07:02
عملا الان دیگه باید جواب بده تابع اینیتتونم باید مقادیر درستی داشته باشه اونم بزارید بد نیست ولی در هر حال اگه جواب نگرفتید قسمت ریمپتون رو چک کنید تو اولین قدمم بیاید ال ای دی درایورتون رو چک کنید ببینید 26 ولت بدون ال سی دی دو سرش میافته
ممنون مهندس اینم تابع اینیت
[PHP]
void SSD1963_Init (void)
{
volatile unsigned int dly;
GPIOA->BRR = PIN_RST;
for(dly = 0; dly < 1000; dly++);
GPIOA->BSRR = PIN_RST;
for(dly = 0; dly < 1000; dly++);
SSD1963_WriteCommand(SSD1963_SOFT_RESET);
// REFclk = crystal = 10MHz
SSD1963_WriteCommand(SSD1963_SET_PLL_MN);
SSD1963_WriteData(0x1D); // PLLclk = REFclk * 30 (300MHz)
SSD1963_WriteData(0x02); // SYSclk = PLLclk / 3 (100MHz)
SSD1963_WriteData(0x54); // dummy
SSD1963_WriteCommand(SSD1963_SET_PLL);
SSD1963_WriteData(0x01);
for(dly = 0; dly < 100000; dly++);
SSD1963_WriteCommand(SSD1963_SET_PLL);
SSD1963_WriteData(0x03);
SSD1963_WriteCommand(0x01); // soft reset
//Set LSHIFT freq, i.e. the DCLK with PLL freq 120MHz set previously
//Typical DCLK for TY430TFT480272 is 9MHz
//9MHz = 100MHz*(LCDC_FPR+1)/2^20
//LCDC_FPR = 94370 (0x170A2)
SSD1963_WriteCommand(SSD1963_SET_LSHIFT_FREQ);
SSD1963_WriteData(0x01);
SSD1963_WriteData(0x70);
SSD1963_WriteData(0xA2);
//Set panel mode, varies from individual manufacturer
SSD1963_WriteCommand(SSD1963_SET_LCD_MODE);
SSD1963_WriteData(0x2C);//24-Bit //(0x0C); //18-Bit
SSD1963_WriteData(0x00);
SSD1963_WriteData((TFT_WIDTH-1)>>8);
SSD1963_WriteData((TFT_WIDTH-1) & 0xFF);
SSD1963_WriteData((TFT_HEIGHT-1)>>8);
SSD1963_WriteData((TFT_HEIGHT-1) & 0xFF);
SSD1963_WriteData(0x00);
//Set horizontal period
SSD1963_WriteCommand(SSD1963_SET_HORI_PERIOD);
SSD1963_WriteData((TFT_HSYNC_PERIOD-1)>>8);
SSD1963_WriteData((TFT_HSYNC_PERIOD-1) & 0xFF);
SSD1963_WriteData((TFT_HSYNC_PULSE + TFT_HSYNC_BACK_PORCH-1)>>8);
SSD1963_WriteData((TFT_HSYNC_PULSE + TFT_HSYNC_BACK_PORCH) & 0xFF);
SSD1963_WriteData(TFT_HSYNC_PULSE-1);
SSD1963_WriteData(0x00);
SSD1963_WriteData(0x00);
SSD1963_WriteData(0x00);
//Set vertical period
SSD1963_WriteCommand(SSD1963_SET_VERT_PERIOD);
SSD1963_WriteData((TFT_VSYNC_PERIOD-1)>>8);
SSD1963_WriteData((TFT_VSYNC_PERIOD-1) & 0xFF);
SSD1963_WriteData((TFT_VSYNC_PULSE + TFT_VSYNC_BACK_PORCH-1)>>8);
SSD1963_WriteData((TFT_VSYNC_PULSE + TFT_VSYNC_BACK_PORCH-1) & 0xFF);
SSD1963_WriteData(TFT_VSYNC_PULSE-1);
SSD1963_WriteData(0x00);
SSD1963_WriteData(0x00);
//Set pixel data interface
SSD1963_WriteCommand(SSD1963_SET_PIXEL_DATA_INTERF ACE);
SSD1963_WriteData(SSD1963_PDI_24BIT);
// set address mode
SSD1963_WriteCommand(SSD1963_SET_ADDRESS_MODE);
SSD1963_WriteData(0x45);
// setting PWM for LED backlight
SSD1963_WriteCommand(SSD1963_SET_PWM_CONF);
SSD1963_WriteData(0x0E);
SSD1963_WriteData(0xFF); // Set 0xFF for full and 0x00 for off
SSD1963_WriteData(0x01);
SSD1963_WriteData(0x00);
SSD1963_WriteData(0x00);
SSD1963_WriteData(0x00);
// GPIO0,1,2,3 is output
SSD1963_WriteCommand(SSD1963_SET_GPIO_CONF);
SSD1963_WriteData(0x0F);
SSD1963_WriteData(0x01);
// set GPIO0 , 1 , 2, 3 = 1
SSD1963_WriteCommand(SSD1963_SET_GPIO_VALUE);
SSD1963_WriteData(0x0F);
//SET display on
SSD1963_WriteCommand(SSD1963_SET_DISPLAY_ON);
// exit sleep mode
SSD1963_WriteCommand(SSD1963_EXIT_SLEEP_MODE);
}
[/PHP]
ممنون مهندس اینم تابع اینیت
[PHP]
void SSD1963_Init (void)
{
volatile unsigned int dly;
GPIOA->BRR = PIN_RST;
for(dly = 0; dly < 1000; dly++);
GPIOA->BSRR = PIN_RST;
for(dly = 0; dly < 1000; dly++);
SSD1963_WriteCommand(SSD1963_SOFT_RESET);
// REFclk = crystal = 10MHz
SSD1963_WriteCommand(SSD1963_SET_PLL_MN);
SSD1963_WriteData(0x1D); // PLLclk = REFclk * 30 (300MHz)
SSD1963_WriteData(0x02); // SYSclk = PLLclk / 3 (100MHz)
SSD1963_WriteData(0x54); // dummy
SSD1963_WriteCommand(SSD1963_SET_PLL);
SSD1963_WriteData(0x01);
for(dly = 0; dly < 100000; dly++);
SSD1963_WriteCommand(SSD1963_SET_PLL);
SSD1963_WriteData(0x03);
SSD1963_WriteCommand(0x01); // soft reset
//Set LSHIFT freq, i.e. the DCLK with PLL freq 120MHz set previously
//Typical DCLK for TY430TFT480272 is 9MHz
//9MHz = 100MHz*(LCDC_FPR+1)/2^20
//LCDC_FPR = 94370 (0x170A2)
SSD1963_WriteCommand(SSD1963_SET_LSHIFT_FREQ);
SSD1963_WriteData(0x01);
SSD1963_WriteData(0x70);
SSD1963_WriteData(0xA2);
//Set panel mode, varies from individual manufacturer
SSD1963_WriteCommand(SSD1963_SET_LCD_MODE);
SSD1963_WriteData(0x2C);//24-Bit //(0x0C); //18-Bit
SSD1963_WriteData(0x00);
SSD1963_WriteData((TFT_WIDTH-1)>>8);
SSD1963_WriteData((TFT_WIDTH-1) & 0xFF);
SSD1963_WriteData((TFT_HEIGHT-1)>>8);
SSD1963_WriteData((TFT_HEIGHT-1) & 0xFF);
SSD1963_WriteData(0x00);
//Set horizontal period
SSD1963_WriteCommand(SSD1963_SET_HORI_PERIOD);
SSD1963_WriteData((TFT_HSYNC_PERIOD-1)>>8);
SSD1963_WriteData((TFT_HSYNC_PERIOD-1) & 0xFF);
SSD1963_WriteData((TFT_HSYNC_PULSE + TFT_HSYNC_BACK_PORCH-1)>>8);
SSD1963_WriteData((TFT_HSYNC_PULSE + TFT_HSYNC_BACK_PORCH) & 0xFF);
SSD1963_WriteData(TFT_HSYNC_PULSE-1);
SSD1963_WriteData(0x00);
SSD1963_WriteData(0x00);
SSD1963_WriteData(0x00);
//Set vertical period
SSD1963_WriteCommand(SSD1963_SET_VERT_PERIOD);
SSD1963_WriteData((TFT_VSYNC_PERIOD-1)>>8);
SSD1963_WriteData((TFT_VSYNC_PERIOD-1) & 0xFF);
SSD1963_WriteData((TFT_VSYNC_PULSE + TFT_VSYNC_BACK_PORCH-1)>>8);
SSD1963_WriteData((TFT_VSYNC_PULSE + TFT_VSYNC_BACK_PORCH-1) & 0xFF);
SSD1963_WriteData(TFT_VSYNC_PULSE-1);
SSD1963_WriteData(0x00);
SSD1963_WriteData(0x00);
//Set pixel data interface
SSD1963_WriteCommand(SSD1963_SET_PIXEL_DATA_INTERF ACE);
SSD1963_WriteData(SSD1963_PDI_24BIT);
// set address mode
SSD1963_WriteCommand(SSD1963_SET_ADDRESS_MODE);
SSD1963_WriteData(0x45);
// setting PWM for LED backlight
SSD1963_WriteCommand(SSD1963_SET_PWM_CONF);
SSD1963_WriteData(0x0E);
SSD1963_WriteData(0xFF); // Set 0xFF for full and 0x00 for off
SSD1963_WriteData(0x01);
SSD1963_WriteData(0x00);
SSD1963_WriteData(0x00);
SSD1963_WriteData(0x00);
// GPIO0,1,2,3 is output
SSD1963_WriteCommand(SSD1963_SET_GPIO_CONF);
SSD1963_WriteData(0x0F);
SSD1963_WriteData(0x01);
// set GPIO0 , 1 , 2, 3 = 1
SSD1963_WriteCommand(SSD1963_SET_GPIO_VALUE);
SSD1963_WriteData(0x0F);
//SET display on
SSD1963_WriteCommand(SSD1963_SET_DISPLAY_ON);
// exit sleep mode
SSD1963_WriteCommand(SSD1963_EXIT_SLEEP_MODE);
}
[/PHP]
فکر میکنم مشکلی نداشته باشه دیگه اگر به مشکل خوردی این تغییرات رو بده
[PHP]
// set address mode
SSD1963_WriteCommand(SSD1963_SET_ADDRESS_MODE);
SSD1963_WriteData(0x0000);[/PHP]
البته مهندس بعد از اجرای سافتور ریست یه تاخیری تو برنامت بده که اس اس دیت کامل اماده باشه خیلی این مهمه[PHP] SSD1963_WriteCommand(SSD1963_SOFT_RESET); // soft reset
delay_ms(10);[/PHP]
سلام دوستان
بالاخره موفق شدم TFT4.3 را با میکرو LPC1768 راه اندازی کنم. دوستانی که با میکروهای NXP کار می کنند اگه مشکلی داشتند بنده در خدمتم.
آیا کسی از دوستان فونت بزرگتر از آنچه در هدر فایل موجود هست برای نمایش Text نوشته ؟
_____________________________________
_____________________________________
سلام دوستان
lcd 7 هم راه افتاد اما تصویر لرزش داره. کسی با این مشکل مواجه شده ؟