前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >树莓派I2C通过Shell操作FDC2214[通俗易懂]

树莓派I2C通过Shell操作FDC2214[通俗易懂]

作者头像
全栈程序员站长
发布2022-09-01 16:33:40
5280
发布2022-09-01 16:33:40
举报

大家好,又见面了,我是你们的朋友全栈君。

陈拓 chentuo@ms.xab.ac.cn 2020/07/21-2020/07/29

FDC2214是Ti公司的一款低功耗高精度的电容传感器芯片。本文讲述用树莓派Linux Shell配置和操作FDC2214,可以快速熟悉并进行原型开发。

1. 树莓派换源

为了加快所需软件的下载,我们需要先换源。

  • 首先查看系统版本:lsb_release -a
树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]
  • 修改软件更新源 /etc/apt/sources.list

sudo nano /etc/apt/sources.list

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

在下面的语句前面加#注释掉这行:

#deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi

可以用阿里源:

deb http://mirrors.aliyun.com/raspbian/raspbian/ buster main contrib non-free rpi

也可以用科大源:

deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

然后按Ctrl + O存盘,Ctrl + X退出。

  • 修改系统更新源/etc/apt/sources.list.d/raspi.list

sudo nano /etc/apt/sources.list.d/raspi.list

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

在下面的语句前面加#注释掉这行:

#deb http://archive.raspberrypi.org/debian/ buster main

在这里可以添加阿里的源:

deb http://mirrors.aliyun.com/archive.raspberrypi.org/debian/ buster main ui

也可以里用科大源:

deb http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/ buster main ui

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]
  • 同步更新源

sudo apt-get update

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

换源完成。

2. 启用树莓派I2C

树莓派GPIO2和I2C1_SDA,GPIO3和I2C1_SCL是复用的,默认功能是GPIO,如果要使用I2C需要执行如下命令进行树莓派配置,启用I2C功能:

sudo raspi-config

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

选择Interfacing Options -> I2C -> yes 启动i2C内核驱动。

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

不用重启。

运行lsmod命令查看i2c是否启动:

lsmod | grep i2c

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

若没有启动i2c内核驱动,可以试下添加如下配置文件,运行如下命令打开配置文件。

sudo nano /etc/modules

增加以下两行并保存退出。

i2c-bcm2708

i2c-dev

需要重启树莓派。

3. 硬件连接

  • 树莓派引脚
树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]
  • FDC2214引脚

下面左图为芯片引脚,芯片还需要配一些外围电路,可以在网上购买现成的模块。右图为模块引脚。

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]
  • 接线对照表

树莓派第 5脚(I2C1_SCL)- FDC2214第2脚(SCL)

树莓派第 3脚(I2C1_SDA)- FDC2214第4脚(SDA)

树莓派第 9脚(GND) – FDC2214第6脚(ADDR)

树莓派第 7脚(GPIO4) – FDC2214第8脚(SD)

树莓派第11脚(GPIO17) – FDC2214第10脚(INTB)

树莓派第 6脚(GND) – FDC2214第12脚(GND)

树莓派第 1脚(3.3V) – FDC2214第14脚(+3.3V)

  • FDC2214引脚功能
树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

当SD引脚设置为高电平时,FDC将进入关机模式,关机模式是低功耗状态。将SD引脚设置为低电平时FDC退出关机模式。

注意:FDC2214使用前必须进行复位操作,即将SD拉高进入关机模式,再拉低进入正常工作模式。这时所有寄存器都返回其默认状态,并清除所有错误条件,取消INTB引脚的中断信号。

  • I2C接口规范

FDC使用I2C的扩展启动序列进行寄存器访问。I2C接口的最高速度为400kbit/s。此序列遵循标准I2C 7位从机地址,跟随一个8位指针寄存器字节,以设置寄存器地址。当ADDR引脚设置为低时,FDC I2C地址为0x2A;当ADDR引脚设置为高位时,FDC I2C地址为0x2B。FDC在正常工作状态时,ADDR引脚不得改变状态。

4. 用树莓派GPIO4控制FDC2214的SD引脚

4.1 用Shell命令直接控制GPIO4

  • 使GPIO4从内核空间暴露到用户空间中

echo 4 > /sys/class/gpio/export

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

> 是IO重定向符号,IO重定向是指改变linux标准输入和输出的默认设备,指向一个用户定义的设备。echo 4 > export就是把4写入到export文件中。

执行该操作之后,/sys/class/gpio目录下会增加一个gpio4文件夹。

查看GPIO4引脚(在Liunx中设备都以文件的形式,引脚也是设备)

ls /sys/class/gpio

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

ls /sys/class/gpio/gpio4

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]
  • 设置GPIO4为输出模式

echo out > /sys/class/gpio/gpio4/direction

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

查看设置:cat /sys/class/gpio/gpio4/direction

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]
  • FDC2214复位,SD引脚拉高再拉低

1) 向value文件中输入1,GPIO4输出高电平,当SD引脚设置为高电平时,FDC2214将进入关机模式。

echo 1 > /sys/class/gpio/gpio4/value

查看GPIO4的值:cat /sys/class/gpio/gpio4/value

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

2) 再向value文件中输入0,GPIO4输出地电平,FDC完成初始化,进入工作模式。

echo 0 > /sys/class/gpio/gpio4/value

查看初始化过程:

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

FDC2214完成Reset。

5. i2c-tools

为了从命令行控制i2c设备,需要安装工具i2c-tools。

5.1 安装i2c-tools

sudo apt-get install i2c-tools

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

i2c-tools官网,ttp://www.lm-sensors.org/wiki/i2cToolsDocumentation

I2c-tools仅有四条命令,下面逐条介绍。

5.2 查询i2c设备

  • 树莓派上I2C总线列表

i2cdetect -l

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]
  • 查看挂在总线上的从机设备地址

i2cdetect -y 1

检测i2c-1上的挂载情况

-y表示取消用户交互过程,直接执行指令

1代表I2C总线编号

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

2a=0x2A是FDC2214 I2C的从机地址。

ADDR是设备地址选择引脚:

当ADDR为低时从机地址为0x2A;当ADDR为高时从机地址为0x2B。我的FDC2214 ADDR引脚接地,所以I2C地址为2a。

5.3 查看所有寄存器的内容

i2cdump -y 1 0x2a

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

这是寄存器的初始状态,可以对照FDC2214芯片手册查看。

5.4 寄存器内容写入

  • 写字节

i2cset -y 1 I2C从机设备地址 寄存器地址 要写入的值(字节)

  • 写字(2字节)

i2cset -y 1 I2C从机设备地址 寄存器地址 要写入的字节值(字) w

5.5 寄存器内容读出

  • 读字节

i2cget -y 1 I2C从机设备地址 寄存器地址

  • 读字(2字节)

i2cget -y 1 I2C从机设备地址 寄存器地址 w

5.6 读取FDC2214的ID

  • ID寄存器

为了判断树莓派和FDC2214是没有问题,先读取FDC2214的ID,这里有两个ID可以供我们读取:

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

# 读取MANUFACTURER_ID

i2cget -y 1 0x2a 0x7E w

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

# 18772 = 0x4954,大小端交换0x5449,与芯片手册中Table 45一致。

# 读取DEVICE_ID

i2cget -y 1 0x2a 0x7F w

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

# 21808 = 0x5530,大小端交换0x3055,与芯片手册中Table 46一致。

6. 寄存器配置

  • 芯片文档10.2.3.2建议的初始寄存器配置值

FDC上电后立即进入Sleep模式,需要先对寄存器进行设置,再进入工作模式。

需要设置7组寄存器。

  1. 转换时间寄存器(0x08,0x09,0x0A,0x0B)的值0x8329
  2. 建立时间寄存器(0x10,0x11,0x12,0x13)的值0x000A
  3. 分频器寄存器(0x14,0x15,0x16,0x17)的值0x2002
  4. ERROR_CONFIG寄存器(0x19)保持默认值,禁用INTB(最低位控制)。
  5. 多路复用寄存器MUX_CONFIG(0x1B)的值0xC20D
  6. 传感器驱动电流寄存器(0x1E,0x1F,0x20,0x21)的值0x7C00
  7. CONFIG寄存器(0x1A)0x1601 使用外部时钟源(0x1401使用内部时钟源)。这个寄存器最后设置。
树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]
  1. CONFIG寄存器个位的设置
树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

转存失败重新上传取消

15:14 b00,在0通道上执行连续转换

13 b0器件活动,b1器件休眠

12 保留,设置为b1

选用设置15:14:13:12 b0001启动器件在0通道上进行连续转换

11 b0全电流活动模式,b1低功耗活动模式

10 保留,设置为b1

9 b0使用内部时钟,b1使用外部时钟

8 保留,设置为b0

选用设置11:10:9:8 b0100全电流活动模式,使用内部时钟

7 b0中断禁用

6 b0所以通道用1.5mA max电流驱动,b1只有通道0用1.5mA电流驱动(单通道模式)

5:0 保留,设置为b000001

选用设置7:6:5:0 b0000 0001

综合设置b0001 0100 0000 0001 0x1401

7. 读取FDC2214各通道的值

7.1 FDC2214初始化CH0

要读取数据首先要初始化。下面是0通道的初始化序列:

  • 设置0通道的参考计数转换间隔时间。寄存器0x08,值0x8329 (0x8329*16)/55M ==9.76ms,每10ms左右可以读取一次值。

先查看原始值:

i2cget -y 1 0x2a 0x08 w

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

0x8000大小端交换0x0080,这是Reset值。

i2cset -y 1 0x2a 0x08 0x2983 w(注意大小端交换)

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

再读出来验证一下:

i2cget -y 1 0x2a 0x08 w

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

大小端交换:寄存器0x08的值为0x8329

  • 设置0通道的转换之前最小稳定时间。寄存器0x10,值0x000A

i2cset -y 1 0x2a 0x10 0x0A00 w

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]
  • 设置传感器频率在0.01M到8.5M之间。寄存器0x14,值0x2002

i2cset -y 1 0x2a 0x14 0x0220 w

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]
  • 使能0,1,2,3通道,且带宽设置为10M。寄存器0x1B,值0xC20D

i2cset -y 1 0x2a 0x1B 0x0DC2 w

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]
  • 设置传感器时钟建立+4个通道的驱动电流0.146ma。寄存器0x1E,值0x7800

注意:手册中给出的建议值0x7C00有误,对照手册Table 41,应该是0x7800。

i2cset -y 1 0x2a 0x1E 0x0078 w

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]
  • 使能FDC2214,且取内部时钟为参考时钟。寄存器0x1A,值0x1401

i2cset -y 1 0x2a 0x1A 0x0114 w

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

读出的值是0x4114,和设置的值不同,这是因为我们只设置了一个通道,下面我们将4个通道都设置再看看:

i2cset -y 1 0x2a 0x08 0x2983 w

i2cset -y 1 0x2a 0x09 0x2983 w

i2cset -y 1 0x2a 0x0A 0x2983 w

i2cset -y 1 0x2a 0x0B 0x2983 w

i2cset -y 1 0x2a 0x10 0x0A00 w

i2cset -y 1 0x2a 0x11 0x0A00 w

i2cset -y 1 0x2a 0x12 0x0A00 w

i2cset -y 1 0x2a 0x13 0x0A00 w

i2cset -y 1 0x2a 0x14 0x0220 w

i2cset -y 1 0x2a 0x15 0x0220 w

i2cset -y 1 0x2a 0x16 0x0220 w

i2cset -y 1 0x2a 0x17 0x0220 w

i2cset -y 1 0x2a 0x1B 0x0DC2 w

i2cset -y 1 0x2a 0x1E 0x0078 w

i2cset -y 1 0x2a 0x1F 0x0078 w

i2cset -y 1 0x2a 0x20 0x0078 w

i2cset -y 1 0x2a 0x21 0x0078 w

i2cset -y 1 0x2a 0x1A 0x0114 w

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

这次就对了。

7.2 数据结果寄存器

FDC2214的数值是28位的,这里我们需要读两个寄存器的值(以CH0为例)分别是0x00,和0x01。

从芯片手册可以知道(以CH0为例),0x01寄存器中为数据的低16位,0x00寄存器为数据的高12位,将两个数据合起来,即为相应的数据。

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

7.3 读取数据

i2cget -y 1 0x2a 0x00 w

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

i2cget -y 1 0x2a 0x01 w

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

# 上面是空载数据,下面放指头在电容板上

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

7.4 用Shell脚本初始化FDC2214

下面用Shell脚本设置FDC2214 4个通道的寄存器。

  1. 新建一个名为fdc2214_init.sh的脚本

nano fdc2214_init.sh

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]
代码语言:javascript
复制
#!/bin/bash
echo 4 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio4/direction
echo 1 > /sys/class/gpio/gpio4/value
echo 0 > /sys/class/gpio/gpio4/value

i2cset -y 1 0x2a 0x08 0x2983 w
i2cset -y 1 0x2a 0x09 0x2983 w
i2cset -y 1 0x2a 0x0A 0x2983 w
i2cset -y 1 0x2a 0x0B 0x2983 w

i2cset -y 1 0x2a 0x10 0x0A00 w
i2cset -y 1 0x2a 0x11 0x0A00 w
i2cset -y 1 0x2a 0x12 0x0A00 w
i2cset -y 1 0x2a 0x13 0x0A00 w

i2cset -y 1 0x2a 0x14 0x0220 w
i2cset -y 1 0x2a 0x15 0x0220 w
i2cset -y 1 0x2a 0x16 0x0220 w
i2cset -y 1 0x2a 0x17 0x0220 w

i2cset -y 1 0x2a 0x1B 0x0DC2 w

i2cset -y 1 0x2a 0x1E 0x0078 w
i2cset -y 1 0x2a 0x1F 0x0078 w
i2cset -y 1 0x2a 0x20 0x0078 w
i2cset -y 1 0x2a 0x21 0x0078 w

i2cset -y 1 0x2a 0x1A 0x0114 w
  • 为fdc2214_init.sh添加可执行权限

chmod +x fdc2214_init.sh

  • 运行脚本初始化FDC2114

./fdc2214_init.sh

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]
  • 查看CH0的数据

初始化完成后就可以查看了:

i2cget -y 1 0x2a 0x00 w

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

i2cget -y 1 0x2a 0x01 w

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

7.5 用Shell脚本读FDC2214数据

  • 新建一个名为read_data.sh的脚本

FDC2214的数值是28位的,这里我们需要读两个寄存器的值(以CH0为例)分别是0x00,和0x01。

从芯片手册可以知道(以CH0为例),0x01寄存器中为数据的低16位,0x00寄存器为数据的高12位,将两个数据合起来,即为相应的数据。

nano read_data.sh

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]
代码语言:javascript
复制
#!/bin/bash
while true
do
# CH0
data00=$(i2cget -y 1 0x2a 0x00 w)
let "data00L=data00&0x00ff"
data00L=`printf "0x%02x\n" ${data00L}`
let "data00H=data00>>8&0x00ff"
data00H=`printf "0x%02x\n" ${data00H}`
let "data00W=data00L<<8|data00H"
data00W=`printf "0x%04x\n" ${data00W}`

data01=$(i2cget -y 1 0x2a 0x01 w)
let "data01L=data01&0x00ff"
data01L=`printf "0x%02x\n" ${data01L}`
let "data01H=data01>>8&0x00ff"
data01H=`printf "0x%02x\n" ${data01H}`
let "data01W=data01L<<8|data01H"
data01W=`printf "0x%04x\n" ${data01W}`

let "data0=data00W<<16|data01W"
#data0=`printf "0x%08x\n" ${data0}`	# 十六进制
echo "data0: ${data0}"

#CH1
data02=$(i2cget -y 1 0x2a 0x02 w)
let "data02L=data02&0x00ff"
data02L=`printf "0x%02x\n" ${data02L}`
let "data02H=data02>>8&0x00ff"
data02H=`printf "0x%02x\n" ${data02H}`
let "data02W=data02L<<8|data02H"
data02W=`printf "0x%04x\n" ${data02W}`

data03=$(i2cget -y 1 0x2a 0x03 w)
let "data03L=data03&0x00ff"
data03L=`printf "0x%02x\n" ${data03L}`
let "data03H=data03>>8&0x00ff"
data03H=`printf "0x%02x\n" ${data03H}`
let "data03W=data03L<<8|data03H"
data03W=`printf "0x%04x\n" ${data03W}`

let "data1=data02W<<16|data03W"
#data1=`printf "0x%08x\n" ${data1}`
echo "data1: ${data1}"

#CH2
data04=$(i2cget -y 1 0x2a 0x04 w)
let "data04L=data04&0x00ff"
data04L=`printf "0x%04x\n" ${data04L}`
let "data04H=data04>>8&0x00ff"
data04H=`printf "0x%02x\n" ${data04H}`
let "data04W=data04L<<8|data04H"
data04W=`printf "0x%04x\n" ${data04W}`

data05=$(i2cget -y 1 0x2a 0x05 w)
let "data05L=data05&0x00ff"
data05L=`printf "0x%02x\n" ${data05L}`
let "data05H=data05>>8&0x00ff"
data05H=`printf "0x%02x\n" ${data05H}`
let "data05W=data05L<<8|data05H"
data05W=`printf "0x%04x\n" ${data05W}`

let "data2=data04W<<16|data05W"
#data2=`printf "0x%08x\n" ${data2}`
echo "data2: ${data2}"

#CH3
data06=$(i2cget -y 1 0x2a 0x06 w)
let "data06L=data06&0x00ff"
data06L=`printf "0x%04x\n" ${data06L}`
let "data06H=data06>>8&0x00ff"
data06H=`printf "0x%02x\n" ${data06H}`
let "data06W=data06L<<8|data06H"
data06W=`printf "0x%04x\n" ${data06W}`

data07=$(i2cget -y 1 0x2a 0x07 w)
let "data07L=data07&0x00ff"
data07L=`printf "0x%02x\n" ${data07L}`
let "data05H=data05>>8&0x00ff"
data07H=`printf "0x%02x\n" ${data07H}`
let "data07W=data07L<<8|data07H"
data07W=`printf "0x%04x\n" ${data07W}`

let "data3=data06W<<16|data07W"
#data3=`printf "0x%08x\n" ${data3}`
echo "data3: ${data3}"

echo " "

sleep 1
done
  • 为read_data.sh添加可执行权限

chmod +x read_data.sh

  • 运行脚本

./read_data.sh

树莓派I2C通过Shell操作FDC2214[通俗易懂]
树莓派I2C通过Shell操作FDC2214[通俗易懂]

参考文档

树莓派系列教程10:I2C

https://www.waveshare.net/study/article-603-1.html

树莓派开发笔记(八):GPIO口的I2C使用(BME280三合一传感器:温度、湿度、气压测量)

https://blog.csdn.net/qq21497936/article/details/79775665?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

【LDC1314】电感传感器中文手册与检测原理介绍

https://blog.csdn.net/ReadAir/article/details/85383289?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/140967.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 树莓派换源
  • 2. 启用树莓派I2C
  • 3. 硬件连接
  • 4. 用树莓派GPIO4控制FDC2214的SD引脚
    • 4.1 用Shell命令直接控制GPIO4
    • 5. i2c-tools
      • 5.1 安装i2c-tools
        • 5.2 查询i2c设备
          • 5.3 查看所有寄存器的内容
            • 5.4 寄存器内容写入
              • 5.5 寄存器内容读出
                • 5.6 读取FDC2214的ID
                • 6. 寄存器配置
                • 7. 读取FDC2214各通道的值
                  • 7.1 FDC2214初始化CH0
                    • 7.2 数据结果寄存器
                      • 7.3 读取数据
                        • 7.4 用Shell脚本初始化FDC2214
                          • 7.5 用Shell脚本读FDC2214数据
                          • 参考文档
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档