stm32 fsmc lcd调试.docx

上传人:b****4 文档编号:4166731 上传时间:2022-11-28 格式:DOCX 页数:12 大小:94.61KB
下载 相关 举报
stm32 fsmc lcd调试.docx_第1页
第1页 / 共12页
stm32 fsmc lcd调试.docx_第2页
第2页 / 共12页
stm32 fsmc lcd调试.docx_第3页
第3页 / 共12页
stm32 fsmc lcd调试.docx_第4页
第4页 / 共12页
stm32 fsmc lcd调试.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

stm32 fsmc lcd调试.docx

《stm32 fsmc lcd调试.docx》由会员分享,可在线阅读,更多相关《stm32 fsmc lcd调试.docx(12页珍藏版)》请在冰豆网上搜索。

stm32 fsmc lcd调试.docx

stm32fsmclcd调试

stm32fsmclcd调试

2010年05月09日星期日03:

45P.M.

STM32103F/lk

lcd型号

:

ZYMG12864C3

注:

学习的时候如果觉得配置好了操作无效多注意外围设备的时钟配置如:

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC,ENABLE;//

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOF|RCC_APB2Periph_GPIOG|RCC_APB2Periph_AFIO,ENABLE;

这里的RCC_APB2Periph_AFIO,ENABLE很容易忘记

关于FSMC

开始看了点手册和别人的应用笔记大概把自己理解的记录下

把FSMC与外围设备连接配置好后就等于FSMC对于使用者屏蔽了对外围设备的具体操作只要向对应类型的映射地址空间内写入数据这些数据+地址就会自动被翻译(需设置相应时序的地址数据建立保持时间等参数并写入外围存储设备

在FSMC的角度来看外围连接的存储设备被分为ROM\SRAM\NOR-NANDFlash-PCCard等几种类型

它们被对应为FSMC内4个存储块分别为

64*4mb(ROM\SRAM\NOR(60000000h-6fffffffh,(这一块又分为4部分每一部分有片选信号NE[1:

4]

可以连接4片本类型设备使用

256mb(NANDFlash1(70000000h-7fffffffh,

256mb(NANDFlash2(80000000h-8fffffffh,

256mb(PCCard(90000000h-9fffffffh

例如下面程序中要使用的宏定义

#defineLCD_Command*(*(volatileu80x6c000000

#defineLCD_Data*(*(volatileu80x6c000001(LCD数据宽度为8BIT

当数据写入LCD_Command对应的地址时地址和数据会分别被发送到对应的AFIO复用端口将AFIO的A0接至LCD的C/D(Command/data脚就自动切换了命令和数据

LCD_Command=0x55;A0=0;对应地址低位0x6c000000

LCD_Data=0x55;A0=1;对应地址低位0x6c000001

此开发板LCD与MCU的引脚对应关系为:

D0---->PD14D4---->PE7A0------>PF00

D1---->PD15D5---->

PE8FSMC_NE4------>PG12

D2---->PD0D6---->

PE9FSMC_NWE------->PD5

D3---->PD1D7---->

PE10FSMC_NOE------->PD4

本例中所有引脚配置为AFIO

程序如下:

对于FSMC的工作模式时序配置可以看手册的18章

/****************************************************************************************************************

Funtion:

fsmc

para----|input:

null

|output:

null

data:

2010/5/9

ver:

0.1

modify:

null

author:

x

****************************************************************************************************************/

voidLCD_FSMCConfig(void

{

#ifndefNO_LCD

FSMC_NORSRAMInitTypeDefFSMC_NORSRAMInitStructure;

FSMC_NORSRAMTimingInitTypeDefp;

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC,ENABLE;

/*--FSMCConfiguration

------------------------------------------------------*/

/*-----------------------SRAMBank4

----------------------------------------*/

/*FSMC_Bank1_NORSRAM4configuration*/

p.FSMC_AddressSetupTime=1;

p.FSMC_AddressHoldTime=1;

p.FSMC_DataSetupTime=20;

p.FSMC_BusTurnAroundDuration=0;

p.FSMC_CLKDivision=0;

p.FSMC_DataLatency=1;

p.FSMC_AccessMode=FSMC_AccessMode_A;

/*ColorLCDconfiguration------------------------------------LCDconfiguredasfollow:

-Data/AddressMUX=Disable

-MemoryType=SRAM

-DataWidth=16bit

-WriteOperation=Enable

-ExtendedMode=Enable

-AsynchronousWait=Disable*/

FSMC_NORSRAMInitStructure.FSMC_Bank=FSMC_Bank1_NORSRAM4;

FSMC_NORSRAMInitStructure.FSMC_DataAddressMux=

FSMC_DataAddressMux_Disable;

FSMC_NORSRAMInitStructure.FSMC_MemoryType=FSMC_MemoryType_SRAM;FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth=

FSMC_MemoryDataWidth_8b;

FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode=

FSMC_BurstAccessMode_Disable;

FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity=

FSMC_WaitSignalPolarity_Low;

FSMC_NORSRAMInitStructure.FSMC_WrapMode=FSMC_WrapMode_Disable;FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive=

FSMC_WaitSignalActive_BeforeWaitState;

FSMC_NORSRAMInitStructure.FSMC_WriteOperation=

FSMC_WriteOperation_Enable;

FSMC_NORSRAMInitStructure.FSMC_WaitSignal=

FSMC_WaitSignal_Disable;

FSMC_NORSRAMInitStructure.FSMC_ExtendedMode=

FSMC_ExtendedMode_Disable;

FSMC_NORSRAMInitStructure.FSMC_WriteBurst=

FSMC_WriteBurst_Disable;

FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct=&p;

FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct=&p;

FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure;

/*BANK4(ofNOR/SRAMBank1~4isenabled*/

FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM4,ENABLE;

#endif

}

/*******************************************************************************

*FunctionName:

STM3210E_LCD_Init

*Description:

InitializestheLCD.

*Input:

None

*Output:

None

*Return:

None

*******************************************************************************/

voidSTM3210E_LCD_Init(void

{

#ifndefNO_LCD

/*ConfiguretheLCDControlpins

--------------------------------------------*/

LCD_IOConfig(;

/*ConfiguretheFSMCParallelinterface

-------------------------------------*/

LCD_FSMCConfig(;

LCD_Command=Display_Off;//

delay(;

LCD_Command=LCD_Reset;//

reset_delay(;

LCD_Command=Set_LCD_Bias_9;

delay(;

LCD_Command=Set_ADC_Normal;

delay(;

LCD_Command=COM_Scan_Dir_Reverse;

delay(;

LCD_Command=Set_Start_Line_X|0x0;

delay(;

LCD_Command=0x2c;

power_delay(;//50msrequried

LCD_Command=0x2e;

power_delay(;//50ms

LCD_Command=0x2f;

power_delay(;//50ms

LCD_Command=Set_Ref_Vol_Reg|0x05;

delay(;

LCD_Command=Set_Ref_Vol_Mode;

delay(;

LCD_Command=Set_Ref_Vol_Reg;

delay(;

LCD_Clear(;

delay(;

LCD_Command=Set_Page_Addr_X|0x0;

delay(;

LCD_Command=Set_ColH_Addr_X|0x0;

delay(;

LCD_Command=Set_ColL_Addr_X|0x0;

delay(;

LCD_Command=Display_On;//

delay(;

#endif

}

/*********************************************************************************************************************/

voidLCD_IOConfig(void

{

*/

/*补充:

复位后LCD模式如下:

Pageaddress:

0

Columnaddress:

0

Modify-read:

OFF

DisplayON/OFF:

OFF

Initialdisplayline:

0(first

InitialCOM0register:

0(COM0

Partialdisplaydutyratio:

1/64

Iconenable/disable:

0(disable

ReversedisplayON/OFF:

OFF(normal

n-lineinversionregister:

0(disable

EntiredisplayON/OFF:

OFF(normal

Powercontrolregister(VC,VR,VF=(0,0,0

DC-DCstepup:

3timesconvertercircuit=(0,0

Regulatorresistorselectregister:

(R2,R1,R0=(0,0,0

Referencevoltagecontrolregister:

(EV5,EV4,EV3,EV2,EV1,EV0=(1,0,0,0,0,0

LCDbiasratio:

1/9

SHLselect:

OFF(normal

ADCselect:

OFF(normal

Oscillatorstatus:

OFF

Powersavemode:

release

#ifndefNO_LCD

GPIO_InitTypeDefGPIO_InitStructure;

GPIO_DeInit(GPIOD;

/*SetPD.00(D2,PD.01(D3,PD.04(NOE,PD.05(NWE,PD.14(D0,PD.15(D1asalternate

functionpushpull*/

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_4|GPIO_Pin_5|

GPIO_Pin_14|GPIO_Pin_15;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;

GPIO_Init(GPIOD,&GPIO_InitStructure;

GPIO_DeInit(GPIOE;

/*SetPE.07(D4,PE.08(D5,PE.09(D6,PE.10(D7asalternatefunctionpushpull*/

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10;

GPIO_Init(GPIOE,&GPIO_InitStructure;

//GPIO_DeInit(GPIOF;

/*SetPF.00(A0(RSasalternatefunctionpushpull*/

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;

GPIO_Init(GPIOF,&GPIO_InitStructure;

GPIO_DeInit(GPIOG;

/*SetPG.12(NE4(LCD/CSasalternatefunctionpushpull-CE3(LCD/CS*/

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12;

GPIO_Init(GPIOG,&GPIO_InitStructure;

#endif

}

/*********************************************************************************************************************/

#ifdef__CC_ARM

__asmvoidwait(

{

nop

BXlr

#endif

voiddelay(void;

voiddelay(

{

vu8i=0x8;

while(i--

#ifdef__CC_ARM

wait(;

#else

asm("nop";

#endif

}

#ifndefNO_LCD

voidreset_delay(void;voidreset_delay({

vu32i=0xff;

while(i--

#ifdef__CC_ARM

wait(;

#else

asm("nop";

#endif

}

voidpower_delay(void;voidpower_delay({

vu32i=0x4ffff;

while(i--

#ifdef__CC_ARM

wait(;

#else

asm("nop";

#endif

}

#endif

/*********************************************************************************************************************/

/*******************************************************************************

*FunctionName:

LCD_Draw_ST_Logo

*Description:

drawaSTlogo

*Input:

None

*Output:

None

*Return:

0--failure

1--success

*******************************************************************************/

voidLCD_Draw_ST_Logo(

{

#ifndefNO_LCD

u8i,j;

u8*p=DispSTLoGoTable;

LCD_Command=COM_Scan_Dir_Reverse;

LCD_Command=Set_Start_Line_X|0x0;

delay(;

for(i=0;i<8;i++

{

//foreachpage

LCD_Command=Set_Page_Addr_X|i;//pageno.

delay(;

LCD_Command=Set_ColH_Addr_X|0x0;//fixedcolfirstaddrdelay(;

LCD_Command=Set_ColL_Addr_X|0x0;

delay(;

j=128;

while(j--

{

LCD_Data=*p++;

delay(;

}

}

#endif

}

/*********************************************************************************************************************/

ST的LOGO

u8DispSTLoGoTable[]={

/*page0*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xC0,0xE0,0xF0,0xF8,0xF8,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0x7C,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*page1*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFC,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x7F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x0F,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*page2*/

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x1F,0x3F,0x7F,0xFF,0xFF

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1