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 代码上即可。它将为您制作整个通用层。
文章来源:https://www.toymoban.com/news/detail-787470.html
使用I2C Engine.vi避免复杂的FPGA编程。您可以为 SPI 执行此操作。文章来源地址https://www.toymoban.com/news/detail-787470.html
到了这里,关于【LabVIEW FPGA入门】使用CompactRIO进行SPI和I2C通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!