IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 通过KXTF9-2050芯片分析I2C协议 -> 正文阅读

[嵌入式]通过KXTF9-2050芯片分析I2C协议

1、I2C协议

参见博客:《I2C通信协议详解和通信流程分析》

2、I2C驱动的框架分析

(1)驱动框架分为两层:物理层和协议层。物理层是通用的,取决于主设备;协议层则每个从设备都不同。
(2)物理层:物理层可以理解成通用层,就是上面的介绍的I2C协议,只要是I2C接口的传感器都遵守I2C协议,不同的I2C设备在物理层是相同的。
(3)协议层:每个设备的功能和寄存器都是不同的,主设备要和从设备通信,需要在I2C协议的基础上,还要根据从设备的通信协议。比如不同的从设备与不同的寄存器,对寄存器的操作顺序有先后的要求等。

3、传感器的接口

传感器接口分为模拟接口和数字接口
(1)模拟接口:模拟接口是用接口电平变化来作为输出的。譬如模拟接口的压力传感器,在压力不同时输出电平在0~3.3V范围内变化,每一个电压对应一个压力。SOC需要用AD接口来对接这种传感器对它输出的数据进行AD转换,转换得到数字电压值,再用数字电压值去校准得到压力值;
(2)数字接口:数字接口是后来发展出来的,数字接口的sensor是在模拟接口的sensor基础上,内部集成了AD转换,直接输出一个数字值的参数,这样SoC直接通过总线接口初始化、读取传感器输出的参数即可(譬如gsensor、电容触摸屏IC)。

4、芯片介绍

KXTF9-2050芯片是重力加速度传感器,用在手机、平板、智能手表等设备上,用来感受人的手的移动,获取一些运动的方向性信息用来给系统作为输入参量。比如前几年比较火的手机游戏就有通过手机的晃动幅度来控制游戏里的人物,其中就用到了重力加速度传感器。KXTF9-2050芯片功能比较单一,就是检测加速度变化的,都是作为从设备使用。

5、芯片定义的I2C通讯术语

在这里插入图片描述

(1)S:I2C协议里的开始信号;
(2)Sr:重复的开始信号,在和gsensor的一次通信过程中,可以有多个开始信号;
(3)SAD:从设备的地址,也急速gsensor自己在I2C总线上的地址;
(4)W:写标志位,表示主设备是要往gsensor寄存器里写数据;
(5)R:读标志位,表示主设备是要从gsensor寄存器里读数据;
(6)ACK:I2C协议里的ACK响应信号;
(7)NACK:不需要ACK响应信号;
(8)RA:gsensor中寄存器的地址;
(9)Data:主设备和gsensor通信中的有效数据;
(10)P:I2C协议中的停止位;

6、芯片在I2C总线上的地址

在这里插入图片描述

查询芯片手册可知,KXTF9-2050芯片的从设备地址是0b0001111,但是要注意从设备的地址是7位的。

7、主设备往KXTF9-2050芯片写数据

7.1、写单个字节

在这里插入图片描述

(1)主设备先发送起始信号,然后发送从设备地址+写标志位(0b00011110);
(2)gsonsor芯片发一个ACK信号;
(3)主设备发送要访问的gsensor内部寄存器的地址;
(4)gsonsor芯片发一个ACK信号;
(5)主设备发送要写入寄存器的数据;
(6)gsonsor芯片收到并发送一个ACK信号;
(7)主设备发送停止信号,结束本次通信;

7.2、写多个字节

在这里插入图片描述

(1)主设备先发送起始信号,然后发送从设备地址+写标志位(0b00011110);
(2)gsonsor芯片发一个ACK信号;
(3)主设备发送要访问的gsensor内部多个寄存器的基地址;
(4)gsonsor芯片发一个ACK信号;
(5)主设备发送要写入寄存器的数据;
(6)gsonsor芯片收到并发送一个ACK信号,gsensor会自动把要写入的寄存器地址增加,下次主设备发送过来的数据会写入下一个寄存器;
(7)主设备再次发送要写入寄存器的数据;
(8)gsensor芯片发送ACK信号;
(9)主设备发送完数据,发送停止信号,结束本次通信;

8、主设备从KXTF9-2050芯片读数据

8.1、读单个字节

在这里插入图片描述

(1)主设备先发送起始信号,然后发送从设备地址+写标志位(0b00011110);
(2)gsonsor芯片发一个ACK信号;
(3)主设备发送要访问的gsensor内部寄存器的地址;
(4)gsonsor芯片发一个ACK信号;
(5)主设备再次发送一个开始信号,然后发送从设备地址+读标志位(0b00011111);
(6)gsonsor芯片发一个ACK信号;
(7)gsonsor芯片发送对应寄存器的数据;
(8)主设备在ACK的时钟周期不需要回ACK信号;
(9)主设备发送停止信号;

8.2、读多个字节

在这里插入图片描述

(1)主设备先发送起始信号,然后发送从设备地址+写标志位(0b00011110);
(2)gsonsor芯片发一个ACK信号;
(3)主设备发送要访问的gsensor内部寄存器的基地址;
(4)gsonsor芯片发一个ACK信号;
(5)主设备再次发送一个开始信号,然后发送从设备地址+读标志位(0b00011111);
(6)gsonsor芯片发一个ACK信号;
(7)gsonsor芯片发送对应寄存器的数据,然后将寄存器的地址增加;
(8)主设备在ACK的时钟周期不需要回ACK信号;
(9)主设备发送ACK信号;
(10)从设备发送下一个寄存器的数据;
(11)在最后一次发送寄存器数据的时候,主设备不用回ACK信号;
(12)主设备发送停止信号;

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-04-04 12:27:28  更:2022-04-04 12:30:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:24:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码