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

本文详细介绍了I2C通信协议在与IST8310开发板交互过程中的应用,包括读取单字节和多字节数据,以及写入单字节和多字节数据的步骤。通过起始信号、ACK/NACK确认、停止信号等关键环节,展示了如何读取和写入传感器寄存器的操作流程。
摘要由CSDN通过智能技术生成

文章目录

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

对于开发板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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

书阁下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值