STM32 FSMC扩展SRAM时序配置与测量解析

5星 · 超过95%的资源 需积分: 16 19 下载量 2 浏览量 更新于2024-07-26 收藏 384KB PDF 举报
"STM32通过FSMC扩展SRAM的时序配置与测量技术文档" 在嵌入式系统设计中,STM32微控制器的 Flexible Static Memory Controller (FSMC) 提供了对外部存储器扩展的能力,特别是对于需要更大内存空间的应用。本文档主要讨论了如何在STM32系列芯片上通过FSMC扩展SRAM,并详细介绍了时序配置和测量方法。 1. STM32F103的FSMC扩展SRAM时序介绍及测量 - **时序介绍**: - FSMC的基本时间单位是HCLK(系统时钟频率)。地址建立时间(ADDSET)和数据设置时间(DATSET)是关键参数,它们决定了与SRAM交互的速度。例如,ADDSET可设置为0~15,DATSET可设置为1~15。读取操作需2个HCLK周期读取数据,而写操作完成后有6个HCLK周期的等待时间。 - **时序测量**: - 在72MHz的最高主频下,HCLK周期为13.89ns。在测试中,通常将地址建立时间设为0,数据建立时间为1,不使用扩展模式(即模式1),读等待时间设置为6个HCLK周期。 2. STM32F2/F4的FSMC扩展SRAM时序介绍及测量 - 虽然具体细节未在文档中详述,但STM32F2和F4系列的FSMC通常提供与F103相似的时序配置选项,但可能支持更高的时钟速度和更复杂的时序管理。 3. IS61LV25616高速SRAM的时序配置 - 对于高速SRAM如IS61LV25616,其时序要求更为严格。配置时需要确保FSMC的时序参数满足该SRAM的数据手册中的规定,以确保稳定可靠的通信。 4. EM681FV16AU中速大容量SRAM的时序配置 - 中速SRAM如EM681FV16AU可能需要更长的建立时间和不同的读写时序。配置时需关注这些差异,以适应其较慢的响应时间。 在进行时序配置时,必须仔细阅读SRAM的数据手册,理解其规定的时序参数。通过STM32的FSMC寄存器,如AS0~AS3、DS0~DS3等,可以设定相应的地址和数据设置时间。同时,还需要考虑BUSTURN(总线转换时间)、WAITx(等待状态)和EXTMOD(扩展模式)等参数。 在实际应用中,可以使用逻辑分析仪或者示波器来测量时序,确保STM32的FSMC输出信号与SRAM的输入信号匹配。例如,通过观察CS(片选)、NOE(非读使能)和NWE(非写使能)信号的上升沿和下降沿,可以验证是否符合预设的时序。 总结,STM32通过FSMC扩展SRAM涉及到的时序配置是一项关键任务,它直接影响到系统的性能和稳定性。正确的时序设置能确保数据传输的正确性和系统的高效运行。在进行配置时,务必根据具体的SRAM型号和STM32的主频来定制合适的时序参数,并通过实际测量验证其有效性。
2021-04-19 上传
【RT-Thread作品秀】EE-Lab作者:卿俊成 概述随着集成电路的不断发展,电子测量仪器分别向着高性能和微型化不断发展。本作品基于微型化便携式需求,设计一个集成数字电源、信号发生器、示波器的便携式电子测量仪器。 开发环境硬件:ART-Pi开发板、2.8‘SPI TFT屏幕(ILI9341)、AD9833模块、自制扩展板(由于设计失误,无法使用) RT-Thread版本: RT-Thread Nano(V3.1.3) 开发工具及版本:STM32CubeMX(V6.1.0)、HAL库(H7_V1.8.0)、Keil/MDK(V5.33.0.0) RT-Thread使用情况概述本应用使用Nano版RT-Thread,因此只使用了内核部分。 本应用使用信号量作为DMA分批通过SPI刷屏的屏幕数据,在中断中释放信号量,用于分批刷屏的同步。 本应用使用Finsh组件作为无GUI情况下的数据查看方式,及命令行方式对AD9833模块及定时器的操作方式。 硬件框架电脑端通过Putty软件与ART-Pi开发板的Finsh组件通信,实现控制功能。 SPI TFT屏幕模块由开发板的SPI4总线控制,作为波形显示界面。 AD9833信号发生模块由开发板通过模拟SPI控制,作为信号发生器。 信号测试夹用于外部电压输入,作为示波器的源信号。 由于自制扩展板存在问题,不在此介绍,但附上立创eda工程的在线链接:https://oshwhub.com/OneToken/art-pi-ee-tools 软件框架说明Finsh组件通过与电脑端交互,控制TIM15的预装载值,达到通过控制TIM15触发DMA_ADC转换的采样频率,并在显存对应位置打点,实现示波器功能。同时还可以控制AD9833产生频率不同的三角波、正弦、方波。 屏幕的刷新,由DMA1通道0将内部预先分配好的显存数据搬运至SPI移位寄存器,从而发送至ILI9341,实测频率60Mbit的情况下可以完美刷新,实现了高速刷屏的功能。 软件模块说明DMA传输ADC数据框图 通过定时器15触发DMA1通道1将ADC数据循环采集至指定内存处,实现示波器数据采集功能。 SPI通过DMA方式刷屏功能框图 理想情况下的刷屏方式 受到DMA一次传输数据数目uint16_t也就是65535的限制,无法一次性完成显存刷新至屏幕,因此分成三个数据包,依次顺序传输,使用信号量作为同步信号。 最终实现的刷屏方式 演示效果演示视频: 比赛感悟通过本次比赛,极大程度上熟悉了H7系列开发板,特别是大量参考了安富莱提供的教程,了解了H7的多域设计,RAM的分布式设计以及指定存储位置,DMA通信只能用于特定的RAM区和特定的外设之间,若RAM区域使用最高性能的DTM区,则大部分DMA通信都无法使用。在决定使用RT-Thread Nano之前,尝试使用RT-Thread完整版,按照完整版的流程注册SPI设备并且使用时,发现无法驱动SPI液晶屏,使用逻辑分析仪抓取信号也没啥问题,因此才换成RT-Thread Nano。 通过本次的小作品,比较深入的理解了RTOS的作用,特别是用于线程同步时,阻塞下来,等待中断释放信号量的方式,使得分段DMA SPI刷屏也能毫无感知延时的连续刷新。