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

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

需要调用的模块

    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为电脑核心数目,取决于我们进行编译电脑的配置

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

教你的安卓系统DragonBoard 410c也能识别 I2C光流传感器,这里写图片描述,第2张

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

教你的安卓系统DragonBoard 410c也能识别 I2C光流传感器,这里写图片描述,第3张

保存并从kernel configmenu中退出

教你的安卓系统DragonBoard 410c也能识别 I2C光流传感器,这里写图片描述,第4张

如果我们在设备上添加了一个新驱动,那么我们需要在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 指令,我们就可以看到一个不断变化的光流值了。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2545702.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-05
下一篇 2022-08-05

发表评论

登录后才能评论

评论列表(0条)

保存