| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 嵌入式 -> 三大通信协议(3)SPI续——基于flash的读操作 -> 正文阅读 |
|
|
[嵌入式]三大通信协议(3)SPI续——基于flash的读操作 |
一、实例????? 将任意一个程序下载到FPGA的外部flash芯片中,编写Verilog程序,通过FPGA读取flash中的内容,并将读取的内容通过串口发送出来。本篇是接着上一篇实例,继续完成剩余部分。 ????? 下图是整个系统的模块框图:
??? 上一篇文章中已经完成了spi_read模块程序的编写,剩余的按键检测消抖模块和串口发送模块分别在“三大通信协议(2)IIC 续”、“三大通信协议(1)UART”两篇文章中都有说明,这里直接给出程序代码。
接下来给出顶层代码
? ? ? 接下来进行上板测试验证。首先将之前测试的数码管显示实验中生成的output_file.jic文件下载到开发板中(该文件会在评论处给出),为了对比最后读出的数据,这里将output_file.jic文件后缀名改为.bin,为的是能够在多功能串口调试助手中能够打开该文件,打开后的output_file.bin如下图所示(都是以十六进制显示):前边的数据是帧头数据,中间蓝色的是Flash中存储的程序的数据,后边的数据是帧尾数据。
? ? ? ?接下来将程序下载到开发板中。(注意:1.将spi_read.v文件中的扇区地址、页地址、字节地址都改为0,为了对比结果是否正确;2.将spi_read.v文件中data <= {data[6:0],miso};改为data <= {miso,data[7:1]};因为miso口输入的数据是先进低位再进高位) ? ? ? 在Signal Tap Logic Analyzer中抓取的信号如下图所示:
? ? ? 对比蓝色框中从Flash中读出的数据与上述output_file.bin文件中的数据,可以发现,数据一致,说明读取正确性。 ? ? ? 连接上串口调试助手,将读取到的数据通过串口打印出来,打印结果如下图所示:
?对比上述结果发现,数据完全一致,说明串口发送的数据准确无误。 ?总结? ? ? ? 到此为止,三大数据通信协议告一段落。UART、I2C、SPI三种通信协议目前已经十分成熟,虽然协议内容相对比较简单,但是仍被广泛使用,足以见证其重要性。建议FPGA初学者反复揣摩其中的内涵。本人目前正在做的项目里就有很多涉及到SPI通信的知识,比如通过FPGA配置AD芯片,FPGA向AD芯片发送信息指令时,很多都遵循SPI的通信协议。其实深入研究会发现,很多通信协议都大同小异,实质就是发端与收端按照规定的方式进行通信,当然这些通信的协议完全可以由我们人为规定,只需将发端和收端配置成我们自己拟定的通信协议,然后进行数据的收发。例如,在FPGA与STM32两个主控芯片之间进行数据通信时,我们就可以按照自己拟定的通信方式:STM32作为通信的主机,FPGA作为通信的从机,首先FPGA向STM32发送一个数据传输的起始信号,STM32接收到该信号后进入中断,然后向FPGA发送读取数据的使能信号和时钟信号,FPGA根据STM32发送过来的使能信号和时钟信号,将要发送的数据传给STM32。 ? ? ? ? 初次创作,难免文章中存在错误,希望读者能够及时纠正并给予私信,望大家共同进步! |
|
|
| 嵌入式 最新文章 |
| 基于高精度单片机开发红外测温仪方案 |
| 89C51单片机与DAC0832 |
| 基于51单片机宠物自动投料喂食器控制系统仿 |
| 《痞子衡嵌入式半月刊》 第 68 期 |
| 多思计组实验实验七 简单模型机实验 |
| CSC7720 |
| 启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
| STM32初探 |
| STM32 总结 |
| 【STM32】CubeMX例程四---定时器中断(附工 |
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年12日历 | -2025/12/1 5:04:23- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |