stm32 fsmc lcd调试
2010年 05月 09日 星期日 03:45 P.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 - NAND Flash - PC Card等几种类型
它们被对应为 FSMC 内 4个存储块 分别为
64*4mb(ROM\\SRAM\\NOR (6000 0000h - 6fff ffffh, (这一块又分为 4部分 每 一部分有片选信号 NE[1: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 u8 0x6c00 0001 (LCD数据宽 度为 8BIT 当数据写入 LCD_Command对应的地址时 地址和数据会分别被发送到对应的 AFIO 复用端口 将 AFIO 的 A0接至 LCD 的 C/D(Command/data脚 就自动切换了命 令和数据
LCD_Command = 0x55; A0 = 0; 对应地址低位 0x6c00 0000
LCD_Data = 0x55; A0 = 1; 对应地址低位 0x6c00 0001 此开发板 LCD 与 MCU 的引脚对应关系为 : D0 ----> PD14 D4----> PE7 A0 ------>PF00 D1 ----> PD15 D5 ----> PE8 FSMC_NE4------>PG12 D2 ----> PD0 D6 ----> PE9 FSMC_NWE------->PD5 D3 ----> PD1 D7 ----> PE10 FSMC_NOE------->PD4 本例中所有引脚配置为 AFIO
程序如下 : 对于 FSMC 的工作模式时序配置可以看手册的 18章
/******************************************************************** ********************************************
Funtion : fsmc para ----|input : null |output: null data : 2010/5/9 ver : 0.1 modify : null
author : x
********************************************************************* *******************************************/
void LCD_FSMCConfig(void {
#ifndef NO_LCD
FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure; FSMC_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;
相关推荐: