一、硬件平台
$ Z0 ~8 \ j8 p" c- Z 二、实验简介6 p# D( v8 Y4 M: `: ^# N% R 本实验基于ARM+FPGA超mini款iCore4T双核心板,一步一步带你利用STM32CubeMx工具完成对通用定时器TIM3的基本配置,实现500ms的定时功能。$ q$ O8 N# C) c# m1 `; N( F 通过编写通用定时器中断回调函数的内容以实现对板载LED的定时控制; {+ l" o" l2 g0 G3 s" H, W/ I 7 K- a) `* e# C( ` 三、资料下载(实验源码+详细文档操作说明)4 |/ y0 F8 b( ~3 v! O) \* {0 ^ 1、源代码
5_timer.zip
(912.46 KB, 下载次数: 11)
|
【 逢7发帖赢大礼】1、利用CubeMX生成正点原子H7R7开发板的STM32CubeIDE工程
【STM32H735G-DK测评】ADC3+TIMER1+DMA 采样模拟信号
【STM32H735DK测评】Ethernet+lwip DHCP获取IP地址
STM32H743基于CubeMx5.0配置手册
【STM32H735G-DK测评】lvgl移植
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
【福利三:逢7发帖赢大礼】使用MPU6050模块、img_dsc、img_btn机制实现一些简单有趣的动画效果
【福利三:逢7发帖赢大礼】使用arc弧形拉条控件控制PWM舵机及使用SPI3接口操作NRF24L01模块进行无线通信
【福利三:逢7发帖赢大礼】调试nucleo-WBA65RI工程测试样板的一些心得
【福利三:逢7发帖赢大礼】lv_timer和BME680实现温度、湿度、气压数据读取
微信公众号
手机版
还有,建议取消 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 的外设来使用。8 V6 p" P& @6 b' ]
我有设计过一款 AGM FPGA + STM32L4 的开发板,就是这样的设计结构:FPGA 配置成 SPI 启动,接在 STM32 的 SPI 管脚上;STM32 同时负责通过 MCO 给 FPGA 提供时钟;两者的复位信号也是接在一起;另外在 STM32 挂了一片 QSPI 闪存来存放 FPGA 配置数据。" ~5 H7 O# \; q3 H" b! g6 P9 ?
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 由于没有现有驱动,需要用户或贵公司自行开发维护。# t" T, n- L1 `; g% P
5 O3 C8 t' U( ?& g+ }! @