求助!FMC NE1和NE4区别

2019-07-20 06:44发布

大神求助!使用stm32F429的时候,用FMC的NE4去驱动LCD的片选信号有问题(原驱动程序使用NE1没问题),程序是完全一致,区别只是用NE1和NE4。硬件用的是阿波罗的开发板+自己的底板,底板全部留空,只有LCD相关的。

详见此贴
9486 EMwin鼠标异常http://www.openedv.com/forum.php ... &fromuid=113251
(出处: OpenEdv-开源电子网)


同样的程序,同样的“秀鼠标'的函数“        GUI_CURSOR_Show()”,使用NE1和 NE4的区别如附件图:
但我仅仅只改了
        SRAM_Handler.Init.NSBank=FMC_NORSRAM_BANK4;     //使用NE4

#define LCD_BASE        ((u32)(0x6c000000 | 0x0007FFFE));这两条语句
为什么GUI_CURSOR_Show()的示波器图会不一样?


使用NE1:
NE1 NE1
使用ne4:
ne4 ne4   

由于GUI_CURSOR_Show()这个被GUI程序封装了,看不到底层,只能看到示波器是这个样子,黄 {MOD}的是DB0,蓝 {MOD}的是LCD的CS信号



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
yangmiao0223
1楼-- · 2019-07-20 12:05
FMC配置如下:

基本就是原子哥的例程,就是修改了NE4而已

        SRAM_Handler.Instance=FMC_NORSRAM_DEVICE;               
        SRAM_Handler.Extended=FMC_NORSRAM_EXTENDED_DEVICE;   
   
        SRAM_Handler.Init.NSBank=FMC_NORSRAM_BANK4;     //使用NE4
        SRAM_Handler.Init.DataAddressMux=FMC_DATA_ADDRESS_MUX_DISABLE; //地址/数据线不复用
        SRAM_Handler.Init.MemoryType=FMC_MEMORY_TYPE_SRAM;   //SRAM
        SRAM_Handler.Init.MemoryDataWidth=FMC_NORSRAM_MEM_BUS_WIDTH_16; //16位数据宽度
        SRAM_Handler.Init.BurstAccessMode=FMC_BURST_ACCESS_MODE_DISABLE; //是否使能突发访问,仅对同步突发存储器有效,此处未用到
        SRAM_Handler.Init.WaitSignalPolarity=FMC_WAIT_SIGNAL_POLARITY_LOW;//等待信号的极性,仅在突发模式访问下有用
        SRAM_Handler.Init.WaitSignalActive=FMC_WAIT_TIMING_BEFORE_WS;   //存储器是在等待周期之前的一个时钟周期还是等待周期期间使能NWAIT
        SRAM_Handler.Init.WriteOperation=FMC_WRITE_OPERATION_ENABLE;    //存储器写使能
        SRAM_Handler.Init.WaitSignal=FMC_WAIT_SIGNAL_DISABLE;           //等待使能位,此处未用到
        SRAM_Handler.Init.ExtendedMode=FMC_EXTENDED_MODE_ENABLE;        //读写使用不同的时序
        SRAM_Handler.Init.AsynchronousWait=FMC_ASYNCHRONOUS_WAIT_DISABLE;//是否使能同步传输模式下的等待信号,此处未用到
        SRAM_Handler.Init.WriteBurst=FMC_WRITE_BURST_DISABLE;           //禁止突发写
        SRAM_Handler.Init.ContinuousClock=FMC_CONTINUOUS_CLOCK_SYNC_ASYNC;
   
        //FMC读时序控制寄存器
        FMC_ReadWriteTim.AddressSetupTime=0x0F;        //地址建立时间(ADDSET)为15个HCLK 1/180M*15=5.5ns*15=82.5ns
        FMC_ReadWriteTim.AddressHoldTime=0x00;
        FMC_ReadWriteTim.DataSetupTime=0x46;           //数据保存时间(DATAST)为70个HCLK        =5.5*70=385ns
        FMC_ReadWriteTim.AccessMode=FMC_ACCESS_MODE_A; //模式A
        //FMC写时序控制寄存器
        FMC_WriteTim.AddressSetupTime=0x0F;            //地址建立时间(ADDSET)为15个HCLK=82.5ns
        FMC_WriteTim.AddressHoldTime=0x00;
        FMC_WriteTim.DataSetupTime=0x0F;               //数据保存时间(DATAST)为5.5ns*15个HCLK=82.5ns
        FMC_WriteTim.AccessMode=FMC_ACCESS_MODE_A;     //模式A
        HAL_SRAM_Init(&SRAM_Handler,&FMC_ReadWriteTim,&FMC_WriteTim);               
        delay_ms(50); // delay 50 ms
fl7547454
2楼-- · 2019-07-20 13:13
NE4的引脚初始化了没
xuyaqi
3楼-- · 2019-07-20 19:08
 精彩回答 2  元偷偷看……
yangmiao0223
4楼-- · 2019-07-20 22:10
 精彩回答 2  元偷偷看……
xuyaqi
5楼-- · 2019-07-20 22:47
yangmiao0223 发表于 2018-8-13 09:53
感谢解答。但是,我在板子上把LCD的片选信号割开了,然后在硬件上飞线,可以连接NE1或者NE4。

弱弱问 ...

这是软件内部的事情和 硬件NE1,NE4工作无关。
yangmiao0223
6楼-- · 2019-07-21 03:19
 精彩回答 2  元偷偷看……

一周热门 更多>