OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6676|回复: 7

求大佬!STM32F103VE驱动ILI9488的FSMC16线代码问题

[复制链接]

2

主题

6

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2021-3-18
在线时间
3 小时
发表于 2022-8-11 17:05:37 | 显示全部楼层 |阅读模式
3金钱
用的STM32F103VET6通过fsmc驱动9488显示屏,显示屏一直白屏,无法显示内容,读不出Id,不知道是不是初始化的问题还是硬件问题。

void LCD_Init(void)
{                                        
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_APB2PeriphClockCmd ( RCC_APB2Periph_AFIO, ENABLE );
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE,ENABLE);//ê1ÄüPORTA,D,EòÔ¼°AFIO¸′óÃ1|Äüê±Öó
        FSMC_LCD_CS_APBxClock_FUN ( FSMC_LCD_CS_CLK, ENABLE );
        FSMC_LCD_DC_APBxClock_FUN ( FSMC_LCD_DC_CLK, ENABLE );
        FSMC_LCD_BK_APBxClock_FUN ( FSMC_LCD_BK_CLK, ENABLE );

        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode =  GPIO_Mode_AF_PP;
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0  | GPIO_Pin_1  | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_14 | GPIO_Pin_15;
                                                                                                                               
        GPIO_Init ( GPIOD, & GPIO_InitStructure );
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
                                                                                                                               
                                                                                                                               
        GPIO_Init ( GPIOE,  & GPIO_InitStructure );
         
         * PD4-FSMC_NOE   CD-RD
         * PD5-FSMC_NWE   CD-WR
         * PD7-FSMC_NE4  :  LCD-CS
         * PD11-FSMC_A0    CD-DC
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode =  GPIO_Mode_AF_PP;

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
        GPIO_Init (GPIOD, & GPIO_InitStructure );
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
        GPIO_Init (GPIOD, & GPIO_InitStructure );       

        GPIO_InitStructure.GPIO_Pin = FSMC_LCD_CS_PIN;
        GPIO_Init ( FSMC_LCD_CS_PORT, & GPIO_InitStructure );  

        GPIO_InitStructure.GPIO_Pin = FSMC_LCD_DC_PIN;
        GPIO_Init ( FSMC_LCD_DC_PORT, & GPIO_InitStructure );       
        复位
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 ;          
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        
        GPIO_Init(GPIOD, &GPIO_InitStructure);  
     背光控制
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        
        GPIO_Init ( GPIOA, & GPIO_InitStructure );
}
void LCD_FSMC(void)
{
       FSMC_NORSRAMInitTypeDef  FSMC_NORSRAMInitStructure;
        FSMC_NORSRAMTimingInitTypeDef  fsmc_lcd;        
        FSMC_NORSRAMTimingInitTypeDef  fsrc_lcd;

        RCC_AHBPeriphClockCmd ( RCC_AHBPeriph_FSMC, ENABLE );

        fsmc_lcd.FSMC_AddressSetupTime      = 0x01;       
        fsmc_lcd.FSMC_AddressHoldTime       = 0x00;         
        fsmc_lcd.FSMC_DataSetupTime         = 0x0f;         
        fsmc_lcd.FSMC_BusTurnAroundDuration = 0x00;
        fsmc_lcd.FSMC_CLKDivision           = 0x00;
        fsmc_lcd.FSMC_DataLatency           = 0x00;
        fsmc_lcd.FSMC_AccessMode            = FSMC_AccessMode_A;       
               
        fsrc_lcd.FSMC_AddressSetupTime      = 0x00;         
        fsrc_lcd.FSMC_AddressHoldTime       = 0x00;       
        fsrc_lcd.FSMC_DataSetupTime         = 0x03;         
        fsrc_lcd.FSMC_BusTurnAroundDuration = 0x00;
        fsrc_lcd.FSMC_CLKDivision           = 0x00;
        fsrc_lcd.FSMC_DataLatency           = 0x00;
        fsrc_lcd.FSMC_AccessMode            = FSMC_AccessMode_A;       
       
        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_16b;
        FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode       = FSMC_BurstAccessMode_Disable;
        FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity    = FSMC_WaitSignalPolarity_Low;
        FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait      =FSMC_AsynchronousWait_Disable;
        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 = & fsmc_lcd;
        FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct     = & fsrc_lcd;  
       
        FSMC_NORSRAMInit ( & FSMC_NORSRAMInitStructure );
        FSMC_NORSRAMCmd ( FSMC_Bank1_NORSRAM4, ENABLE );
                       
        LCD_LED=1;        背光               
     读取ID                          
        LCD_WR_REG(0XD3);               
        delay_us(5);                  
         lcddev.id=LCD_RD_DATA();               
         lcddev.id=LCD_RD_DATA();               
         lcddev.id=LCD_RD_DATA();               
        printf("\rIDÎa£o%04X\r\n",lcddev.id);
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2022-8-12 01:14:06 | 显示全部楼层
可以先直接接高低电平到GPIO上面,看看能否正常读取?
回复

使用道具 举报

2

主题

6

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2021-3-18
在线时间
3 小时
 楼主| 发表于 2022-8-12 08:59:31 | 显示全部楼层
正点原子 发表于 2022-8-12 01:14
可以先直接接高低电平到GPIO上面,看看能否正常读取?

大佬,我测试后复用推免输出下高低电平交替无效,保持常低,推免输出下高低电平交替正常,
回复

使用道具 举报

2

主题

6

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2021-3-18
在线时间
3 小时
 楼主| 发表于 2022-8-12 09:24:25 | 显示全部楼层
正点原子 发表于 2022-8-12 01:14
可以先直接接高低电平到GPIO上面,看看能否正常读取?

补充一下,复用输出下写数据取反后测得了管脚有高低电平变化
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2022-8-15 01:50:29 | 显示全部楼层
1wqer 发表于 2022-8-12 09:24
补充一下,复用输出下写数据取反后测得了管脚有高低电平变化

你得测试读取啊。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2020-7-2
在线时间
10 小时
发表于 2022-8-22 10:38:50 | 显示全部楼层
楼主调试咋样了,我最近也在用VET6来驱动LCD,我看了下你的代码,看PD7引脚定义,VET6只能使用bank1 ne1,还有PD11复用FSMC_A16,原子哥源码里面lcd头文件里面那个地址得改下,A16作为数据命令区分线
回复

使用道具 举报

25

主题

115

帖子

0

精华

高级会员

Rank: 4

积分
939
金钱
939
注册时间
2018-11-9
在线时间
146 小时
发表于 2022-9-2 08:47:58 | 显示全部楼层
f103驱动lcd流畅不流畅?实际效果会不会很卡?
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2021-10-19
在线时间
1 小时
发表于 2022-9-28 13:31:44 | 显示全部楼层
yzlzwyz 发表于 2022-8-22 10:38
楼主调试咋样了,我最近也在用VET6来驱动LCD,我看了下你的代码,看PD7引脚定义,VET6只能使用bank1 ne1, ...

原子哥的源码在哪能下载,用标准库版本的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 01:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表