STM32F103VCT6求助FSMC初始化

2019-07-21 07:35发布

   因为以前用的MINI32板子,发现显示图片很慢,所以自己搞了一块用VCT6的板子。看下SDIO和FSMC是不是快点。结果现在不显示了,屏还是原来那个,确定是好的。
原理图如下:
初始化程序是这样的。
程序是这样的:
RCC->AHBENR|=1<<8;                      //ê1&#196;üFSMCê±&#214;ó          
        RCC->APB2ENR|=1<<5;             //ê1&#196;üPORTDê±&#214;ó
        RCC->APB2ENR|=1<<6;             //ê1&#196;üPORTEê±&#214;ó
        RCC->APB2ENR|=1<<4;              //ê1&#196;üPORTCê±&#214;ó         
        GPIOC->CRH&=0XFF0FFFFF;                //PC13 RST
        GPIOC->CRH|=0X00300000;          
        //PORTD&#184;′ó&#195;í&#198;íìê&#228;3&#246;                         0.1.4.5.7.8.9.10.11.14.15
        GPIOD->CRH&=0X00FF0000;
        GPIOD->CRH|=0XBB00BBBB;
        GPIOD->CRL&=0X0F00FF00;
        GPIOD->CRL|=0XB0BB00BB;            
        //PORTE&#184;′ó&#195;í&#198;íìê&#228;3&#246;                         7.8.9.10.11.12.13.14.15
        GPIOE->CRH&=0X00000000;
        GPIOE->CRH|=0XBBBBBBBB;
        GPIOE->CRL&=0X0FFFFFFF;
        GPIOE->CRL|=0XB0000000;                                                                                                                  
        rest=1;
        delay_ms(5);        
        rest=0;
        delay_ms(100);                                         // delay 50 ms
        rest=1;
        delay_ms(100);
        //&#188;&#196;′&#230;&#198;÷&#199;&#229;á&#227;
        //bank1óDNE1~4,&#195;&#191;ò&#187;&#184;&#246;óDò&#187;&#184;&#246;BCR+TCR£&#172;&#203;ùò&#212;×ü12°&#203;&#184;&#246;&#188;&#196;′&#230;&#198;÷&#161;£
        //&#213;aà&#239;&#206;ò&#195;&#199;ê1ó&#195;NE1 £&#172;ò2&#190;í&#182;&#212;ó|BTCR[0],[1]&#161;£                                    
        FSMC_Bank1->BTCR[0]=0X00000000;
        FSMC_Bank1->BTCR[1]=0X00000000;
        FSMC_Bank1E->BWTR[0]=0X00000000;
        //2ù×÷BCR&#188;&#196;′&#230;&#198;÷        ê1ó&#195;òì2&#189;&#196;£ê&#189;
        FSMC_Bank1->BTCR[0]|=1<<12;                //′&#230;′¢&#198;÷D′ê1&#196;ü
        FSMC_Bank1->BTCR[0]|=1<<14;                //&#182;áD′ê1ó&#195;2&#187;í&#172;μ&#196;ê±Dò
        FSMC_Bank1->BTCR[0]|=1<<4;                 //′&#230;′¢&#198;÷êy&#190;Y&#191;í&#182;è&#206;a16bit             
        //2ù×÷BTR&#188;&#196;′&#230;&#198;÷       
        //&#182;áê±Dò&#191;&#216;&#214;&#198;&#188;&#196;′&#230;&#198;÷                                                             
        FSMC_Bank1->BTCR[1]|=0<<28;                //&#196;£ê&#189;A                                                                             
        FSMC_Bank1->BTCR[1]|=1<<0;                 //μ&#216;&#214;·&#189;¨á¢ê±&#188;&#228;£¨ADDSET£&#169;&#206;a2&#184;&#246;HCLK 1/36M=27ns(êμ&#188;ê>200ns)                  
        //òò&#206;aòo&#190;§&#199;y&#182;ˉICμ&#196;&#182;áêy&#190;Yμ&#196;ê±oò£&#172;&#203;ù&#182;è2&#187;&#196;üì&#171;&#191;ì£&#172;óè&#198;&#228;&#182;&#212;1289&#213;a&#184;&#246;IC&#161;£
        FSMC_Bank1->BTCR[1]|=0XF<<8;          //êy&#190;Y±£′&#230;ê±&#188;&#228;&#206;a16&#184;&#246;HCLK                  
        //D′ê±Dò&#191;&#216;&#214;&#198;&#188;&#196;′&#230;&#198;÷  
        FSMC_Bank1E->BWTR[0]|=0<<28;         //&#196;£ê&#189;A                                                                      
        FSMC_Bank1E->BWTR[0]|=0<<0;                //μ&#216;&#214;·&#189;¨á¢ê±&#188;&#228;£¨ADDSET£&#169;&#206;a1&#184;&#246;HCLK
        //4&#184;&#246;HCLK£¨HCLK=72M£&#169;òò&#206;aòo&#190;§&#199;y&#182;ˉICμ&#196;D′D&#197;o&#197;&#194;&#246;&#191;í£&#172;×&#238;éùò2μ&#195;50ns&#161;£72M/4=24M=55ns           
        FSMC_Bank1E->BWTR[0]|=3<<8;         //êy&#190;Y±£′&#230;ê±&#188;&#228;&#206;a4&#184;&#246;HCLK       
        //ê1&#196;üBANK1,&#199;&#248;óò4
        FSMC_Bank1->BTCR[0]|=1<<0;                //ê1&#196;üBANK1£&#172;&#199;&#248;óò1                                               

这个应该怎么改才能显示呢?先谢谢大家了!!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
正点原子
1楼-- · 2019-07-21 11:18
这种先应该读ID,看能否正常读取LCD的ID。不能的话,检查焊接、时序、程序的问题。
isoimg2130
2楼-- · 2019-07-21 13:43
正点原子 发表于 2018-11-22 02:04
这种先应该读ID,看能否正常读取LCD的ID。不能的话,检查焊接、时序、程序的问题。

能读出ID,但是读出来的事9325,但事实上是9341.这一般是什么问题呢?
以前用MINI32的时候是正常的。读出来的是9341。
isoimg2130
3楼-- · 2019-07-21 18:16
本帖最后由 isoimg2130 于 2018-11-22 08:46 编辑
正点原子 发表于 2018-11-22 02:04
这种先应该读ID,看能否正常读取LCD的ID。不能的话,检查焊接、时序、程序的问题。

能帮忙看下这个这一节是对的吗?应该是对的,这个是从精英版复制的。
                    
       [mw_shl_code=applescript,true] FSMC_Bank1->BTCR[0]=0X00000000;
        FSMC_Bank1->BTCR[1]=0X00000000;
        FSMC_Bank1E->BWTR[0]=0X00000000;

        FSMC_Bank1->BTCR[0]|=1<<12;               
        FSMC_Bank1->BTCR[0]|=1<<14;        
        FSMC_Bank1->BTCR[0]|=1<<4;                     
                                                            
        FSMC_Bank1->BTCR[1]|=0<<28;                                                                                    
        FSMC_Bank1->BTCR[1]|=1<<0;                           
        
        FSMC_Bank1->BTCR[1]|=0XF<<8;                    

        FSMC_Bank1E->BWTR[0]|=0<<28;                                                                     
        FSMC_Bank1E->BWTR[0]|=0<<0;        

        FSMC_Bank1E->BWTR[0]|=3<<8;
        FSMC_Bank1->BTCR[0]|=1<<0;     [/mw_shl_code]     
这个是用的A16,[mw_shl_code=applescript,true]//ê1ó&#195;NOR/SRAMμ&#196; Bank1.sector4,μ&#216;&#214;·&#206;&#187;HADDR[27,26]=11 A16×÷&#206;aêy&#190;Y&#195;üá&#238;&#199;&#248;·&#214;&#207;&#223;
//×¢òaéè&#214;&#195;ê±STM32&#196;ú2&#191;&#187;áóòò&#198;ò&#187;&#206;&#187;&#182;&#212;&#198;&#228;!                    
#define LCD_BASE        ((u32)(0x60000000 | 0x0001FFFE))
#define LCD             ((LCD_TypeDef *) LCD_BASE)[/mw_shl_code]      
正点原子
4楼-- · 2019-07-21 22:13
 精彩回答 2  元偷偷看……

一周热门 更多>