????????NI提供了?SPI and I2C Driver API:下載SPI and I2C Driver API - NI
? ? ? ? 該API使用FPGA數(shù)字I / O線與SPI或I2C設備進行通信。
????????選擇數(shù)字硬件時,要考慮三個選項:
- NI Single-Board RIO硬件可同時使用SPI和I2C驅動程序。
- NI 9401 C系列模塊與SPI驅動程序配合使用效果最佳。
- NI 9402 C系列模塊最適合I2C驅動程序。
?????????I2C通信要求設備即時將DIO線置于三態(tài)。如果沒有外部硬件,9401將無法執(zhí)行此操作。 NI因此建議將9402用于I2C通信。
????????
????????該示例已在 PXI-7854R 板上進行了測試,但我希望它也能在其他類似的板上工作(參見 I2C&SPI API 設備兼容性)。目標是使用 SPI 總線從兩個溫度傳感器讀取溫度,并通過 I2C 總線從陀螺儀和加速度計獲取數(shù)據(jù)。FPGA 托管 I2C 和 SPI 通用層的電路,每個命令均從主機 VI 發(fā)送。?
????????在面包板上,一切都是這樣接線的:?
????????電源由 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版)
實施或執(zhí)行代碼的步驟
首先,使用不同的傳感器構建電路,并通過 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 代碼上即可。它將為您制作整個通用層。
文章來源:http://www.zghlxwxcb.cn/news/detail-787470.html
使用I2C Engine.vi避免復雜的FPGA編程。您可以為 SPI 執(zhí)行此操作。文章來源地址http://www.zghlxwxcb.cn/news/detail-787470.html
到了這里,關于【LabVIEW FPGA入門】使用CompactRIO進行SPI和I2C通信的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!