STM32的FSMC总线复用调试笔记

 
调试FSMC总线复用模式时主要遇到以下几点:

1、寄存器的配置,首先注意使能地址数据复用,其次要存储器类型选择FSMC_MemoryType_NOR,否则出现不了NADV信号。

    FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Enable;
    FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_NOR;

2、注意个GPIO复用功能的使能,以及时钟确定使能。

3、地址总线。在16位模式访问时,访问地址的[25..0]位必须先左移一位.。才能正确输出地址信号,原因是,STM32会将地址右移一位后在输出。如果输出前不左移,会导致输出地址错误,比如当我们软件访问地址6000 0005H这个地址时,实际访问的地址是6000 0002H。为何右移一位?看中文数据手册327页。如下


如表可以知道。当16位访问时,STM32把内部地址总线和FSMC地址信号线正好错移了一位。

这个主要是在复用模式下遇到的,至于16位模式下的其他访问会不会遇到这种情况还不知道。待开发。

附FSMC配置程序和读函数:

 p.FSMC_AddressSetupTime = 15;
  p.FSMC_AddressHoldTime = 15;
  p.FSMC_DataSetupTime = 15;
  p.FSMC_BusTurnAroundDuration = 15;
  p.FSMC_CLKDivision = 0;
  p.FSMC_DataLatency = 0;
  p.FSMC_AccessMode = FSMC_AccessMode_B;

  FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1;
  FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Enable;
  FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_NOR;
  FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
  FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
  FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable;  
  FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
  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 = &p;
  FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;

  FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);
  
  /*!< Enable FSMC Bank1_SRAM2 Bank */
  FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE); 


读函数中地址一定要左移


#define FPGA_ADDRESS 0x60000000
#define FPGA_read(offset) *((volatile unsigned short int *)(FPGA_ADDRESS +(offset<<1)))


  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: STM32F407的FSMC(Flexible Static Memory Controller)总线应用是指将FSMC用于连接外部存储器或外设的数据交换。FSMC是一个灵活的高性能静态存储器控制器,可以与各种存储器类型和外设相连接。 STM32F407的FSMC总线应用有以下几个方面: 1. 外部存储器扩展:通过FSMC总线,可以将外部存储器,如SRAM(静态随机存储器)或 NOR Flash(并行闪存),连接到STM32F407微控制器。这样可以扩展STM32F407的存储容量,适用于需要大容量内存的应用,如图像处理、音频处理等。 2. 外设连接:FSMC还可以用于连接外部设备,如LCD液晶显示屏。通过FSMC总线,可以将STM32F407与LCD控制器相连接,实现彩色图像的实时显示。此外,FSMC还可以连接其他外设,如触摸屏控制器、摄像头模块等。 3. 并行接口:FSMC总线是一个高速的并行接口,支持多种总线协议。除了SRAM和NOR Flash之外,FSMC还可以连接其他外部存储器,如PSRAM(伪静态随机存储器)、NAND Flash(并行闪存)等。通过FSMC的并行接口,可以实现高速数据传输和存取。 4. DMA支持:FSMCSTM32F407的DMA(直接存储器访问)控制器相结合,可实现高效的数据传输。DMA可以直接从外部存储器读取数据或向外部存储器写入数据,减轻了CPU的负担,提高了数据传输的效率。 总之,STM32F407的FSMC总线应用广泛,可以连接各种外部存储器和外设,具有灵活性和高性能。它在大容量存储、图像处理、音频处理等应用中发挥着重要作用,同时通过DMA支持提供了高效的数据传输解决方案。 ### 回答2: STM32F407的FSMC(Flexible Static Memory Controller)总线可以用于处理与外部静态存储器的通信。它提供了多种接口和功能,方便与不同类型的存储器进行连接,包括SRAM、NOR Flash和PSRAM等。 在SRAM应用中,FSMC总线可以为外部SRAM提供直接访问功能。通过配置FSMC控制寄存器和时序寄存器,可以实现读取和写入SRAM中的数据。这种方式可以扩展MCU的内存空间,提高数据处理能力。 在NOR Flash应用中,FSMC总线可以实现对外部闪存的读取和写入。通过配置FSMC的控制寄存器和时序寄存器,可以设置访问闪存的时序和模式。这种方式可以用于存储嵌入式应用程序代码和数据,提高系统的运行速度和效率。 在PSRAM应用中,FSMC总线可以连接并访问外部并行存储器。通过配置FSMC的控制寄存器和时序寄存器,可以实现对PSRAM的读取和写入。这种方式可以提供高速存储器的访问能力,适用于对存储速度要求较高的应用场景。 总之,STM32F407的FSMC总线应用广泛,能够满足不同类型的外部存储器的连接和通信需求。它提供了灵活的接口和丰富的功能,可以大幅拓展内存空间,提高系统性能和效率。 ### 回答3: STM32F407的FSMC(Flexible Static Memory Controller)总线是一种用于连接外部存储器设备的接口。它提供了与静态存储器(SRAM和NOR闪存)、NAND闪存、SDRAM等设备进行高速数据传输的功能。FSMC总线的应用范围广泛,包括但不限于以下几个方面: 首先,FSMC总线可以连接静态存储器设备,例如SRAM和NOR闪存。SRAM是一种快速且易于访问的存储器,适用于对读写速度要求较高的应用场景。NOR闪存则在数据存储方面提供了非常大的存储容量,适用于嵌入式系统中的代码存储需求。 其次,FSMC总线还可以连接NAND闪存,这是一种使用较多的闪存存储设备,适用于对存储容量要求较高的应用场景。NAND闪存不仅具备较大的存储容量,还具备良好的擦除和写入性能。 另外,FSMC总线还支持连接SDRAM,这是一种用于动态存储的存储器设备。SDRAM具备较大的存储容量和高速的数据传输速度,适用于对存储容量和数据读写性能要求较高的应用场景,如图像处理、音频处理等。 总之,STM32F407的FSMC总线广泛应用于嵌入式系统中需要连接外部存储器设备的场景。通过高速、稳定的数据传输,实现了对静态存储器(SRAM和NOR闪存)、NAND闪存和SDRAM等存储设备的有效控制和访问,为嵌入式系统的数据存储和处理提供了良好的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值