芯路恒电子技术论坛

 找回密码
 立即注册
热搜: 合集
查看: 2595|回复: 0

【ACX720】使用SPI实现MCU与FPGA之间的数据交互

[复制链接]

该用户从未签到

59

主题

73

帖子

764

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
764
发表于 2023-4-18 11:07:32 | 显示全部楼层 |阅读模式

使用SPI实现MCU与FPGA之间的数据交互

简介

本案例基于ACX720开发板和STM32F103最小系统板,两块板子之间使用SPI协议进行通信,其中STM32作为主机,FPGA作为从机,STM32通过SPI接口对FPGA发送指令,并实现数据交换功能,兼具FPGA强大与MCU的灵活。

image.png

性能

MCU与FPGA之间使用SPI协议,SCK时钟频率最大可设置为36M,数据传输可达4MB每秒,已经足够在一些对速度要求没那么高的场景使用了。


备注:这里的传输速度主要受限于STM32F103的性能,换用其它性能更好的MCU可以提高数据传输速度。

结构框图

image.png

在上图中展示了整个系统的结构,由STM32作为主控制器,FPGA作为它的一个外设,可通过SPI接口控制和交换数据。在本例中,STM32可以通过SPI接口连续读写FPGA内部DPRAM的任意地址,也可以通过SPI接口访问FPGA内部的串口功能相关的寄存器,将DPRAM中的任意数据通过FPGA的串口连续发送出去。

用户可以通过修改上图中的“uart_peripheral”来实现其它功能,例如ADC数据采集、摄像头数据采集、可调DDS波形输出、以太网口数据简单收发等,也可以将多种外设搭配使用,实现更复杂的功能。受限于SPI的传输带宽,一些需要MCU参与但对速度要求较高的功能是无法实现的,而且STM32F103不支持跑Linux系统,如果需要高速传输数据或者要求跑Linux系统,还是建议使用内部带硬核的SOC芯片,例如Xilinx的Zynq系列。
https://item.taobao.com/item.htm?id=658673771255

功能框图

image.png

由上图可知,在该工程中,FPGA可以直接读写内部RAM和寄存器,而STM32可以通过SPI接口间接读写FPGA内部的RAM和寄存器,从而间接控制FPGA的UART外设。

用户可使用其它模块替换掉UART外设,以实现其它外设功能。

功能演示

首先STM32通过SPI接口读取FPGA内部RAM中的初始数据0~255(地址段为0x0000~0x00FF),为了方便展示将获取到的数据通过STM32自带的串口外设打印出来。这里实现了FPGA对内部RAM的写功能与STM32对FPGA内部RAM的读功能。

image.png

然后STM32会将一段连续数据0~254通过SPI接口写入FPGA的RAM(地址段为0x0F00~0x0FFE),再通过SPI接口从RAM里把这段数据读取回来,同样使用STM32自带的串口外设把这段数据打印出来。这里实现了STM32对FPGA内部RAM的读写功能。

image.png

最后STM32使用SPI接口控制FPGA内的UART寄存器,开启发送功能,从RAM(地址段为0x0F00~0x0FFE)中连续取出255个数据并使用UART外设发送出来。这里实现了STM32对FPGA内部寄存器的读写功能,以及FPGA对内部寄存器的读写功能。

image.png

附件

具体的说明文档和工程源码在这里,供大家下载学习

使用SPI实现MCU与FPGA之间的数据交互.pdf (1.51 MB, 下载次数: 265)

acx720_spi_control.rar (14.9 MB, 下载次数: 295)








回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|芯路恒电子技术论坛 |鄂ICP备2021003648号

GMT+8, 2024-5-6 01:49 , Processed in 0.112821 second(s), 34 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表