声明:本篇文章面向在已对SPI的四种时序有所了解的人
我们采用SPI3模式以及将FPGA作从机,STM32作主机的方式讲解,在STM32控制部分采用的是半双工模式,但其实半双工与全双工区别不大,
稍加修改即可
本片文章是接续上篇文章的,如果未浏览上一篇文章的,可以在此跳转SPI代码详解FPGA-verilog部分(FPGA+STM32)(一)
本部分代码相当于对SPI模块的一个驱动,从SPI模块中进出的数据都要经过spi_mp 这个模块这一层壳
模块工作流程:单片机先拉低cs_cmd,发送的命令dcmd送给sel,sel的值若是0 ~ 7则表明下一次的FPGA发送从输入口Din0 ~ Din7中选择,sel的值若是128 ~ 135则表明下一次的FPGA接收从输出口Dout0 ~ Dout7中选择。|这里的输入输出口是针对SPI模块来说的,因为spi模块接收的数据是要给FPGA其他模块用的,所以SPI模块从单片机中接收的数据送出去就叫做Dout口|
module spi_mp #(
parameter cmd_width = 8,
parameter data_width = 32
)
(
input clk,
input rstn,
input spi_scl,
input spi_sdi,
input spi_cs_cmd,
input spi_cs_data,
input [data_width - 1:0] Din0,
input [data_width - 1:0] Din1,
input [data_width - 1:0] Din2,
input [data_width - 1:0] Din3,
input [data_width - 1:0] Din4,
input [data_width - 1:0] Din5,
input [data_width - 1:0] Din6,
input [data_width - 1:0] Din7,
output spi_sdo,
output reg

本文档详细介绍了如何在SPI3模式下,使用STM32作为主机,FPGA作为从机进行通信。代码段展示了在Verilog中设计的SPI模块驱动,该模块根据输入的命令选择Din或Dout端口进行数据传输。在STM32的半双工模式下,数据通过spi_mp模块在FPGA的内部模块间传递。
最低0.47元/天 解锁文章
3508

被折叠的 条评论
为什么被折叠?



