在Raspberry Pi上包含bcm2853 lib

cth*_*lhu 0 c# dll spi raspberry-pi

我想在我的Raspberry上使用C#开始SPI通信。bcm2835库支持所需的命令,例如:

  • bcm2835_spi_begin()
  • bcm2835_spi_end()
  • 等等

在C中,您必须执行,#include < bcm2835.h >但在C#using bcm2835;中不起作用。

RaspberryPiDotNet已安装,并且bcm2835库也已安装。

可以通过GPIOMem使用bcm2835库的命令来控制GPIO引脚。

C#如何使用bcm2835的SPI命令?网上的所有内容都适用于C或C ++。

cth*_*lhu 5

如何在Raspberry Pi上使SPI与C#一起使用

这是一个完整的教程,如何使其工作:

  1. 安装Mono:

    sudo apt-get update
    sudo apt-get install mono-complete
    
    Run Code Online (Sandbox Code Playgroud)
  2. 安装RaspberryPiDotNet:

    mkdir gpio_csharp
    git clone git://github.com/cypherkey/RaspberryPi.Net.git
    cd RaspberryPi.Net/RaspberryPiDotNet
    xbuild RaspberryPiDotNet.csproj
    cp bin/Debug/RaspberryPiDotNet.dll /home/pi/gpio_csharp/
    
    Run Code Online (Sandbox Code Playgroud)
  3. 安装bcm2835库:

    wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.36.tar.gz
    tar -zxf bcm2835-1.36.tar.gz
    cd bcm2835-1.36
    ./configure
    make
    sudo make check
    sudo make install
    cd src
    cc - shared bcm2835.o -o libbcm2835.so
    cp libbcm2835.so /home/pi/gpio_csharp/
    
    Run Code Online (Sandbox Code Playgroud)
  4. 删除未使用的文件和文件夹:
    使用此命令可以删除创建的文件夹和文件,但不能删除“ gpio_csharp”:

    rm -r <folder>
    rm <file>
    
    Run Code Online (Sandbox Code Playgroud)
  5. 创建一个C#脚本:

    nano /home/pi/gpio_csharp/xxxxx.cs   //xxxxx is your filename
    CTRL + X     //For exit and save script
    
    Run Code Online (Sandbox Code Playgroud)
  6. 在脚本中添加SPI命令:(
    将其添加到程序的“类”空间中)

    [DllImport("libbcm2835.so", EntryPoint = "bcm2835_spi_begin")]
    static extern void spi_begin();
    
    [DllImport("libbcm2835.so", EntryPoint = "bcm2835_spi_end")]
    static extern void spi_end();
    
    [DllImport("libbcm2835.so", EntryPoint = "bcm2835_spi_transfer")]
    static extern byte spi_transfer(byte val);
    
    [DllImport("libbcm2835.so", EntryPoint = "bcm2835_spi_chipSelect")]
    static extern byte spi_chipSelect(GPIOPins pin);
    
    [DllImport("libbcm2835.so", EntryPoint = "bcm2835_spi_setClockDivider")]
    static extern byte spi_setClockDivider(int val);
    
    [DllImport("libbcm2835.so", EntryPoint = "bcm2835_spi_setDataMode")]
    static extern byte spi_setDataMode(int val);
    
    [DllImport("libbcm2835.so", EntryPoint = "bcm2835_spi_setChipSelectPolarity")]
    static extern byte spi_setChipSelectPolarity(GPIOPins pin, bool activeHigh);
    
    Run Code Online (Sandbox Code Playgroud)
  7. 在代码中使用命令:
    现在,您可以使用以下命令来使用SPI。示例在页面下方。

     spi_begin();
     spi_end();
     spi_transfer();
     spi_chipSelect();
     spi_setClockDivider();
     spi_setDataMode();
     spi_setChipSelectPolarity();
    
    Run Code Online (Sandbox Code Playgroud)


    例:

        //SPI Try
        spi_setClockDivider(128);
        spi_setDataMode(0);
        spi_chipSelect(cs);
        spi_setChipSelectPolarity(cs, false);
        spi_begin();
        spi_transfer(0xAA);
        spi_end();
    
    Run Code Online (Sandbox Code Playgroud)