当前位置:   article > 正文

STM32与FPGA通信 使用FSMC接口_fpga和stm32通信

fpga和stm32通信

一、简介

这次实验使用到的是STM32的G474E-EVAL板,FPGA使用的是安路科技的EG4系列开发板。原理是用STM32上的FSMC接口与FPGA建立通信线路,FSMC为并行接口,可以大幅度提高通信的速率,对于串行速率达不到要求的可以考虑此种方式。

这里插一句题外话我们场景中经常需要用到STM32和FPGA相连的一个情形不仅是因为这个可以使用STM32强大的控制功能,而是因为STM32的管脚其实非常少,相对地FPGA强大的并行计算的能力加之可以有很多管脚(40-50个轻轻松松),非常适合我们将一部分运算分给FPGA去做。

二、STM32端

2.1 CubeMX配置

图1 FMC在CubeMx中的配置

  1. Chip Select 信号为 为片选信号,选择外设的地址,这是因为我们可能会有多个外设挂在STM32的外南,用这个信号来确定当前选定的是哪一个外设。
  2. Memory Type 选择的是外设的类型,分为如下图2几种,这里我们选用的是 Muxed PSROM,如果及外设是显示屏的话可以选择LCD interface
    图2 Memory Type配置说明
  3. Data/Address 这里就是地址和数据的位宽,我们选择16bit已经足够了。
  4. Clock 这里我们使用异步模式,失能时钟。
  5. Address Valid 地址有效性同样失能。
  6. Wait 等待信号,不勾选这里,表示失能。
  7. Byte enable 字节失能,这个信号主要是用来决定发送数据的时候是否切片,这个自行选择,这里我们不选。
    最后的配置结果上图1 所示。管脚配置如下图3所示。
    图3 管脚配置
    最后就可以生成工程代码了,这需要注意的是最好勾选下图红框所示,使每个外设的层次更加清晰,后续可以更快速的定位代码所在。
    图4 工程设置

2.2 例程

种类我们为了更加便于理解入门,我们使用这个CubeMX中的G4的固件包里面自带的这个例程,常用的路径如下图所示,在你CubeMX的安装路径下面:
图4 安装路径
使用MDK打开工程以后找到主函数里面的读写操作:
图5 读写操作
我在这里为了便于调试,修改了发送的内容和地址,但是功能上不变化的。
下面是FMC的时序设置,这里需要注意的是你所写的值有的时候并不就是你填的值,可能加上1才是实际上的值,比如图中圈起来的busturnaround
图6 时序设置
这里的时序设置还有很多需要注意的点,比如说根据手册有的值只有两位,所以只能在0-3中取;还有的情况是要满足一些建立保持时间,这些信息需要仔细研读手册,我这里读的是RM0440,当中可以找到标准的时序图。
图7 复用模式下的写时序图

调试结果
上图中的额绿色线是NWE信号,下面两根是DATA[0]和DATA[1]信号,经过验证满足手册中的时序图。

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/384826
推荐阅读
相关标签
  

闽ICP备14008679号