【LabVIEW FPGA入门】使用CompactRIO进行SPI和I2C通信

        NI提供了 SPI and I2C Driver API:下载SPI and I2C Driver API - NI

        该API使用FPGA数字I / O线与SPI或I2C设备进行通信。

        选择数字硬件时,要考虑三个选项:

  • NI Single-Board RIO硬件可同时使用SPI和I2C驱动程序。
  • NI 9401 C系列模块与SPI驱动程序配合使用效果最佳。
  • NI 9402 C系列模块最适合I2C驱动程序。

         I2C通信要求设备即时将DIO线置于三态。如果没有外部硬件,9401将无法执行此操作。 NI因此建议将9402用于I2C通信。

        

        该示例已在 PXI-7854R 板上进行了测试,但我希望它也能在其他类似的板上工作(参见 I2C&SPI API 设备兼容性)。目标是使用 SPI 总线从两个温度传感器读取温度,并通过 I2C 总线从陀螺仪和加速度计获取数据。FPGA 托管 I2C 和 SPI 通用层的电路,每个命令均从主机 VI 发送。 

        在面包板上,一切都是这样接线的: 

        电源由 FPGA 引脚提供,电压为 3.3V。切勿忘记每条线上的上拉电阻(建议值:4.7k)。

 

        注意:在 ADXL 345 上,要激活 I2C:将 SDO 引脚接地。

        

硬件和软件要求

 传感器:

  • LM 74(温度传感器)x2
  • ADXL 345(加速度计)
  • MPU 6050(陀螺仪)

硬件:

  • PXI-7854R (FPGA)
  • PXIe-8135(Windows 7下的PXI控制器)
  • SCB-68

软件

  • LabVIEW 2018
  • FPGA模块
  • I2C&SPI API(VIPM 上提供:I2C&SPI API) 
  • R系列驱动程序(2018版)

实施或执行代码的步骤

首先,使用不同的传感器构建电路,并通过 SCB-68 将它们连接到 FPGA。如果您使用相同的硬件,我建议您使用以下引脚:

SCB-68 针

FPGA引脚

面包板引脚

67

连接器1/DIO37

SDA

33

连接器1/DIO36

SCL

32

连接器1/DIO24

味噌

65

连接器1/DIO33

时钟时钟

31

连接器1/DIO32

抽烟

63

连接器1/DIO29

CS0

29

连接器1/DIO28

CS1

57

连接器1/DIO22

3.3V

23

接地

接地

 

电路示例

 

完成后,打开项目。

项目你如果不使用相同的设备,则需要重新配置FPGA IO:打开FPGA和VI主FPGA.vi

然后,修改您在 FPGA 上选择的引脚的 IO。

配置 SPI 引脚。

配置 I2C 引脚。

注意:您可以看到我修改了 FPGA 引脚的名称,以使程序更易于阅读。 

 

重新配置引脚后,重新编译 FPGA。完成后,您可以运行 VI Final_main.vi。 

final_main.vi

注意:要对 FPGA 进行编程,您只需将 I2C Engine.vi 拖放到 FPGA 代码上即可。它将为您制作整个通用层。

使用I2C Engine.vi避免复杂的FPGA编程。您可以为 SPI 执行此操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/237174.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LINUX网络

一、网络配置命令 1.1 ifconfig 命令功能ifconfig默认显示活动的显卡ifconfig -a显示所有的网卡ifconfig 网卡名称只显示前面的网卡信息ifconfig 网卡 down/ifdown 网卡关闭网卡ifconfig 网卡 up/ifup 网卡开启网卡ifconfig ens33:0 IP地址/子网掩码设置虚拟网卡 TYPEEthernet…

如何使用创建时间给文件重命名,简单的批量操作教程

在处理大量文件时,有时要按照规则对文件重命名,根据文件的创建时间来重命名。那如何批量操作呢?现在一起来看云炫文件管理器如何用文件的创建时间来批量重命名。 按创建时间重命名文件的前后对比图。 用创建时间批量给文件重命名的步骤&…

P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布————C++

目录 [NOIP2014 提高组] 生活大爆炸版石头剪刀布题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示 解题思路Code调用函数的Code(看起来简洁一点)运行结果 [NOIP2014 提高组] 生活大爆炸版石头剪刀布 …

人工智能_机器学习092_使用三维瑞士卷数据_利用分层聚类算法进行瑞士卷数据三维聚类---人工智能工作笔记0132

然后我们使用分层聚类算法来对我们导入的瑞士卷数据进行聚类 agg =AgglomerativeClustering(n_clusters = 6,linkage = ward) 可以看到这里我们使用的,聚类距离计算用的是,ward这种,最小化簇内方差的形式,l进行聚类对吧 可以看到这个linkage参数有好几个选择对吧,是之前我们讲过…

【Go】excelize库实现excel导入导出封装(三),基于excel模板导出excel

前言 大家好,这里是符华~ 关于excelize库实现excel导入导出封装,我已经写了两篇了,我想要的功能基本已经实现了,现在还差一个模板导出,这篇文章就来讲讲如何实现用模板导出excel。 前两篇: 【Go】excel…

Redis原理篇(Dict的收缩扩容机制和渐进式rehash)

Dict(即字典) Redis是一种键值型数据库,其中键与值的映射关系就是Dict实现的。 Dict通过三部分组成:哈希表(DictHashTable),哈希节点(DictEntry),字典(Dict&#xff09…

JAVA静态引擎企业网站源码带文档

JAVA静态引擎企业网站源码带文档 系统介绍: 1.网站后台采用主流的 SSM 框架 jsp JSTL,网站前台采用freemaker静态化模版引擎生成html5 2.因为是生成的html,无需重复读取数据库,所以访问速度快,轻便,对服务器…

group by 查询慢的话,如何优化?

1、说明 根据一定的规则,进行分组。 group by可能会慢在哪里?因为它既用到临时表,又默认用到排序。有时候还可能用到磁盘临时表。 如果执行过程中,会发现内存临时表大小到达了上限(控制这个上限的参数就是tmp_table…

vue中使用js-doc

安装依赖 安装vue-template-compiler npm install ​vue-template-compiler​ 安装minami npm install minami 安装js-doc npm install js-doc 根目录下创建 .jsdoc.conf.json 内容: {"tags": {"allowUnknownTags": true,// 指定所用词…

LeetCode264. 丑数 II(相关话题:多重指针动态规划)

题目描述 给你一个整数 n ,请你找出并返回第 n 个 丑数 。丑数 就是质因子只包含 2、3 和 5 的正整数。 示例 1: 输入:n 10 输出:12 解释:[1, 2, 3, 4, 5, 6, 8, 9, 10, 12] 是由前 10 个丑数组成的序列。示例 2&am…

给Flutter + FireBase 增加 badge 徽章,App启动器 通知红点。

在此之前需要配置好 firebase 在flutter 在项目中。(已经配置好的可以忽略此提示) Firebase 配置教程:flutter firebase 云消息通知教程 (android-安卓、ios-苹果)_flutter firebase_messaging ios环境配置-CSDN博客 由于firebase 提供的消息…

数据分享|纯净音自然多轮对话数据集——语音大模型

在过去的一年里,大语言模型一路高歌猛进,让人惊艳的产品不断被推出。语音大模型也迎来突破,其中就包括还原度越来越高的声音复刻技术。 优秀的语音复刻性能离不开高质量的训练数据支撑。语音大模型构建需要大量的自然数据,尽可能…

myql进阶-一条查询sql在mysql的执行过程

目录 1. 流程图 2. 各个过程 2.1 连接器 2.2 分析器 2.3 优化器 2.4 执行器 2.5 注意点 1. 流程图 2. 各个过程 假设我们执行一条sql语句如下: select * from t_good where good_id 1 2.1 连接器 首先我们会和mysql建立连接,此时就会执行到连接…

世邦spon IP网络对讲广播系统任意文件上传漏洞

产品介绍 世邦通信IP网络对讲广播系统采用领先的IPAudio™技术,将音频信号以数据包形式在局域网和广域网上进行传送,是一套纯数字传输系统。 漏洞描述 spon IP网络对讲广播系统存在任意文件上传漏洞,攻击者可以通过构造特殊请求包上传恶意后门文件,从…

Linux环境之Ubuntu安装Docker流程

今天分享Linux环境之Ubuntu安装docker流程,Docker 是目前非常流行的容器,对其基本掌握很有必要。下面我们通过阿里云镜像的方式安装: 本来今天准备用清华大学镜像安装呢,好像有点问题,于是改成阿里云安装了。清华安装…

SpringBoot之优化高并发场景下的HttpClient并提升QPS

HttpClient优化思路 使用连接池(简单粗暴) 长连接优化(特殊业务场景) httpclient和httpget复用 合理的配置参数(最大并发请求数,各种超时时间,重试次数) 异步请求优化&#xff0…

Qt/QML编程学习之心得:slider(34)

滑条slider,有时也成为进度条progressbar,在GUI界面中也是经常用到的。 import QtQuick 2.9 import QtQuick.Controls 2.0 import QtQuick.Layouts 1.2ApplicationWindow {id:rootvisible: truewidth: 1920height: 720//title: qsTr("Hello World&q…

【操作系统】在阅读论文:OrcFS: Orchestrated file system for flash storage是需要补充的基础知

在阅读论文:OrcFS: Orchestrated file system for flash storage是需要补充的基础知识 这篇论文是为了解决软件层次之间的信息冗余问题 To minimize the disk traffic, the file system buffers the updates and then flushes them to the disk as a single unit, …

鸿蒙开发环境搭建-高频环境问题解决

1.Node版本问题 由于SDK的部分工具依赖Node.js运行时,推荐使用配套API版本的Node.js,保证工程的兼容性。 匹配关系见下表: API LevelNode.js支持范围API Level≤914.x(≥14.19.1)、16.xAPI Level>914.x&#xff0…

计算机msvcp140.dll丢失如何解决,分享3个简单有效的方法

在计算机系统运行过程中,用户有时会遇到一个常见的错误提示——msvcp140.dll文件缺失,这一问题的发生往往会导致部分软件无法正常启动或运行。“针对计算机系统中出现的msvcp140.dll缺失问题,小编将详尽阐述并探讨5种有效的解决策略。每一种方…