Beaglebone Black – 连接 GY 您所在的位置:网站首页 怎么祛斑最安全可靠呢 Beaglebone Black – 连接 GY

Beaglebone Black – 连接 GY

2023-03-25 02:38| 来源: 网络整理| 查看: 265

这次用 SPI。BBB 有两套 SPI 接口可用,两套都是默认 disable,需要用 overlay 方式启用,即:

echo BB-SPIDEV0 > /sys/devices/bone_capemgr.9/slots

image

我的 BBB 当前配置当前配置

/opt/source/Userspace-Arduino/overlay/BB-SPI0-01-00A0.dts

/dts-v1/; /plugin/;

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

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

    fragment@0 {         target = ;         __overlay__ {             spi0_pins_s0: spi0_pins_s0 {                 pinctrl-single,pins = <                   0x150 0x30  /* spi0_sclk, INPUT_PULLUP | MODE0 */                   0x154 0x30  /* spi0_d0, INPUT_PULLUP | MODE0 */                   0x158 0x10  /* spi0_d1, OUTPUT_PULLUP | MODE0 */                   0x15c 0x10  /* spi0_cs0, OUTPUT_PULLUP | MODE0 */                 >;             };         };     };

    fragment@2 {         target = ;         __overlay__ {              #address-cells = ;              #size-cells = ;

             status = "okay";              pinctrl-names = "default";              pinctrl-0 = ;

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

 

说明书第三十页,BMP280 支持 Mode 00 和 11,自动选的。可三线或四线连接。

image

dts 档内可见,当前就是 mode 0,可以直接连 BMP280了。

SPI 接线 – BMP280

原理图在上一篇博文,从图可以得知,BMP280 的片选是 CSB,NCS 是九轴 MPU9250 的片选引脚。

DSC_0003(3)

我那很烂的焊接,锡明显过多,烙铁温度过高,家里没洗板水,脏兮兮的。SPI0 的接线如下:

BBB GY-91 说明 P9_1 GND 地 P9_3 3V3 电源 P9_22 SCL 时钟 P9_17 CSB 片选 P9_18 SDA MOSI P9_21 SA0 MISO

启用 SPI0 :

echo BB-SPIDEV0 > /sys/devices/bone_capemgr.9/slots

然后在 /dev 就会出现了:

image

spidev1.0 代表总线号 1 片选号 0。

SPI 读取 BMP280 的 ID Register 值

image

image

注意事项如上图,图片截取自 BMP280 Datasheet,BMP280 的 SPI Read 方式从 BBB 发出的一个 byte 是 Control byte,Control byte 的 bit 7 用来控制读写,地址是后面余下的 7 个 bits。上图Control byte 后面的 Data byte 是接收的,比如我四线情况,它在 MISO 出现的,上图这样表达比较难理解……。

看一下时序图,看这个我比较好理解一些:

image

通讯过程中片选 pull down。

毕竟主角是九轴,BMP280温度气压就快速试一次,试试而已。C 代码。

有好几段小插曲,我首先想用 Python,易写易改,找到了SPIDEV,可是无论如何都无法用双工连,最终由于时间关系,放弃了。PY-SPIDEV见以此链接:

https://pypi.python.org/pypi/spidev 。后来改用 C,各种百度FQ再 Google,多半是 Arduino 和用上 Adafruit 的类库,看到各种 Digital Write,最后也放弃了。最后直接用 linux/spi/spidev 自己参考一下别人就直接写。

#include #include #include #include #include #include #include char buf[1]; char buf2[10]; struct spi_ioc_transfer xfer[2]; int spi_init(char filename[40]) { int file; __u8 mode = 0; __u8 lsb = 0; __u8 bits = 8; __u32 speed = 10000000; if ((file = open(filename,O_RDWR)) < 0) { printf("Failed to open the bus."); exit(1); } if (ioctl(file, SPI_IOC_WR_MODE, &mode)


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有