资料介绍
描述
概述
目标是使用 Raspberry PI 零(或 2W)和 RealTime Linux 补丁运行飞行计算机的 BaseFlight 修改版本。其中一个问题是生成 OneShot 协议以从 BaseFlight 控制 ESC(电机控制器)。那么,为什么不使用 FPGA 来生成 OneShot 信号,而不是使用 PI 上的资源来生成信号。
Buildroot 用于创建带有实时补丁 Linux 内核的发行版。(如果您需要有关如何操作的更多信息,请告诉我)
该项目不详细介绍如何逐步创建 Vivado 项目和使用 iverlog 验证设计。请在下面评论您想要更多详细信息,我会添加它。
如何与FPGA通信
PI有SPI、TTL串口、I2C、USB。该协议需要快速和简单,因此选择 SPI 作为物理传输。下一个问题是如何向FPGA发送简单的读写命令并进行处理。此外,如果有一种方法可以添加功能/外设,那就太好了。
FPGA通信设计
为了简单起见,让我们使用硬件总线,它有一个定义的方式来访问不同的内存块,例如:
- 地址即32位:访问不同的寄存器或设备
- 数据总线读写寄存器
Wishbone是为本设计选择的简单总线。 AXI Lite 本来可以用的,也许下次吧。AXI用于ARM处理器,规格详细,例子多。
下图是FPGA系统的基本框图:
FPGA代码和外部库
下面提供了代码。
SPI 接口来自这里。Wishbone 库来自这里。MUX 是使用 wishbone 库中的 python 脚本生成的。
复杂性在于 Wishbone 库的使用方式,它使用两个 AXIS 端口,一个传输端口和一个接收端口。需要创建胶合逻辑以连接 SPI 接口和叉骨 AXIS 接口。
控制 LED 的示例
一种简单的测试方法是不使用 MUX 并将 LED 外围设备直接连接到 Wishbone 库。如下所示:
映射 FPGA 引脚
随板提供的约束文件被修改为映射 SPI 引脚、MISO、MOSI、CLK 和 CLK。此外,四个 LED 与 RGB LED 一起映射。
使用PI测试FPGA
spidev0.1 即 SPI0 MISO、SPI0 MOSI、SPI0 CLK 和 CE1 连接到 FPGA。
下面展示的是如何使用终端发送SPI字节序列来读写字节流。这是一个例子:
# printf '\xA2\x1\x2\x3\x0\x0\x4\x11\x22\x33\x44\0' | spi-pipe -m 0 -s 1000000 -d /dev/spidev0.1 | hexdump -C
00000000 44 44 a4 01 02 03 00 00 04 04 04 04 |DD..........|
0000000c
#
0xA2:是写命令字节
0x01020300 是要写入的地址
0x0004 是要写入的字节数
0x44332211 是要写入的字节(注意字节是颠倒的)
读书:
# printf '\xA1\x1\x2\x3\x0\x0\x4\x0\x0\x0\x0\0\0' | spi-pipe -m 0 -s 100000 -d /dev/spidev0.1 | hexdump -C
00000000 04 04 a3 01 02 03 00 00 04 11 22 33 44 |.........."3D|
0000000d
#
返回的是,0x04,0x04 是两个字节,是垃圾。接下来的字节是回复:
0xA3 是对读取的回复
0x01020300是地址
0x00 0x04 是长度
0x44332211 是写入的数据
使用 iverlog 进行单元测试
有几个测试平台,用于验证 pwm 解码的 tb_pwmdecoder_wb.v 应该使用 100Mhz 时钟。tb_spiwishbone.v 将 SPI 数据发送到读写寄存器。
证实
下面显示的是显示写命令序列的逻辑分析仪轨迹。在项目中有一个 python 脚本可以通过 spidev 设置 LED。SPI 频率为 3.2Mhz。在 PI 上下载ledTester.py并发出以下命令。
# python ledTester.py
该脚本将尽快编写命令。从跟踪中,命令以 2.6Khz 的速率发送。
- 官方Raspberry Pi零W概述和案例
- 通过USB对Raspberry Pi进行编程
- Raspberry Pi、相机和SPI屏幕开源分享
- 如何在Raspberry Pi零2W上阻止带有Pi孔的广告
- Raspberry Pi零W机械开关防护罩
- 在Raspberry Pi零上安装Cam Web界面
- 通过Raspberry Pi的物联网有源蜂鸣器
- 通过Raspberry Pi的简单物联网按钮教程
- Raspberry Pi零Dynamixel帽子
- Raspberry Pi零W机械开关防护罩设计
- Raspberry Pi零机械开关防护罩设计
- Raspberry pi零W音频输入/输出和电源接口
- Raspberry Pi零GPS和相机帽开源分享
- 《爱上Raspberry Pi》中译版-电子书籍.pdf 0次下载
- raspberry_pi各版本差别 0次下载
- 基于Raspberry Pi 5的蜂窝物联网项目 1027次阅读
- 使用Raspberry Pi Pico W和MicroPython开发物联网应用 1673次阅读
- 用于测试项目的4个最佳树莓派Raspberry Pi模拟器 5985次阅读
- 如何使用Raspberry Pi使热水浴缸变得智能和远程操作 1813次阅读
- 如何通过Raspberry Pi设置CE电流监视器 2124次阅读
- 基于树莓派产品 Raspberry Pi微控制器板的优缺点 2710次阅读
- 基于Raspberry Pi Pico开发先进的家庭自动化系统 2850次阅读
- 基于FONA通过UART与Raspberry Pi进行通讯的方案介绍 2122次阅读
- 基于在Raspberry Pi Zero W的基础上实现设计微型机器人 2106次阅读
- 微雪电子ZeroW| Raspberry Pi ZeroW主板简介 2429次阅读
- 微雪电子Raspberry Pi 3 Model主板简介 2873次阅读
- 微雪电子Raspberry Pi 3 Model扩展板简介 1512次阅读
- 利用Raspberry Pi构建存储和虚拟化时间序列数据 884次阅读
- 一文了解Raspberry Pi 4各项性能跑分 2.9w次阅读
- 视觉享受!用Raspberry Pi实现圣诞树灯光秀 8127次阅读
下载排行
本周
- 1使用单片机实现七人表决器的程序和仿真资料免费下载
- 2.96 MB | 44次下载 | 免费
- 2联想E46L DAOLL6笔记本电脑图纸
- 1.10 MB | 2次下载 | 5 积分
- 3MATLAB绘图合集
- 27.12 MB | 2次下载 | 5 积分
- 4PR735,使用UCC28060的600W交错式PFC转换器
- 540.03KB | 1次下载 | 免费
- 5UCC38C42 30W同步降压转换器参考设计
- 428.07KB | 1次下载 | 免费
- 6DV2004S1/ES1/HS1快速充电开发系统
- 2.08MB | 1次下载 | 免费
- 7模态分解合集matlab代码
- 3.03 MB | 1次下载 | 2 积分
- 8美的电磁炉维修手册大全
- 1.56 MB | 1次下载 | 5 积分
本月
- 1使用单片机实现七人表决器的程序和仿真资料免费下载
- 2.96 MB | 44次下载 | 免费
- 2UC3842/3/4/5电源管理芯片中文手册
- 1.75 MB | 15次下载 | 免费
- 3DMT0660数字万用表产品说明书
- 0.70 MB | 13次下载 | 免费
- 4TPS54202H降压转换器评估模块用户指南
- 1.02MB | 8次下载 | 免费
- 5STM32F101x8/STM32F101xB手册
- 1.69 MB | 8次下载 | 1 积分
- 6HY12P65/HY12P66数字万用表芯片规格书
- 0.69 MB | 6次下载 | 免费
- 7华瑞昇CR216芯片数字万用表规格书附原理图及校正流程方法
- 0.74 MB | 6次下载 | 3 积分
- 8华瑞昇CR215芯片数字万用表原理图
- 0.21 MB | 5次下载 | 3 积分
总榜
- 1matlab软件下载入口
- 未知 | 935119次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420061次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233084次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191367次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183335次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81581次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73807次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65987次下载 | 10 积分
评论
查看更多