硬汉嵌入式论坛

 找回密码
 立即注册
查看: 8711|回复: 2
收起左侧

[有问必答] 请教大家一个FSMC配置的问题。

[复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116758
QQ
发表于 2012-11-18 18:52:31 | 显示全部楼层 |阅读模式
我用的是小马哥那里买的iCore核心板(STM32+FPGA),以前用的时候没注意,后来才发现这个程序上的BUG
STM32和FPGA采用的FSMC通信,由于VET6只有一个FSMC_NE1引脚,所以板子上有个138译码器。还有一个
重要的地方就是STM32的时钟由FPGA提供的,所以刚开机需要复位下STM32,或者STM32做个延时,以此来得到
稳定的FPGA时钟


wwww.jpg
CS0  作为了FPGA的片选。
CS1,CS2,CS3可以用其它外设的片选,下面就说一下我的问题,我需要用这几个片选的其中

一个来外接RA8875的屏,对于VET6来说,注意红体的地方,  只能配置成FSMC_Bank1_NORSRAM1
因为它只有一个FSMC_NE1引脚


    /*-- FSMC Configuration ------------------------------------------------------*/
    /*----------------------- SRAM Bank 4 ----------------------------------------*/
    /* FSMC_Bank1_NORSRAM4 configuration */
    timing.FSMC_AddressSetupTime = 2;
    timing.FSMC_AddressHoldTime = 0;
    timing.FSMC_DataSetupTime = 4;
    timing.FSMC_BusTurnAroundDuration = 0;
    timing.FSMC_CLKDivision = 0;
    timing.FSMC_DataLatency = 0;
    timing.FSMC_AccessMode = FSMC_AccessMode_A;
    /*
     LCD configured as follow:
        - Data/Address MUX = Disable
        - Memory Type = SRAM
        - Data Width = 16bit
        - Write Operation = Enable
        - Extended Mode = Enable
        - Asynchronous Wait = Disable
    */
    init.FSMC_Bank = FSMC_Bank1_NORSRAM1;
    init.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
    init.FSMC_MemoryType = FSMC_MemoryType_SRAM;
    init.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
    init.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
    init.FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable;    /* 注意旧库无这个成员 */
    init.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
    init.FSMC_WrapMode = FSMC_WrapMode_Disable;
    init.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
    init.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
    init.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
    init.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;
    init.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
    init.FSMC_ReadWriteTimingStruct = &timing;
    init.FSMC_WriteTimingStruct = &timing;
    FSMC_NORSRAMInit(&init);
    /* - BANK 1 (of NOR/SRAM Bank 1~4) is enabled */
    FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE);

使用的时候发现只有红体的地方才配置成FSMC_Bank1_NORSRAM4才能用,按道理来说
不能啊,应该配置成FSMC_Bank1_NORSRAM1才能用啊。

后来尝试的解决办法:

1.  在咱们新推出的那个VET6的开发板上面,配置FSMC为FSMC_Bank1_NORSRAM2,
     FSMC_Bank1_NORSRAM3,FSMC_Bank1_NORSRAM4的时候都能用,就是速度慢,
     只有配置能
FSMC_Bank1_NORSRAM1的时候才是正常的。
2.  后来干脆在FSMC_NE1引脚引出一根线直接接到RA8875的屏上,还是不行

   现在就差把FPGA吹下来了,大家帮看看可能是什么问题。
回复

使用道具 举报

759

主题

1050

回帖

3332

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3332
发表于 2012-11-18 20:16:23 | 显示全部楼层
RA8875的片选直接接GND,也可以工作的。 前提是FSMC总线上其他芯片的片选必须为高。否则就会总线冲突。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116758
QQ
 楼主| 发表于 2012-11-19 15:40:50 | 显示全部楼层
armfly:
RA8875的片选直接接GND,也可以工作的。 前提是FSMC总线上其他芯片的片选必须为高。否则就会总线冲突。
版主问题解决了,是FPGA对LCD有干扰。FSMC现在只和FPGA通信

幸亏版主还有RA8875的SPI通信方式, 要不换硬件平台我就悲催了,
这个东西一共做了四套。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-7-5 10:24 , Processed in 0.225451 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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