用户工具

站点工具


基于spi总线的arm与fpga通信实验

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
上一修订版 两侧同时换到之后的修订记录
基于spi总线的arm与fpga通信实验 [2020/07/02 18:27]
zgf [四、 代码讲解]
基于spi总线的arm与fpga通信实验 [2020/07/02 18:38]
zgf [三、 实验原理]
行 39: 行 39:
   * SPI总线四种工作方式 SPI 模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果 CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设备时钟相位和极性应该一致。如图13-1所示   * SPI总线四种工作方式 SPI 模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果 CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设备时钟相位和极性应该一致。如图13-1所示
    
-图13-1+{{ :​icore4:​icore4_fpga_13_1.png?​direct |图13-1}}
 === 3.SPI通信指令表 === === 3.SPI通信指令表 ===
  
行 59: 行 59:
 === 4、本实验实现方式 === === 4、本实验实现方式 ===
   * 通过FPGA建立的SPI模块对外提供的SCLK、CS、MOSI、MISO接口与STM32的SPI相连接,Commix串口精灵与STM32通过串口连接,实现三者之间的通信。本实验中,Commix串口精灵向STM32发送数据,STM32的RXD端口接收数据,然后,通过TXD端口把数据发送至FPGA,STM32起到一个桥梁作用。程序运行后,FPGA定时向STM32发送数据,经过STM32发送至串口精灵显示出来。下图为实验原理图。   * 通过FPGA建立的SPI模块对外提供的SCLK、CS、MOSI、MISO接口与STM32的SPI相连接,Commix串口精灵与STM32通过串口连接,实现三者之间的通信。本实验中,Commix串口精灵向STM32发送数据,STM32的RXD端口接收数据,然后,通过TXD端口把数据发送至FPGA,STM32起到一个桥梁作用。程序运行后,FPGA定时向STM32发送数据,经过STM32发送至串口精灵显示出来。下图为实验原理图。
- +{{ :​icore4:​icore4_fpga_13_2.png?​direct&​700 |实验原理图}} ​
 ==== 四、 代码讲解 ==== ==== 四、 代码讲解 ====
   * 本实验基于ARM+FPGA构架,通过ARM首先发送查询ID指令,然后依次通过指令设置写数据的长度、写数据地址、读数据的长度、读数据的地址,然后对比写入数据和读出数据是否一致判断数据是否写入成功,从而基于SPI总线实现ARM与FPGA之间的通信。   * 本实验基于ARM+FPGA构架,通过ARM首先发送查询ID指令,然后依次通过指令设置写数据的长度、写数据地址、读数据的长度、读数据的地址,然后对比写入数据和读出数据是否一致判断数据是否写入成功,从而基于SPI总线实现ARM与FPGA之间的通信。
行 85: 行 85:
  temp_data <= {temp_data[31:​0],​data_in};​  temp_data <= {temp_data[31:​0],​data_in};​
  if(data_in == 8'd13)  if(data_in == 8'd13)
- begin +     ​begin 
-     ​data <= temp_data;​ +         ​data <= temp_data;​ 
- end+     ​end
  else ​  else ​
- begin +     ​begin 
-     ​data <= data; + data <= data; 
- end+     ​end
  end  end
  4'​d1,​4'​d2,​4'​d3,​4'​d4,​4'​d5,​4'​d6:​  4'​d1,​4'​d2,​4'​d3,​4'​d4,​4'​d5,​4'​d6:​
行 171: 行 171:
 图13-2 图13-2
 5、打开串口精灵,找到对应口打开,如下图。\\ ​ 5、打开串口精灵,找到对应口打开,如下图。\\ ​
-  +{{ :​icore4:​icore4_fpga_13_3.png?​direct |图13-3}}
-图13-3+
 6、打开KeilMDK开发环境,并打开实验工程。\\ ​ 6、打开KeilMDK开发环境,并打开实验工程。\\ ​
 7、将ARM程序下载至iCore4。\\ ​ 7、将ARM程序下载至iCore4。\\ ​
基于spi总线的arm与fpga通信实验.txt · 最后更改: 2022/03/22 10:29 由 sean