一、硬件平台: p- C7 a, Z+ V8 {" ~$ {6 M" D, f 8 G; P, L( j+ F4 q' Y 5 K o! t. I8 x) E S3 s 二、实验简介 本实验基于ARM+FPGA超mini款iCore4T双核心板,一步一步带你利用STM32CubeMx工具完成对通用定时器TIM3的基本配置,实现500ms的定时功能。 通过编写通用定时器中断回调函数的内容以实现对板载LED的定时控制" s' F% a0 J- o: m 三、资料下载(实验源码+详细文档操作说明) 1、源代码 |
【经验分享】STM32_H7_ADC
STM32H7R/S高性能MCU:安全性,大存储和优异图显赋能更多应用创新
Stm32H7XX GCC下分散加载实现
【银杏科技ARM+FPGA双核心应用】STM32H7系列10——ADC
DIY-STM32H750核心板
[nucleo-H7A3ZI-Q]1-点亮一个皮皮灯
DIY-STM32H743核心板
【银杏科技ARM+FPGA双核心应用】STM32H7系列57——MDK_FLM
1月10日有奖直播 | 基于STM32 的CODESYS智能自动化解决方案
STM32的CAN FD位定时设置注意事项
还有,建议取消 FPGA 上的 Flash 颗粒,改成通过 SPI 或 FMC 来连接 FPGA 和 STM32,同时相应配置 FPGA 的启动模式为 SPI 从设备或并行接口。这样的话在实际应用中,FPGA 完全依赖 STM32 启动,两者的软件可以同时更新;同时 FPGA 启动接口兼做与 STM32 之间的高速通信接口,节省 FPGA 管脚。至于说 SPI 闪存颗粒,可以完全取消,也可以改接 STM32 的 QSPI 接口。另外,FPGA 有源晶振也可以取消,改成由 STM32 通过 MCO 向 FPGA 输出时钟。其三,FPGA 的 nPROG 和 STM32 的 nRESET 可以接在一起,使得两者可以一起复位。这样做的话,FPGA 独立支持电路几乎完全取消,彻底作为 STM32 的外设来使用。
我有设计过一款 AGM FPGA + STM32L4 的开发板,就是这样的设计结构:FPGA 配置成 SPI 启动,接在 STM32 的 SPI 管脚上;STM32 同时负责通过 MCO 给 FPGA 提供时钟;两者的复位信号也是接在一起;另外在 STM32 挂了一片 QSPI 闪存来存放 FPGA 配置数据。$ ~! h5 V/ H( h- L& Y+ G' ^, ?
FLASH颗粒在iCore4T中已经选配了,默认不焊接,只留出了位置对一些只开发FPGA的用户提供方便。目前STM32MP1+FPGA已经在原理图阶段了,ARM+FPGA计划QSPI连接。另外其他的两点可以考虑哦
QSPI 的话要注意兼容性问题,而且由于 STM32 QSPI 的特性 FPGA 端开发可能会有困难。我觉得 FMC 会更合适一点。
QSPI跑个几十MB的速度已经完全够用了,比起来FMC节省了不少IO资源
FMC 在 FPGA 一侧要方便的多:
- 其一,FMC 的确费 IO,但几乎所有厂家都有现成的 IP 核可以简单地把 FMC 接口转成片内总线接口:Avalon、AXI4、Wishbone、AHB-Lite 等等,用起来简单的多。
- 其二,FMC 接口相当于将 ARM 侧的内部总线直接引出,可以支持内存映射模式下写数据、等待状态、批量传输、DMA 访问等总线模式,功能强大得多;STM32 的 QSPI 虽然支持内存映射,但是不支持内存映射模式下发写指令,也不支持等待状态。
- 其三,FMC 接口可以轻易兼容 FPGA 的并口启动模式,同一组接口直接就地复用。
- 其四,FMC 接口启动 FPGA 的代码非常简单,只要通过 DMA 或 CPU memcpy 函数把 FPGA 字节流复制到 FPGA 地址范围就可以,字节流可以是某处闪存(片内闪存或 QSPI Flash 皆可)也可以是别的外设(USB、网络等等)。
- 其五,FMC 的数据吞吐量远大于 QSPI。
- 其六,对于 STM32MP1 或其他基于 Linux 的方案,通过 FMC 来启动 FPGA 和访问其中的逻辑单元有现成的主线驱动(其实就是直接借用 Zynq 的代码)但通过 QSPI 由于没有现有驱动,需要用户或贵公司自行开发维护。
; F; W- S$ f/ g2 g; ^4 z