微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 教你的安卓系统DragonBoard 410c也能识别 I2C光流传感器

教你的安卓系统DragonBoard 410c也能识别 I2C光流传感器

时间:02-02 来源:互联网 点击:

需要调用的模块

本文所使用的I/O主要有如下三个部分

    I2C接口

    UART接口

    USB接口

需要使用的硬件外设如下

Grove Digital Light Sensor

上文中提到的UART转USB1.8v线

内核的定制

首先我们需要对内核进行重新配置,从而添加我们的设备驱动

重新编译内核

在96board官网下载我们的最新Android 5.1版本

官方提供的内核目前默认无法识别我们的I2C光传感器,因此我们需要在内核中重新编译并添加驱动

首先在官方网站下载Linux Android的BSP包,将其clone并编译

编译内核指令

首先切换到源目录下

进入build目录

Lunch msm8916_64-userdebug

启动kernel config:执行命令

Make-j8 kernelconfig

注:j8为电脑核心数目,取决于我们进行编译电脑的配置

接下来我们就可以在界面上看到如下图所示的界面了:

在kernel编译选项中选择TAOS TSL2560,TSL2562 and TSL2563 ambient light sensor

保存并从kernel configmenu中退出

如果我们在设备上添加了一个新驱动,那么我们需要在Makefile中做出更改,并在kernel/driovers中的Kconfig文件添加正确的路劲,从而能够追溯到正确的设备驱动Kconfig文件。 该步骤能够在kernel config 中添加新的入口,从而能够在config界面中进行选择,驱动文件需要添加到同样的目录中,与Kconfig文件以及Makefile文件一样

打开/kernel/arch/amd64/boot/dts/qcom/apq8016-sb.dtsi并添加如下的代码

&soc {

i2c@78b6000 {

tsl2561@29 { /* Grove digital light sensor */

compaTIble = "taos,tsl2561";

reg = <0x29>;

}

保存文件并运行如下命令:

Make –j8 booTImage

Boot.img将会在/out/target/product/msm8916_64/boot.img

78b6000是BLSP的地址,用于配置I2C通讯,我们将此传感器连接到I2C-0设备上

将kernel烧写到DragonBoard 410c上

在上电时按住按钮音量下键,我们可以将410c设置为fastboot模式。一旦进入fastboot模式,我们就可以使用命令行将boot.img烧写到410c中

fastboot flash boot boot.img

将DragonBoard 410c上的J8引脚连接到PCA9306传感器中

按如下连接方式:

PIN #37  VREF2 of PCA9306  VCC of grove light sensor

PIN #39   "-"on Bread Board

PIN #35   VREF1 of PCA9306

PIN #15 (I2C0_SCL)   SCL1 of PCA9306

PIN #17 (I2C0_SDA)   SDA1 of PCA9306

PCA9306 GND to "-"on Bread Board

VREF2 of PCA9306   VCC of Digital Light Sensor

SCL2 of PCA9306   SCL of Digital Light Sensor

SDA2 of PCA9306   SDA of Digital Light Sensor

"-" from Bread Board   GND of Digital Light Senso

连接UART转USB线到电脑上

PIN #11 UART1_TX

PIN #13 UART1_RX

PIN #1 GND

参考我的文章进行连接

测试硬件

根据如上的操作,我们已经可以在启动后检测到设备了

首先在kernel的trace中找到如下信息:

tsl2563 0-0029: model 5, rev. 0

如果你没有USB转UART,我们可以通过ADB进行登录

adb shell

su

dmesg

随着shell启动,我们进入到目录/sys/bus/i2c/devices/i2c-0下

我们可以看到设备0-0029,0x29表示的是传感器的I2C地址

cd /sys/bus/i2c/devices/i2c-0/0-0029/iio:device0

cat in_illuminance0_input

接下来我们就能看到作为输出的一个整数值,不断地遮挡或打光到传感器上,并执行 cat in_illuminance0_input 指令,我们就可以看到一个不断变化的光流值了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top