在Raspberry Pi上包含bcm2853 lib

时间:2014-05-13 19:27:00

标签: c# dll raspberry-pi spi

我想在我的Raspberry上用C#启动SPI通信。 bcm2835 lib支持所需的命令,如:

  • bcm2835_spi_begin()
  • bcm2835_spi_end()

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

安装了RaspberryPiDotNet和bcm2835库。

可以使用GPIOMem命令控制GPIO引脚,该命令使用bcm2835库。

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

1 个答案:

答案 0 :(得分:5)

如何让SPI在Raspberry Pi上使用C#

这是一个完整的教程,如何让它工作:

  1. 安装Mono:

    sudo apt-get update
    sudo apt-get install mono-complete
    
  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/
    
  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/
    
  4. 删除未使用的文件和文件夹:
    使用此命令可以删除创建的文件夹和文件,但不要删除“gpio_csharp”:

    rm -r <folder>
    rm <file>
    
  5. 创建一个C#脚本:

    nano /home/pi/gpio_csharp/xxxxx.cs   //xxxxx is your filename
    CTRL + X     //For exit and save script
    
  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);
    
  7. 在代码中使用命令:
    现在您可以使用以下命令来使用SPI。示例在页面下方。

     spi_begin();
     spi_end();
     spi_transfer();
     spi_chipSelect();
     spi_setClockDivider();
     spi_setDataMode();
     spi_setChipSelectPolarity();
    


    示例:

        //SPI Try
        spi_setClockDivider(128);
        spi_setDataMode(0);
        spi_chipSelect(cs);
        spi_setChipSelectPolarity(cs, false);
        spi_begin();
        spi_transfer(0xAA);
        spi_end();