当前位置:首页 > 硬件 > 树莓派 > 【硬件】BeagleBone Black C版 SPI的使用

【硬件】BeagleBone Black C版 SPI的使用

原创文章,转载请注明出处:http://www.datouinfo.com/?p=1127

因为需要使用的陀螺仪接口是SPI的,所以必须要使用BBB的SPI接口。查了很多资料,网上关于BBB的SPI的资料很少,而且很多使用方法自己都实验了一下,都有问题,经过自己的摸索,终于成功,记录于下,仅供才考。BBB使用的是中国版C版。默认安装的是Debian。

首先我们需要在手册中查找SPI的管脚图。

100

上图即为我们要使用的SPI1.

在任意目录下新建BB-SPI1-01-00A0.dts文件。复制下面的内容到文件中。

/dts-v1/;
/plugin/;

/* SPI1 */
/* D1 Output and D0 Input */

/ {
    compatible = "ti,beaglebone", "ti,beaglebone-black";

    /* identification */
    part-number = "spi1mux";

    fragment@0 {
        target = <&am33xx_pinmux>;
        __overlay__ {
            spi1_pins_s0: spi1_pins_s0 {
                        pinctrl-single,pins = <
                                0x190 0x33      /* mcasp0_aclkx.spi1_sclk, INPUT_PULLUP | MODE3 */
                                0x194 0x33      /* mcasp0_fsx.spi1_d0, INPUT_PULLUP | MODE3 */
                                0x198 0x13      /* mcasp0_axr0.spi1_d1, OUTPUT_PULLUP | MODE3 */
                                0x19c 0x13      /* mcasp0_ahclkr.spi1_cs0, OUTPUT_PULLUP | MODE3 */
                >;
            };
        };
    };

    fragment@1 {
        target = <&spi1>;
        __overlay__ {

             #address-cells = <1>;
             #size-cells = <0>;
             status = "okay";
             pinctrl-names = "default";
             pinctrl-0 = <&spi1_pins_s0>;

             spidev@1 {
                 spi-max-frequency = <24000000>;
                 reg = <0>;
                 compatible = "linux,spidev";
            };
        };
    };
};

保存,退出。
然后执行下面的语句。
dtc -O dtb -o BB-SPI1-01-00A0.dtbo -b 0 -@ BB-SPI1-01-00A0.dts

然后复制生成的文件到 /lib/firmware/目录下。

cp BB-SPI1-01-00A0.dtbo /lib/firmware/
然后再执行:
echo BB-SPI1-01 > /sys/devices/bone_capemgr.*/slots
OK,这时我们进入/dev目录中就会发现比原来多了一个设备 spidev1.0,
说明device tree配置没有问题,该设备已成功加载。
下面测试spi。使用自发自收的方式测试。将BBB的左侧IO口的29和30连接起来。
测试程序使用的是linux自带的一个spidev_test.c程序。
下载地址是 https://www.kernel.org/doc/Documentation/spi/。
然后编译该程序,如果出错,SPI_TX_QUAD等参数没有声明,则可以下载:
https://raw.githubusercontent.com/raspberrypi/linux/rpi-3.10.y/Documentation/spi/spidev_test.c
编译成功之后运行./spidev_test -D /dev/spidev1.0,如果出现下面的结果。

spi mode: 0

bits per word: 8

max speed: 500000 Hz (500 KHz)

FF FF FF FF FF FF

40 00 00 00 00 95

FF FF FF FF FF FF

FF FF FF FF FF FF

FF FF FF FF FF FF

DE AD BE EF BA AD

F0 0D

则增们SPI驱动安装成功,如果全是FF,则还没有问题。祝你成功。

然后我们对spidev_test.c程序做相应的修改,就可以自己使用了。

另外D0和D1的输入输出是可以交换的,具体参看:

http://elinux.org/BeagleBone_Black_Enable_SPIDEV#SPI1_D0_Output_and_D1_Input。
原创文章,转载请注明出处:http://www.datouinfo.com/?p=1127
 
  • «
  • »
  • 作者:
    除非注明,本文原创:大头资讯网,欢迎转载!转载请以链接形式注明本文地址,谢谢。
    原文链接:http://www.datouinfo.com/?p=1127

    【硬件】BeagleBone Black C版 SPI的使用》有 2 条评论

    1. 用户5580234383说道:

      大神BBB用spi的人的确很少,我现在正在用BBB的硬件SPI读取惯导数据其中包括读陀螺仪的数据,不过现在还很迷茫,大神能分享一下您编写的代码吗?这里先感谢大神了!