社区
驱动开发/核心开发
帖子详情
IIC的问题请教
fishly_0
2010-10-13 05:00:58
根据IIC的协议,传输数据时,应该是 起始位+7位slave地址+1位读写标记 + ACK + DATA + ACK + 停止位
这个格式没错吧? 我看三星2440的资料,这个DATA是只能发一个字节,对吗? 今天在网上查了下资料,有些写着发送DATA时一次可以发送多个字节,所以我想问下,一次是只能发1个字节还是可以发送多个字节? 有没有什么限制呢?
...全文
83
8
打赏
收藏
IIC的问题请教
根据IIC的协议,传输数据时,应该是 起始位+7位slave地址+1位读写标记 + ACK + DATA + ACK + 停止位 这个格式没错吧? 我看三星2440的资料,这个DATA是只能发一个字节,对吗? 今天在网上查了下资料,有些写着发送DATA时一次可以发送多个字节,所以我想问下,一次是只能发1个字节还是可以发送多个字节? 有没有什么限制呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
凤朝凰
2010-10-14
打赏
举报
回复
每次发送一个字节,都需要发送ACK回应。
R/W位为1,说明主设备是要读取数据,从设备开始发送数据,主设备准备接受。
fishly_0
2010-10-14
打赏
举报
回复
明白了,昨天理解错误,我还以为当R/W为1时,第二个字节就是从机发过来的。。。结贴了,谢谢各位。
fishly_0
2010-10-13
打赏
举报
回复
另外8位的读写标记是第一个字节的bit0,16位的读写标记是第一个字节的bit7吗?
fishly_0
2010-10-13
打赏
举报
回复
[Quote=引用 4 楼 memoleak 的回复:]
1.起始位+7位slave地址+1位读写标记 + ACK + DATA + ACK + ... + DATA + ACK + 停止位
2.16位地址其实只有10位,其地址是由起始位后的头两个字节组成.第一个字节的头7位是11110XX的组合,其中最后两位XX是10位地址的两个最高位MSB.第一个字节的第8位是R/W位.如果R/W位是0,则第二个字节是10位从机地址剩下的8位;如果R/W位是1,则……
[/Quote]
谢谢大家的回复。
memoleak,你说的第一点,是不是发送地址后,发送每一个byte的DATA都要发送一个ACK呢,这样的意思就是一直站着iic总线对吧。
第二点:你说的如果R/W位是1,则下一个字节是从机发给主机的数据,这是什么意思?如果下一个字节是从机发给主机的数据,那么主机不是才发送了一个字节的地址么?
memoleak
2010-10-13
打赏
举报
回复
1.起始位+7位slave地址+1位读写标记 + ACK + DATA + ACK + ... + DATA + ACK + 停止位
2.16位地址其实只有10位,其地址是由起始位后的头两个字节组成.第一个字节的头7位是11110XX的组合,其中最后两位XX是10位地址的两个最高位MSB.第一个字节的第8位是R/W位.如果R/W位是0,则第二个字节是10位从机地址剩下的8位;如果R/W位是1,则下一个字节是从机发送给主机的数据.
coding码场
2010-10-13
打赏
举报
回复
[Quote=引用楼主 fishly_0 的回复:]
根据IIC的协议,传输数据时,应该是 起始位+7位slave地址+1位读写标记 + ACK + DATA + ACK + 停止位
这个格式没错吧? 我看三星2440的资料,这个DATA是只能发一个字节,对吗? 今天在网上查了下资料,有些写着发送DATA时一次可以发送多个字节,所以我想问下,一次是只能发1个字节还是可以发送多个字节? 有没有什么限制呢?
[/Quote]一次可以发送多个字节.
dian_technology
2010-10-13
打赏
举报
回复
一次可以传输多个字节。
限制的话,要视元件类型而定。
比如,一款I2C总线的E2PROM,其一次传输最大字节数等于其一页最大字节数。
fishly_0
2010-10-13
打赏
举报
回复
另外,slave的地址可以是16位的吗? 那该怎么发呢。
iic
程序未调试成功
未调试成功的程序,向老师
请教
~_~...................
mini2440下调试
IIC
时序
问题
总结与分析
说明:mini2440平台,wince6.0系统,vs2005 经过几个月的学学停停,终于在wince下加入了GPIO模拟的
IIC
总线,实现了
IIC
的移植,
IIC
的芯片是SHT21温湿度芯片。 之所以搞了这么久没搞定
IIC
,是在ADS下很早实现了,可就是添加到系统就总不对!示波器抓取发现时序在芯片复位后就不对了,找来找去都不知道怎么回事!这下就陷入了 纠结中,还是那种死循环的纠结,怎么都绕不
ESP8266实战快速上手--基于linux
随着物联网和智慧家庭的概念的普及,各种智能硬件推新不断,掌握一款智能硬件的开发,可以提高自身的价值,无论在应聘新的工作或者是在工作中,都... 4、温湿度传感器介绍,
IIC
介绍; 5、OLED使用介绍; 6、代码集成;
【LINUX】i.MX6学习笔记(4)
IIC
驱动 smec98sp
1. 引言 2.
IIC
简介 3. 驱动 3.1
IIC
代码 主要文件是i2c-core.c,i2c-imx.c 我们使用 ret = i2c_transfer(client->adapter, &msg, 1); 其中client是在probe时候传入的,即调用i2c_imx_probe函数,进而拿到了client->adapter,确定了
IIC
的适配器,初始化了
IIC
的控制器, 在驱动中,我们调用i2c_transfer来完成
IIC
数据的发送,其实就是调用__i2c_transfe
【使用C++开发MCU】02-
IIC
实例之读取温度
基于C++开发MCU,使用NXP S32K146通过
IIC
读取TMP101温度传感器进行演示,阐述C++开发
IIC
、传感器。
驱动开发/核心开发
21,597
社区成员
21,709
社区内容
发帖
与我相关
我的任务
驱动开发/核心开发
硬件/嵌入开发 驱动开发/核心开发
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章