总结教训:stm32f4-Discovery驱动三星s6d1121液晶程序

博主在尝试将51单片机上的S6D1121液晶驱动程序移植到STM32F4Discovery板上时遇到白屏问题。经过反复排查和查阅资料,发现关键在于STM32的8/16位接口设置。原来模块默认为8位模式,但程序按照16位配置,导致显示异常。修复接口设置后,液晶正常工作。总结经验:详细阅读文档至关重要。
摘要由CSDN通过智能技术生成

搞了几天!最后总结一句!看文档不仔细,就是坑爹!是严重坑爹!

 

刚开始,这块液晶,我拿stc12c5a60s2来驱动,能点亮!

然后把51上的驱动,移植到F4里。到F4下测,死活都是白屏,刚开始以为是接错线了。。反复来核对接线!(接线是痛苦的,5555555哭说多了都是泪!)

反正这两天,都在跟这些线和lcd驱动较真。。死活找不到问题出在哪!(想摔了这屏啊,很冲动的啊!有木有啊!大哭

国内国外的论坛啊,各种找资料啊!倒是看到一篇f103驱动s6d1121的驱动文章,拿着f103的驱动移植到f4里。。还是木有成功!(更想摔了,有木有!)

 

无奈了,重新看卖家给的资料。无意中看到了一句话〉〉〉

模块用户通过PCB背面的j3焊盘设置8/16位接口, 短接j3焊盘模块工作在16位模式,不短接工作在8位模式!

 

拿着液晶看j3,居然不短接!瞬间明白了!于是拿焊锡把焊盘点上。再烧程序!O了!

==========================================================================================================================

在回头看看51的环境。拿51测的时候,我都是把16个I/O口全接上。因为看程序,以为默认就是16位的!也就没注意。

#ifdef  Bus_16    //条件编译-16位数据模式   
void LCD_Writ_Bus(char VH,char VL)   //并行数据写入函数
{
    LCD_DataPortH=VH;	
	LCD_DataPortL=VL;		
	LCD_WR=0;
	LCD_WR=1; 
}
#else			//条件编译-8位数据模式 
void LCD_Writ_Bus(char VH,char VL)   //并行数据写入函数
{	
    LCD_DataPortH=VH;	
   	LCD_WR=0;
	LCD_WR=1;
	LCD_DataPortH=VL;		
	LCD_WR=0;
	LCD_WR=1;
}
#endif


现在回头看,我擦。没#define Bus_16..这不是坑爹坑到家了吗?

说多了都是泪啊!泪啊!啊!啊!啊!,总之以后看文档看数据手册要仔细啊!

-------------------------------------------------------------------------------------

硬件接线:

PD4    -----FSMC_NOE   ----RD
PD5    -----FSMC_NWE  ----WR
PD7    -----FSMC_NE1   ----CS
PD11  -----FSMC_A16    ----RS

PB5(或3V的引脚)-------------LCD_A

 

以下为LCD的驱动程序:

#include "lcd.h"

#define LCD_RAM   *(vu16*)((u32)0x60020000)  //disp Data ADDR
#define LCD_REG   *(vu16*)((u32)0x60000000)	 //disp Reg  ADDR

static sFONT *LCD_Currentfonts;
sFONT Font16x24;

static __IO uint16_t TextColor = 0x0000, BackColor = 0xFFFF;
/**************************************************************************************************************
 * 函数名:GPIO_AF_FSMC_Config()
 * 输入  :void
 * 输出  :void
 * 描述  :配置LCD连接的GPIO复用连接到FSMC
 * 调用  :内部调用        
 *****************************************************************************************************************/
static void GPIO_AF_FSMC_Config(void)
{
  /*配置GPIOD相应的管脚复用连接到FSMC*/
  GPIO_PinAFConfig(GPIOD,GPIO_PinSource0,GPIO_AF_FSMC);	    		//配置GPIOD的Pin0复用连接到FSMC
  GPIO_PinAFConfig(GPIOD,GPIO_PinSource1,GPIO_AF_FSMC);			//配置GPIOD的Pin1复用连接到FSMC
  GPIO_PinAFConfig(GPIOD,GPIO_PinSource4,GPIO_AF_FSMC);			//配置GPIOD的Pin4复用连接到FSMC
  GPIO_PinAFConfig(GPIOD,GPIO_PinSource5,GPIO_AF_FSMC);			//配置GPIOD的Pin5复用连接到FSMC
  GPIO_PinAFConfig(GPIOD,GPIO_PinSource7,GPIO_AF_FSMC);			//配置GPIOD的Pin7复用连接到FSMC
  GPIO_PinAFConfig(GPIOD,GPIO_PinSource8,GPIO_AF_FSMC);			//配置GPIOD的Pin8
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值