1、stm32 fsmc lcd调试stm32 fsmc lcd调试2010年 05月 09日 星期日 03:45 P.M.STM32103F/lklcd 型号 :ZYMG12864C3注 :学习的时候如果觉得配置好了操作无效 多注意外围设备的时钟配置 如 : RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE; /RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE | RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOG | RCC_A
2、PB2Periph_AFIO, ENABLE;这里的 RCC_APB2Periph_AFIO, ENABLE 很容易忘记关于 FSMC开始看了点手册和别人的应用笔记大概把自己理解的记录下把 FSMC 与外围设备连接配置好后 就等于 FSMC 对于使用者屏蔽了对外围设备的 具体操作 只要向对应类型的映射地址空间内写入数据 这些数据 +地址就会自动 被翻译 (需设置相应时序的地址数据建立保持时间等参数 并写入外围存储设备在 FSMC 的角度来看 外围连接的存储设备被分为 ROMSRAMNOR - NAND Flash - PC Card等几种类型它们被对应为 FSMC 内 4个存储块 分别为64*
3、4mb(ROMSRAMNOR (6000 0000h - 6fff ffffh, (这一块又分为 4部分 每 一部分有片选信号 NE1:4可以连接 4片本类型设备使用 256mb(NAND Flash 1(7000 0000h - 7fff ffffh,256mb(NAND Flash 2(8000 0000h - 8fff ffffh ,256mb(PC Card(9000 0000h - 9fff ffffh例如下面程序中要使用的宏定义#define LCD_Command *(*(volatile u8 0x6c00 0000#define LCD_Data *(*(volatile u
4、8 0x6c00 0001 (LCD数据宽 度为 8BIT当数据写入 LCD_Command对应的地址时 地址和数据会分别被发送到对应的 AFIO 复用端口 将 AFIO 的 A0接至 LCD 的 C/D(Command/data脚 就自动切换了命 令和数据LCD_Command = 0x55; A0 = 0; 对应地址低位 0x6c00 0000LCD_Data = 0x55; A0 = 1; 对应地址低位 0x6c00 0001此开发板 LCD 与 MCU 的引脚对应关系为 :D0 - PD14 D4- PE7 A0 -PF00D1 - PD15 D5 -PE8 FSMC_NE4-PG12
5、D2 - PD0 D6 -PE9 FSMC_NWE-PD5D3 - PD1 D7 -PE10 FSMC_NOE-PD4本例中所有引脚配置为 AFIO程序如下 : 对于 FSMC 的工作模式时序配置可以看手册的 18章/* *Funtion : fsmcpara -|input : null|output: nulldata : 2010/5/9ver : 0.1modify : nullauthor : x* */void LCD_FSMCConfig(void#ifndef NO_LCDFSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure;FSM
6、C_NORSRAMTimingInitTypeDef p;RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC , ENABLE;/*- FSMC Configuration-*/*- SRAM Bank 4-*/* FSMC_Bank1_NORSRAM4 configuration */p.FSMC_AddressSetupTime = 1;p.FSMC_AddressHoldTime = 1;p.FSMC_DataSetupTime = 20;p.FSMC_BusTurnAroundDuration = 0;p.FSMC_CLKDivision = 0;p.FS
7、MC_DataLatency = 1;p.FSMC_AccessMode = FSMC_AccessMode_A;/* Color LCD configuration - LCD configured as follow:- Data/Address MUX = Disable- Memory Type = SRAM- Data Width = 16bit- Write Operation = Enable- Extended Mode = Enable- Asynchronous Wait = Disable */FSMC_NORSRAMInitStructure.FSMC_Bank = F
8、SMC_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
9、_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_WriteOpe
10、ration_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_NORSRAMInitStructu
11、re.FSMC_WriteTimingStruct = &p;FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure;/* BANK 4 (of NOR/SRAM Bank 14 is enabled */FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM4, ENABLE;#endif/* * Function Name : STM3210E_LCD_Init* Description : Initializes the LCD.* Input : None* Output : None* Return : None* */void STM3
12、210E_LCD_Init(void#ifndef NO_LCD/* Configure the LCD Control pins-*/LCD_IOConfig(;/* Configure the FSMC Parallel interface-*/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 =
13、 COM_Scan_Dir_Reverse;delay(;LCD_Command = Set_Start_Line_X|0x0;delay(;LCD_Command = 0x2c;power_delay(; / 50ms requriedLCD_Command = 0x2e;power_delay(; / 50msLCD_Command = 0x2f;power_delay(; / 50msLCD_Command = Set_Ref_Vol_Reg|0x05;delay(;LCD_Command = Set_Ref_Vol_Mode;delay(;LCD_Command = Set_Ref_V
14、ol_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/* */void LCD_IOConfig(void*/*补充:复位后 LCD 模式如下:Page address: 0Column address: 0Modify-read: OFFDisplay ON
15、/ OFF: OFFInitial display line: 0 (firstInitial COM0 register: 0 (COM0Partial display duty ratio: 1/64Icon enable/disable : 0 (disableReverse display ON / OFF: OFF (normaln-line inversion register: 0 (disableEntire display ON / OFF: OFF (normalPower control register (VC, VR, VF = (0, 0, 0DC-DC step
16、up: 3 times converter circuit = (0, 0Regulator resistor select register: (R2, R1, R0 = (0, 0, 0Reference voltage control register: (EV5, EV4, EV3, EV2, EV1, EV0 = (1, 0, 0, 0, 0, 0LCD bias ratio: 1/9SHL select: OFF (normalADC select: OFF (normalOscillator status: OFFPower save mode: release#ifndef N
17、O_LCDGPIO_InitTypeDef GPIO_InitStructure;GPIO_DeInit(GPIOD;/* Set PD.00(D2, PD.01(D3, PD.04(NOE, PD.05(NWE, PD.14(D0, PD.15(D1 as alternatefunction push pull */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 = G
18、PIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_Init(GPIOD, &GPIO_InitStructure;GPIO_DeInit(GPIOE;/* Set PE.07(D4, PE.08(D5, PE.09(D6, PE.10(D7 as alternate function push pull */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 ;GPIO_Init(GPIOE, &GP
19、IO_InitStructure;/GPIO_DeInit(GPIOF;/* Set PF.00(A0 (RS as alternate function push pull */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_Init(GPIOF, &GPIO_InitStructure;GPIO_DeInit(GPIOG;/* Set PG.12(NE4 (LCD/CS as alternate function push pull - CE3(LCD /CS */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12
20、;GPIO_Init(GPIOG, &GPIO_InitStructure;#endif/* */#ifdef _CC_ARM_asm void wait(nopBX lr#endifvoid delay(void;void delay(vu8 i=0x8;while(i-#ifdef _CC_ARMwait(;#elseasm(nop;#endif#ifndef NO_LCDvoid reset_delay(void; void reset_delay( vu32 i=0xff;while(i-#ifdef _CC_ARMwait(;#elseasm(nop;#endifvoid power
21、_delay(void; void power_delay( vu32 i=0x4ffff;while(i-#ifdef _CC_ARMwait(;#elseasm(nop;#endif#endif/* */* * Function Name : LCD_Draw_ST_Logo* Description : draw a ST logo* Input : None* Output : None* Return : 0 - failure1 - success* */void LCD_Draw_ST_Logo(#ifndef NO_LCDu8 i,j;u8 *p=DispSTLoGoTable
22、;LCD_Command = COM_Scan_Dir_Reverse;LCD_Command = Set_Start_Line_X|0x0;delay(;for (i=0; i8; i+/ for each pageLCD_Command = Set_Page_Addr_X|i; / page no.delay(;LCD_Command = Set_ColH_Addr_X|0x0; / fixed col first addr delay(;LCD_Command = Set_ColL_Addr_X|0x0;delay(;j=128;while (j-LCD_Data=*p+;delay(;
23、#endif/* */ST 的 LOGOu8 DispSTLoGoTable = /*page 0*/ 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, 0x
24、FC,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,0
25、xFC,0xFC,0xFC ,0xFC,0xFC, 0xFC,0xFC,0x7C,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,/*page 1*/ 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,0x3
26、F,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 ,0
27、x3F,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,/*page 2*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00, 0x00,0x00,0x07,0x1F,0x3F,0x7F,0xFF,0xFF
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1