新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 教你的安卓系统DragonBoard 410c也能识别 I2C光流传感器

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

作者:时间:2017-10-11来源:网络收藏

需要调用的模块

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

本文引用地址:http://www.eepw.com.cn/article/201710/365537.htm

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 {

@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//devices/-0下

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

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

cat in_illuminance0_input

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



评论


相关推荐

技术专区

关闭