首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
简述通过I2C接口读取设备X的寄存器Y的值的过程
[问答题]
简述通过I2C接口读取设备X的寄存器Y的值的过程
添加笔记
求解答(0)
邀请回答
收藏(186)
分享
纠错
11个回答
添加回答
50
牛客320316989号
发送起始信号——发送设备X地址+读写位0——读取ACK——发送寄存器地址Y——读取ACK——重复起始信号——发送设备X地址+读写位1——读取ACK——读取数据——发送NACK——发送停止信号
发表于 2020-04-29 02:45:02
回复(3)
16
淹死的大白鲨
1.首先主机发起通信(起始信号),将设备X的地址与寄存器Y写入从机;
2.从机接收信号将命令(读还是写命令)与寄存器Y地址提取出来,
3.从机将寄存器Y地址的数据放入从机I2C输出buffer
4.主机再次发起一次通信,读取从机数据。
发表于 2019-09-16 16:25:59
回复(0)
9
宫旭201906061412722
主机发起通信,将读命令和寄存器Y的地址发给设备X
设备X 读取判断读命令 根据寄存器Y的地址讲寄存器Y的值通过设备X的I2C输出到buff
主机再次发起通信读取数据
发表于 2019-06-16 09:55:01
回复(1)
8
永远保持一颗学徒的心
1.首先SDA拉低,然后SCL拉低,表示传输开始。
2.接着SDA发送7bit位(针对7位模式)的
从机
(设备x)
地址,一个读写标志位。从机收到信号决定是否发回应答信号ACK。
3.接着i2c接口会发送从机寄存器的地址(8bit)位,
从机收到信号决定是否发回应答信号ACK,发回为1,默认为0。
4.重复第一步的开始信号。
5.SDA再一次发送从机地址,此时读写标志位为1,然后是一个ACK信号。
6.紧接着就是读取寄存器Y的值了,这是一个8位的数据,由从机发出的。
7.最后就是从机返回一个NACK信号。表示信号传输结束。将SDA拉高,scl拉高。
个人理解,从I2C的时序来理解的。
发表于 2021-05-08 10:13:57
回复(0)
7
乐观的lishan
I2C只有两根线,分别为数据线(SDA)、时钟线(SCL)
通过数据线和时钟线的状态,可以产生起始信号、结束信号、应答信号、读取数据、接收数据等信号
读取设备X的寄存器Y值过程
主机发送一个起始信号,表示主机开始工作
主机发送一个地址编号(设备X的地址)
挂在I2C总线上的设备X向主机返回一个ack应答信号,建立主机与设备X之间的传输连接
主机收到应答信号后,向设备X发送一个寄存器Y的地址编号
设备X产生一个ack应答信号
主机收到应答后,再次发送一个起始信号
主机发送一个地址编号(设备X的地址)
设备X产生一个ack应答信号
主机收到应答后,发送读命令
设备X产生一个ack应答信号
主机收到应答后,
主机读取一字节数据
主机产生一个ack应答信号
主机读取一个CRC校验码
主机产生一个Nack信号
主机产生一个结束信号
发表于 2020-07-23 21:56:11
回复(0)
6
Messi_10
1、主机发送起始信号
2、主机发送从设备x的地址(最后一位为读写控制位,此时为0,表示写信号)
3、从机发送ack应答信号,建立主机与从机的通讯
4、主机重新发起起始信号
5、发送寄存器y的地址
6、从机发送ack应答信号
7、主机重新发送起始信号
8、主机发送设备x的地址(最后一位为1,表示读信号)
9、从机发送ack应答
10、从从设备中读取数据
11、主机发送NO ACK信号,表示读取完成
12、主机发送停止信号
发表于 2021-02-19 18:00:47
回复(0)
2
空中飞马
发表于 2022-05-09 11:52:58
回复(0)
2
cumtbqnn
I2C具有两条线,SDA与SCL。在通信时,只有在SCL为低电平时SDA可以变换电平,SCL高电平时读取SDA的数据。在未开始通信前,I2C的SDA和SCL都为高电平,当SDA在SCL为高电平的时候置低则表示通信的开始。然后是7位的设备X地址,紧接着是一位0表示写,接着是1位的ACK;然后是8位的寄存器Y的地址,紧接着是1位的ACK。之后再在SCL为高电平时将SDA置低,表示再次开始,写入7位的设备X地址,1位的0表示读,接着是ACK;接着就是连续的字节数据,最后在SCL为高的时候SDA置1表示通信结束。
发表于 2021-07-20 22:02:00
回复(0)
0
朝朝527
1. 主:启动条件 主:发送设备x地址,读写位为写 从:接收到主设备消息,返回ack 主:发送寄存器Y地址 从:接收到Y地址并存储 主:发送重复启动信号 主:发送x地址,读写位设置为读 从:接收到读消息, 准备发送数据 从:按字节发送寄存器数据到总线,收到主设备ack再次发送,收到nack结束发送 主:按字节接收X发送的数据,每收一个返回ack,接受完最后一个字节结束接收时返回nack 主:发送停止信号,结束接收
发表于 2024-09-09 23:02:46
回复(0)
0
李潞安
1.主机先发起一次通信,将读(command)和需要读取的寄存器地址(address)写入从机(主机发出写操作)。
2.从机(X)先将command和address分别提取;再判断command是读还是写;最后根据收到的address,也就是将寄存器Y的数据放入从机的IIC输出的buffer。
3.主机再发起一次通信,读取从机的输出buffer(主机发出读操作)。
发表于 2022-02-07 11:10:03
回复(0)
0
糊涂的迪恩又熬夜了
首先是发送从机地址"DEVICE ADDRESS",接着给从机发送"WORD ADDRESS"是所读取内容的地址,这是告诉AT24C02接下主机需要的内容,设置好地址之后,接着主机再发送一个起始位,紧接着发送"DEVICE ADDRESS",这时可以注意到传输方向是READ(读),那么主机释放SDA线的控制权,从机给主机发送数据,可以连续发送多个字节数据,当主机期望停止接收时作出一个非应答NO ACK,那么从机就停止发送了。
发表于 2021-08-22 16:22:58
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
C++工程师
嵌入式工程师
2019
寒武纪
Java工程师
来自:
寒武纪2019秋招嵌入...
上传者:
小小
难度:
11条回答
186收藏
8223浏览
热门推荐
相关试题
(verbal)最近的研究显示,许...
言语理解与表达
2019
普华永道
人力资源
审计
税务服务
风险管理
管理咨询
行政管理
评论
(2)
来自
职能类模拟题14
(verbal)最近的研究显示,许...
言语理解与表达
2019
普华永道
人力资源
审计
税务服务
风险管理
管理咨询
行政管理
评论
(3)
来自
职能类模拟题14
拆礼盒
Java工程师
C++工程师
iOS工程师
安卓工程师
运维工程师
前端工程师
算法工程师
PHP工程师
测试工程师
安全工程师
c#工程师
数据库工程师
大数据开发工程师
vivo
2020
嵌入式工程师
数据挖掘工程师
测试开发工程师
评论
(24)
已知单片机内置12位精度的ADC,...
Java工程师
C++工程师
寒武纪
2019
嵌入式工程师
评论
(20)
来自
寒武纪2019秋招嵌入式...
下面关于 Java 中 List ...
Java
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题