版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1、FSMC初初了解:FSMC 包括4个模块:(1)AHB接口(包括FSMC配置寄存器)(2)NOR闪存和PSRAM控制器(驱动LCD的时候LCD就好像一个PSRAM的里面只有2个16位的存储空间,一个是DATA RAM 一个是CMD RAM)(3)NAND闪存和PC卡控制器(4)外部设备接口我们驱动TFT很明显用的是第二个模块:NOR闪存。 2、FSMC的外设地址选择FSMC _Bank 用来选择外接存储器的地址,FSMC所控制的外存储器所映射的地址是0x6000 0000 0x9fff ffff其中属于NOR FLASH 的是0x6000 0000 0x6ff
2、f ffff ,然后这部分的地址空间又被分为四份,每份64MB, 编号是BANK1 BANK 4 ,每个BANK 都有一个片选引脚。而这四个分存储块的片选,则使用NE4:1来选择。数据线/地址线/控制线是共享的。NE1 ->Bank1 NE2->Bank2 NE3->Bank3 NE4->Bank4 第一块:6000 0000h-63ff ffffh 第二块:6400 0000h-67ff ffffh 第三块:6800 0000h-6bff ffffh
3、 第四块:6c00 0000h-6fff ffffh 3、FSMC 驱动LCD FSMC提供了所有的LCD控制器的信号:FSMC_D16:0:16bit的数据总线FSMC NEx:分配给NOR的256M,再分为4个区,每个区用来分配一个外设,这四个外设的片选分为是NE1-NE4,对应的引脚为:PD7NE1,PG9NE2,PG10-NE3,PG12NE4FSMC NOE:输出使能,连接LCD的RD脚。FSMC NWE:写使能,连接LCD的RW脚。FSMC Ax:用在LCD显示RAM和寄存器之间进行选择的地址线,即该线用于选择LCD的RS脚,该线可用地址线的
4、任意一根线,范围:FSMC_A25:0。正如我们操作12864的命令/数据选择端口RS一样,对于FSMC驱动TFT :RS = 0时,表示读写寄存器;RS = 1表示读写数据RAM。 4、GPIO端口配置由于是使用FSMC来驱动TFT的,所以除了背光用的PD13和复位用的PC1要设置为通用推挽输出之外,其他引脚都必须设置为复用推挽输出。然而,很奇怪的是。当我配置好PD13时,我发现程序下载进去后是一片漆黑的,后来再三检查是背光的PD13的问题。必须把PD13置高才可以亮,否则默认低电平,就是一片黑了。 5、 具体程序/* Function Name :
5、 Lcd_Configuration* Description : Configures LCD Control lines* Input : None* Output : None* Return : None* Attention : None*/static void LCD_Configuration(void)GPIO_InitTypeDef GPIO_InitStru
6、cture; /* Enable GPIOD and GPIOE clocks */RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE, ENABLE); /* PE.00(D0), PE.01(D1), PE.02(D2), PE.03(D3), PE.04(D4), PE.05(D5), PE.06(D6), PE.07(D7), PE.08(D8)
7、PE.09(D9), PE.10(D10), PE.11(D11), PE.12(D12), PE.13(D13), PE.14(D14), PE.15(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(GPIOE, &GPIO_InitStructure); /* PD.13(RS), PD.14(W
8、R), PD.15(RD) */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOD, &GPIO_InitStructure); /* PD.12(CS)*/GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;GPIO_InitStructur
9、e.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOD, &GPIO_InitStructure); /* Function Name : LCD_WriteReg* Description : LCD控制器寄存器地址* Input : - index: 寄存器地址* Output
10、: None* Return : None* Attention : None*/_inline void LCD_WriteIndex(uint16_t index)Clr_Rs;Set_nRd; GPIOE->ODR = index; /* GPIO_Write(GPIOE,index); */ Clr_nWr;Set_nWr; /* Function Name : LCD_WriteReg* Description : LCD寄存器数据
11、* Input : - index: 寄存器数据* Output : None* Return : None* Attention : None*/_inline void LCD_WriteData(uint16_t data)Set_Rs; GPIOE->ODR = data; /* GPIO_Write(GPIOE,data); */ Clr_nWr;Set_n
12、Wr; /* Function Name : LCD_ReadData* Description : 读取控制器数据* Input : None* Output : None* Return : 返回读取到的数据* Attention : None*/_inline uint16_t LCD_ReadData(void) uint16_t valu
13、e; Set_Rs;Set_nWr;Clr_nRd; GPIOE->CRH = 0x44444444;GPIOE->CRL = 0x44444444; value = GPIOE->IDR; value = GPIOE->IDR; GPIOE->CRH = 0x33333333; GPIOE->CRL = 0x33333333; Set_nRd;
14、160; return value; _inline void LCD_WriteReg(uint16_t LCD_Reg,uint16_t LCD_RegValue) /* Write 16-bit Index, then Write Reg */ Clr_Cs;LCD_WriteIndex(LCD_Reg); /* Write 16-bit Reg */LCD_WriteData(LCD_RegValue); Set_Cs; _inli
15、ne uint16_t LCD_ReadReg(uint16_t LCD_Reg)uint16_t LCD_RAM; /* Write 16-bit Index (then Read Reg) */Clr_Cs;LCD_WriteIndex(LCD_Reg);/* Read 16-bit Reg */LCD_RAM = LCD_ReadData(); Set_Cs;return LCD_RAM; static void LCD_SetCursor( uint16_t Xpos, uint16_t Ypos )
16、 #if ( DISP_ORIENTATION = 90 ) | ( DISP_ORIENTATION = 270 ) uint16_t temp = Xpos; Xpos = Ypos;Ypos = ( MAX_X - 1 ) - temp; #elif ( DISP_ORIENTATION = 0 ) | ( DISP_ORIENTATION = 180 ) #endif LCD_WriteReg(0x004e, Xpos );
17、160; LCD_WriteReg(0x004f, Ypos ); static void delay_ms(uint16_t ms) uint16_t i,j; for( i = 0; i < ms; i+ ) for( j = 0; j < 1141; j+ ); void LCD_Initi
18、aliztion(void) LCD_Configuration();/ DeviceCode = LCD_ReadReg(0x0000);/* 读取屏ID */ LCD_WriteReg(0x0000,0x0001); delay_ms(50); /* 打开晶振 ,内部晶振500k*/ LCD_WriteReg(0x0003,0xA8A4); delay_ms(50); L
19、CD_WriteReg(0x000C,0x0000); delay_ms(50); LCD_WriteReg(0x000D,0x080C); delay_ms(50); LCD_WriteReg(0x000E,0x2B00); delay_ms(50); LCD_WriteReg(0x001E,0x00B0); delay_ms(50);
20、160; LCD_WriteReg(0x0001,0x2B3F); delay_ms(50); /* 驱动输出控制320*240 0x2B3F */ LCD_WriteReg(0x0002,0x0600); delay_ms(50); LCD_WriteReg(0x0010,0x0000); delay_ms(50); LCD_WriteReg(0x0011,0x6070);
21、60;delay_ms(50); /* 定义数据格式 16位色 横屏 0x6070 */ LCD_WriteReg(0x0005,0x0000); delay_ms(50); LCD_WriteReg(0x0006,0x0000); delay_ms(50); LCD_WriteReg(0x0016,0xEF1C); delay_ms(50); LCD_WriteReg(0x0017,0x0003);
22、60; delay_ms(50); LCD_WriteReg(0x0007,0x0133); delay_ms(50); LCD_WriteReg(0x000B,0x0000); delay_ms(50); LCD_WriteReg(0x000F,0x0000); delay_ms(50); /* 扫描开始地址 */ LCD_Wr
23、iteReg(0x0041,0x0000); delay_ms(50); LCD_WriteReg(0x0042,0x0000); delay_ms(50); LCD_WriteReg(0x0048,0x0000); delay_ms(50); LCD_WriteReg(0x0049,0x013F); delay_ms(50); LCD_WriteReg(0x004A,0x0000);
24、; delay_ms(50); LCD_WriteReg(0x004B,0x0000); delay_ms(50); LCD_WriteReg(0x0044,0xEF00); delay_ms(50); LCD_WriteReg(0x0045,0x0000); delay_ms(50); LCD_WriteReg(0x0046,0x013F); delay_ms(50);
25、 LCD_WriteReg(0x0030,0x0707); delay_ms(50); LCD_WriteReg(0x0031,0x0204); delay_ms(50); LCD_WriteReg(0x0032,0x0204); delay_ms(50); LCD_WriteReg(0x0033,0x0502); delay_ms(50); LCD_WriteReg(0x0034,0x
26、0507); delay_ms(50); LCD_WriteReg(0x0035,0x0204); delay_ms(50); LCD_WriteReg(0x0036,0x0204); delay_ms(50); LCD_WriteReg(0x0037,0x0502); delay_ms(50); LCD_WriteReg(0x003A,0x0302); delay_ms
27、(50); LCD_WriteReg(0x003B,0x0302); delay_ms(50); LCD_WriteReg(0x0023,0x0000); delay_ms(50); LCD_WriteReg(0x0024,0x0000); delay_ms(50); LCD_WriteReg(0x0025,0x8000); delay_ms(50); LCD_WriteR
28、eg(0x004f,0); /* 行首址0 */ LCD_WriteReg(0x004e,0); /* 列首址0 */ /* Function Name : LCD_Clear* Description : 将屏幕填充成指定的颜色,如清屏,则填充 0xffff* Input : - Color: Screen Color* Output
29、 : None* Return : None* Attention : None*/void LCD_Clear(uint16_t Color)uint32_t index=0; Clr_Cs; LCD_WriteIndex(0x0022);for( index = 0; index < MAX_X * MAX_Y; index+ )LCD_WriteData(Color);Set_Cs; /* Function Name :
30、 LCD_GetPoint* Description : 获取指定座标的颜色值* Input : - Xpos: Row Coordinate* - Xpos: Line Coordinate * Output : None* Return : Screen
31、Color* Attention : None*/uint16_t LCD_GetPoint(uint16_t Xpos,uint16_t Ypos)uint16_t dummy; LCD_SetCursor(Xpos,Ypos);Clr_Cs;LCD_WriteIndex(0x0022); dummy = LCD_ReadData(); /* 空读一次 */
32、 dummy = LCD_ReadData(); Set_Cs; return dummy; FSMC全称“静态存储器控制器”。使用FSMC控制器后,可以把FSMC提供的FSMC_A25:0作为地址线,而把FSMC提供的FSMC_D15:0作为数据总线。(1)当存储数据设为8位时,(FSMC_NANDInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_8b
33、) 地址各位对应FSMC_A25:0,数据位对应FSMC_D7:0(2)当存储数据设为16位时,(FSMC_NANDInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b) 地址各位对应FSMC_A24:0,数据位对应FSMC_D15:0FSMC 包括4个模块:(1)AHB接口(包括FSMC配置寄存器)(2)NOR闪存和PSRAM控制器(驱动LCD的时候LCD就好像一个PSRAM的里面只有2个16位的存储空间,一个是DATA RAM 一个是CMD RAM)(3)NAND闪存和PC卡控制器(4)外部设备接口注:FSMC可以请求AHB进行数据宽度的操作。如果AHB操作的数据宽度大于外部设备(NOR或NAND或LCD)的宽度,此时FSMC将AHB操作分割成几个连续的较小的数据宽度,以适应外部设备的数据宽度 FSMC对外部设备的地址映像从0x6000 0000开始,到0x9FFF FFFF结束,共分4个地址块,每个地址块256M字节。可以看出,每个地址块又分为4个分地址块,大小64M。对NOR的地址映像来说,我们可以通过选择H
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025高考语文一轮复习讲义:选择性必修下册(二) 单篇梳理4 归去来兮辞并序
- 烟台2024年05版小学4年级上册英语第4单元期末试卷
- 费用报销流程-记账实操
- 上海市2024-2025学年高一上学期11月期中考试语文试题(无答案)
- 2024年汽、柴油深度加氢催化剂项目资金需求报告代可行性研究报告
- 高考化学复习讲义:化学反应与电能
- 文化自信心得体会800字
- 房屋转租第三方合同范本(30篇)
- 运动会安全应急预案
- 《技术的价值》教学设计(三篇)
- 2023超星尔雅舞蹈鉴赏章节测试考试答案
- 幼儿园中班数学活动《5以内的相邻数》
- 军事体育训练伤病预防课件
- 有限空间监护人制度
- 是妈妈是女儿三声部合唱谱
- 医疗环境表面清洁与消毒管理规范 课件
- 2023年高考语文全国乙卷小说《长出一地的好荞麦》讲评课件26张
- JCT2094-2011 干垒挡土墙用混凝土砌块
- 前端开发生涯人物访谈报告
- 跨部门工作联络单
- 农药采购及配送服务方案(技术标)
评论
0/150
提交评论