历史上的今天
返回首页

历史上的今天

今天是:2025年06月26日(星期四)

正在发生

2018年06月26日 | STM32 FSMC 总结

2018-06-26 来源:eefocus

背景


做DP开发过程中,需要将DP芯片和ARM芯片进行通信,一般有两种方式:

1)IO端口(总线)方式来进行通信;

2)FSMC-存储器映射方式来进行通信;


之前的开发是采用第一种方式在F103芯片上开发,现在换F4平台,采用第二种方式来进行交互数据。


FSMC的基础


FSMC功能是类似 51 单片机的存储器映射功能,能管理多个外部不同种类的存储设备,具有方便,简单,快捷的优点。


目前支持的类型有:SRAM、ROM、PSRAM、NOR Flash和NANDFlash 存储器。

更多的关于FSMC的资料需要阅读STM32 手册对于FSMC的详细介绍。


VPC3+C   +    ARM     +     FSMC实现细节描述


1)首先了解VPC3+C该芯片的时序图,VPC3的存储器提供两种访问方式:

a) 数据线和地址线不复用模式,手册中叫做C165模式;

b) 数据线和地址线交叉复用,手册中叫做80C32模式;

   为了节约IO的数量,决定采用80C32模式,手册中对此描述为同步模式,个人觉得有歧义。

2)查找80C32模式的时序图,如下:

3)在STM32数据手册中查找与80C32时序图一致的时序图。



采用的是地址线和数据线交叉复用和异步方式的,所以,相应的查找交叉复用的时序图,如下:






4)对比时序图发现,互联的线有


FSMC_NADV

加反向器(VPC3地址锁存控制信号)

ALE

FSMC_AD

数据线(地址线)

AB

FSMC_A

地址线

DB

FSMC_NWE

写信号

XWR

FSMC_NRD

读信号

XRD


由于VPC3内部自带地址锁存器,所以外部可以不加锁存器了,按照VPC3手册推荐,用了8个地址线,寻址2K空间,剩余的用作地址片选信号,这里有个小技巧,片选其中一个引脚,加反相器,同时也将STM32地址唯一映射为VPC3的确定地址。我当时调试代码时未理解透该细节,导致浪费了不少时间。


5)代码的调试


FSMC的代码采用STM32官方库函数来实现,在新平台下面需要注意一些几点:


A)新平台采用的系统时钟是否由于外部晶振变化而变化,需要对系统时钟进行配置,具体的配   置是在STM32F4xx.c 文件中。

  

系统时钟 = ((HSE或者HSI)/PLL_M )*PLL_N /PLL_P;


B)新平台时钟加快后对于FSMC的时间的设置的影响,在异步模式下,主要是考虑地址生成时间,地址保持时间,数据生成时间,这几个参数需要参考对应的外部存储器的参数来进行设定。


6)调试中遇到最大的两个问题

a) 外部晶振更改后为重新进行系统时钟的配置,我调用RCC_GetClocksFreq()来获取当前系统的时钟,是168M,这个是根据上面的计算公式计算出来,由于宏定义的数据未更改,所以表面上市正确的,但是和实际的情况却不符合。

b) 对于片选信号的理解,我是在配置FSMC功能后重新对地址线上的片选信号进行IO的操作,经过观看GPIO口的数据后,发现拉高该端口了,其实,FSMC是一个自动的过程,在FSMC操作额过程中,即便我之前拉高该端口,FSMC在地址操作时会将之前的IO口操作的结果给覆盖掉,导致数据写入不成功这个也是我对于片选的理解不彻底而造成的。


结束语


本次FSMC的调试过程中,学到了许多的知识,硬件电路的如何连接,信号线的选择,对FSMC 的理解和操作,时序图的匹配这个一个大体过程,基本掌握了硬件设计人员原理图线路连接过程,以及软件调试。


推荐阅读

史海拾趣

Circuit Assembly公司的发展小趣事

由于Circuit Assembly公司的发展故事涉及具体的公司案例和数据,而这些信息往往涉及公司的内部运营、市场策略等敏感内容,且不同公司的发展经历也各有差异,因此我无法直接为您提供5个具体的电子行业里面Circuit Assembly公司的发展起来的相关故事。但我可以根据您提供的背景和要求,给出一些可能的发展趋势和挑战,帮助您理解该行业的整体状况。

在电子行业中,Circuit Assembly公司的发展通常与几个关键因素密切相关,包括技术创新、市场需求、供应链管理以及国际合作等。随着5G、物联网、智能制造等技术的快速发展,Circuit Assembly公司面临着前所未有的机遇和挑战。

一方面,新技术的出现推动了电子产品的小型化、集成化和智能化,对Circuit Assembly公司的工艺水平和生产能力提出了更高的要求。那些能够紧跟技术潮流,不断提升自身技术水平和创新能力的公司,往往能够在市场中脱颖而出,实现快速发展。

另一方面,随着全球市场竞争的加剧,Circuit Assembly公司需要更加注重成本控制和供应链管理。通过建立稳定可靠的供应链体系,优化生产流程和管理,降低生产成本,提高产品质量,这些公司能够更好地满足客户需求,提升市场竞争力。

此外,国际合作也是Circuit Assembly公司发展的重要推动力。通过与国内外同行企业的交流与合作,可以引进先进的技术和管理经验,共同推动行业发展。同时,通过参与国际市场竞争,也能够拓宽公司的业务领域,提高公司的国际影响力。

综上所述,电子行业中的Circuit Assembly公司面临着多方面的机遇和挑战。那些能够抓住机遇、应对挑战的公司,有望在市场中取得更大的成功。但具体的公司发展故事需要根据不同的公司背景和实际情况来具体分析和描述。建议您查阅相关行业报告、公司年报或新闻报道,以获取更具体的信息。

Decawave公司的发展小趣事

2020年,美国RF解决方案的领先供应商Qorvo宣布收购Decawave。这一收购对于Decawave来说是一个重要的里程碑。Qorvo看中了Decawave在UWB技术领域的创新能力和市场潜力,通过收购整合,Qorvo能够更好地将Decawave的技术应用于其移动、汽车、消费类和工业物联网市场的产品中。同时,Decawave也借助Qorvo的全球资源和市场渠道,进一步扩大了其市场份额和影响力。

Gumstix公司的发展小趣事
检查电路连接是否松动或断裂,重新连接或更换损坏的部件。
Esterline Power Systems公司的发展小趣事

在追求经济效益的同时,Esterline Power Systems也积极履行社会责任,注重绿色环保和可持续发展。公司采用环保材料和生产工艺,降低生产过程中的能源消耗和废弃物排放。此外,公司还积极参与环保公益活动,推动绿色能源的发展和应用。这些举措不仅提升了公司的社会形象,也为公司赢得了更多客户的信任和支持。

East Texas Integrated Circuits公司的发展小趣事

随着ETIC的产品在市场上逐渐获得认可,公司面临着市场拓展的挑战。为了扩大市场份额,ETIC决定进入国际市场。他们首先选择了亚洲市场作为突破口,通过深入了解当地市场需求和竞争环境,制定了一系列有针对性的营销策略。经过几年的努力,ETIC成功地在亚洲市场建立了稳定的客户基础,并逐渐将业务拓展到了欧洲和北美市场。

国产公司的发展小趣事
使用万用表等工具测量电路的静态工作点,确保各元器件工作在正常范围内。

问答坊 | AI 解惑

6月6号TI会议下载资料

本帖最后由 paulhyde 于 2014-9-15 09:45 编辑 C2000参赛资料报告(简易数字频率计,三相正弦波变频电源) Training PPTs 完整德州仪器高性能模拟器件在大学生创新设计中的应用及选型指南 关于TI杯获奖作品选编论坛已有,就不多手了   ...…

查看全部问答>

零基础学单片机视频教程——03讲 寄存器仿真实例

零基础学单片机视频教程——03讲  寄存器仿真实例     51系列单片机包含有4组通用工作寄存器,寄存器组0~3。每组通用工作寄存器包含8个寄存器R0~R7。本讲演示了如何在程序中选择不同的通用寄存器组,以及如何在程序调试运行 ...…

查看全部问答>

求 windows mobile 6.0 c++语言开发的入门经典书籍

如题,我在网上没找到靠谱的书籍介绍, 希望各位高手能指点,多谢多谢。 …

查看全部问答>

做STM32IAP的时候,下载后不能引导应用程序运行

请教:做STM32 IAP的时候,用官方的例子下载后可以引导应用程序运行,自己写的不行 同一个bin文件,都是从0x8002000地址处编程 现在想读出来看看是不是我的根官方的编进去的数据不一样,有什么工具可以读出flash里的数据吗?&n ...…

查看全部问答>

求解 同相放大与反相放大

我先简单说一下我的理解,同相放大即输入与输出是同极性的信号,反向放大即时:输入与输出极性相反。 我的问题:同相放大与反相的区别,是不是没有相位要求的情况下可以互换呢 在什么场合下用同相放大,什么场合下用反相放大呢?望大虾们指点。…

查看全部问答>

DSP的可变长度数组申请

我有个压缩算法,在windows下运行是完全OK的,但移植到DSP下,遇到内存问题,下面我大概说下问题结构: 大概有结构如下 typedef struct _COMPRESSED_DATA_{  int width;  int height;  BYTE  m_Data[0];    ...…

查看全部问答>

基于msp430g2553按键

#include \"msp430g2553.h\"void main(){  // Stop watchdog timer to prevent time out reset        WDTCTL = WDTPW + WDTHOLD;        //主系统时钟切换为外部高 ...…

查看全部问答>

DM8148 开发板 RDK编译

目前TI (德州仪器)的DM8148平台推出已经有一段时间了,但是对于大多人来说,还内有到大规模使用的阶段,一方面是对DM8148产品的不了解,另外一方面就是DM8148的开发文档比较少和对其架构复杂的担心。     下面是我买北京天睿视迅的DM8148开 ...…

查看全部问答>

f

本帖最后由 feiyun 于 2015-12-28 10:06 编辑 看有什么想法…

查看全部问答>

TI 参考设计 面向超低功耗和低功耗应用的独特高效率隔离式 DCDC 转换器参考设计

TI 参考设计 面向超低功耗和低功耗应用的独特高效率隔离式 DCDC 转换器参考设计 …

查看全部问答>