开发型C板IST8310磁力计的读写过程

2023-05-16

文章目录

    • 读取单字节过程
    • 读取多字节过程
    • 写入单字节过程
    • 写入多字节过程

对于开发板C型的IST8310,I2C的地址是0x0E,读取0x00寄存器的值

读取单字节过程

  1. 发送一个起始信号(如图一)
  2. 发送IST8310的I2C地址和读写位(其中读写位为0,即写)
  3. 等待IST8310从机的ACK位
  4. 发送IST8310需要读取的寄存器地址
  5. 等待IST8310从机的ACK位
  6. 再次发送一个起始信号(如图二)
  7. 发送IST8310的I2C地址和读写位(这次读写位为1,即读)
  8. 等待IST8310从机的ACK位
  9. IST8310从机会发送对应寄存器的数据
  10. 由于主机只接受一个字节数据,故而主机不发送ACK位
  11. 主机在发送停止信号后,停止通信

图一
图二

发送过程:

顺序12345
信号起始信号I2C地址(写)ACK寄存器地址ACK
发送值SCL高
SDA从高电平拉低
0x0E<<1SDA从高电平拉低0x00SDA从高电平拉低
发送者主机
MCU
主机
MCU
从机
IST8310
主机
MCU
从机
IST8310
67891011
起始信号I2C地址(读)ACKIST8310的0x00寄存器值NACK停止信号
SCL高
SDA从高电平拉低
0x0E<<1SDA从高电平拉低0x10SDA保持高电平SCL高
SDA从低电平拉高
主机
MCU
主机
MCU
从机
IST8310
从机
IST8310
主机
MCU
主机
MCU

读取多字节过程

主机接收到一个字节后,主机发送ACK信号,则从机IST8310会接着再发送下一个寄存器的值,直到主机发送一个NACK信号,从机便停止发送数据

发送过程:

顺序12345
信号起始信号I2C地址(写)ACK寄存器地址ACK
发送值SCL高
SDA从高电平拉低
0x0E<<1SDA从高电平拉低0x00SDA从高电平拉低
发送者主机
MCU
主机
MCU
从机
IST8310
主机
MCU
从机
IST8310
67891011
起始信号I2C地址(读)ACKIST8310的0x00寄存器值ACKIST8310的0x01寄存器值
SCL高
SDA从高电平拉低
0x0E<<1SDA从高电平拉低0x10SCL高
SDA从高电平拉低
0xNN
主机
MCU
主机
MCU
从机
IST8310
从机
IST8310
主机
MCU
从机
IST8310
1213n1516
ACKIST8310的0x02寄存器值NACK停止信号
SCL高
SDA从高电平拉低
X-axis的低八位数据n个数据SDA保持高电平SCL高
SDA从低电平拉高
主机
MCU
从机
IST8310
主机
MCU
主机
MCU

写入单字节过程

与读取数据过程相比,写入数据过程相对简单

少了中间重新产生起始信号以及第二次发送I2C地址的过程

  1. 首先发送一个起始信号
  2. 发送IST8310的I2C地址和读写位(这次读写位为1,即写)
  3. 等待IST8310从机的ACK位
  4. 发送需要写入的寄存器地址值
  5. 等待IST8310的ACK位
  6. 主机发送需要写入的值
  7. 等待IST8310的ACK位
  8. 主机产生一个停止信号,完成本次通信

向IST8310的寄存器0x0A地址写入0x0B值,过程如下:

顺序12345
信号起始信号I2C地址(写操作)ACK寄存器地址ACK
发送值SCL高
SDA从高电平拉低
0x0E<<1SDA从高电平拉低0x0ASDA从高电平拉低
发送者主机
MCU
主机
MCU
从机
IST8310
主机
MCU
从机
IST8310
678
写入值ACK停止信号
0x0BSDA从高电平拉低SCL高
SDA从低电平拉高
主机
MCU
从机
IST8310
主机
MCU

写入多字节过程

与写入单字节相比,在写入一个字节后不发送停止信号,而是接着发送数据

向IST8310的寄存器0x0A地址写入0x0B值,往0x0B写入0x08,过程如下:

顺序12345
信号起始信号I2C地址(写操作)ACK寄存器地址ACK
发送值SCL高
SDA从高电平拉低
0x0E<<1SDA从高电平拉低0x0ASDA从高电平拉低
发送者主机
MCU
主机
MCU
从机
IST8310
主机
MCU
从机
IST8310
678910
0x0A写入值ACK0x0B写入值ACK停止信号
0x0BSDA从高电平拉低0x08SDA从高电平拉低SCL高
SDA从低电平拉高
主机
MCU
从机
IST8310
主机
MCU
从机
IST8310
主机
MCU

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

开发型C板IST8310磁力计的读写过程 的相关文章

随机推荐

  • vector

    include lt iostream gt include lt vector gt include lt algorithm gt using namespace std 容器 xff1a vector 相当于一个数组 迭代器 xff1
  • STM32外设之TIM定时器使用及输出比较模式PWM生成,PWM频率和占空比计算,文末有固件库TIM驱动文件的函数讲解

    TIM 定时器是stm32单片机中的一个外设 xff0c STM32有8个定时器 xff0c 分别是2个高级定时器TIM1TIM8 xff0c 4个通用定时器TIM2 5 2个基本定时器TIM67 根据不同型号的单片机 xff0c 挂载的定
  • Java多线程之~~~~使用wait和notify实现生产者消费者模型

    在多线程开发中 xff0c 最经典的一个模型就是生产者消费者模型 xff0c 他们有一个缓冲区 xff0c 缓冲区有最大限制 xff0c 当缓冲区满 的时候 xff0c 生产者是不能将产品放入到缓冲区里面的 xff0c 当然 xff0c 当
  • 拷贝、移动构造

    include lt iostream gt using namespace std class temp private char a public temp char c char b a 61 new char 2 a 0 61 c
  • Dockerfile

    Dockerfile Dockerfile简介1 Dockerfile基本介绍2 Dockerfile构建过程3 Dockerfile指令用法 Dockerfile构建镜像1 Dockerfile使用CentOS构建apache镜像1 1相
  • MySQL数据库备份与恢复

    在项目的开发过程中数据库的备份是非常重要的 xff0c 为了防止数据库受到破坏 xff0c 造成不可估量的损失 xff0c 所以一定要进行数据库的备份 xff0c 并且需要掌握数据库恢复方法 xff0c 在发生数据库损坏的时候 xff0c
  • Linux设备驱动基础知识

    一 认识驱动 1 什么是驱动 不知道的情况下 xff0c 我们一般会去问度娘 xff0c 但是度娘的这个回答比较专业化 xff0c 对小白来说并不容易理解 xff0c 依旧不明白驱动到底是个啥 度娘 xff1a 驱动 xff0c 计算机软件
  • 接口及实现方法

    什么是接口 接口 xff08 英文 xff1a Interface xff09 xff0c 在JAVA编程语言中是一个抽象类型 xff0c 是抽象方法的集合 xff08 接口中的所有的方法都是抽象方法 xff09 xff0c 接口通常以in
  • JS中Document对象

    Document对象 Document对象就是一个标记性文档对象 它就是HTML文件本身 当浏览器把一个html文件加载到内存中之后 xff0c 在内存中就会形成这个document对象 document URL xff1a 返回当前页面的
  • Sphinx环境配置以及VScode编写Rst文档转html

    Sphinx环境配置 安装python3通过python3安装sphinx sphinx官方网站 xff1a Installing Sphinx Sphinx documentation python官方网站 xff1a Welcome t
  • js实现防抖和节流

    防抖 xff1a 防抖就是在连续多次触发该事件 xff0c 事件触发间隔小于设定的事件 xff0c 事件只会执行最后一次 节流 xff1a 规定的时间内 xff0c 只能触发一次该事件 接下来看代码 xff1a lt DOCTYPE htm
  • 树莓派系统镜像一键瘦身备份脚本, 生成最小化镜像img(一)

    开发 测试环境 树莓派 xff1a Raspberry Pi 3b 43 TF 存储卡 xff1a 32GB操作系统 xff1a 2020 05 27 raspios buster full armhf xff08 官方版本 xff09 程
  • 分享——网页上的虚拟机

    大家还记得之前的Windows系统吗 xff1f 相信大家一定想要重温或体验以前Windows的系统吧 xff0c 可有些朋友想体验但又嫌装虚拟机太麻烦 xff0c 怎么办呢 其实 xff0c 还有 网上的虚拟机 现在 xff0c 我就给大
  • 单片机编程中的裸机编程和多任务系统FreeRTOS系统详解,以及怎么学习FreeRTOS,看哪家的教程?(合集)

    单片机编程中的裸机系统和多任务系统 学习了那么久的stm32还停留在裸机 xff1f xff1f xff1f 单片机编程中的裸机系统和多任务系统 1 裸机系统1 1轮询系统1 2 前后台系统 2 多任务操作系统3 为什么要学习多任务操作系统
  • Selenium+Pytest自动化测试框架实战,还不会点这里一清二楚,全网最细教程!

    如果下方文字内容没有看明白的话 xff0c 我推荐大家看一套视频 xff0c 比文字内容讲的更加详细 xff01 在华为工作了10年的大佬出的Web自动化测试教程 xff0c 华为现用技术教程 xff01 哔哩哔哩 bilibili 在华为
  • Firewalld防火墙基础

    目录 前言 一 概述 2 Firewalld和iptables的关系 2 1 Firewalld和iptables的关系 3 Firewalld区域 3 1 firewalld区域的概念 3 2 firewalld防火墙定义了9个区域 3
  • Matlab/simulink控制,遗传pid,模糊pid,滑模控制,自抗扰ADRC控制

    Matlab simulink控制 xff0c 遗传pid 模糊pid xff0c 滑模控制 xff0c 自抗扰ADRC控制 xff0c 鲁棒控制 xff0c LADRC控制等 xff0c 以上控制均已封装为simulink模块 xff0c
  • USB串口转CAN通讯盒资料

    公司开发低成本USB串口转CAN通讯盒 xff0c 其他项目优先 xff0c 停止开发 xff0c 自己闲暇时间继续开发而成 出资料 主控是stm32f103c8t6 整套资料 xff0c 很适合初学者学习上下位机通讯控制入门 xff0c
  • I2C读取IST8310

    文章目录 I2C简介I2C传输过程I2C仲裁IST8310磁力计Cube配置相关函数HAL I2C Mem Read函数HAL I2C Mem Write函数IST8310的初始化 程序流程代码编写 I2C简介 2C是一种半双工双向二线制的
  • 开发型C板IST8310磁力计的读写过程

    文章目录 读取单字节过程读取多字节过程写入单字节过程写入多字节过程 对于开发板C型的IST8310 xff0c I2C的地址是0x0E xff0c 读取0x00寄存器的值 读取单字节过程 发送一个起始信号 xff08 如图一 xff09 发