首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
对外设进行读写操作的过程
时间:
2016-12-21 02:20:57
阅读:
209
评论:
0
收藏:
0
[点我收藏+]
标签:
blog
串行
msu
cpu
产生
技术
自动
内容
images
本文以TP芯片GT910为例,下面的内容均抄自该芯片SPEC。
(a)数据传输
通讯总是由主
CPU
发起,有效的起始信号为:在
SCL
保持为
“1”
时,
SDA
上发生由
“1”
到
“0”
的跳变。地址信息或数据流均在起始信号之后传输。
所有连接在
I2C
总线上的从设备,都要检测总线上起始信号之后所发送的
8
位地址信息,并
做出正确反应。在收到与自己相匹配的地址信息时,
GT910
在第
9
个时钟周期,将
SDA
改
为输出口,并置
“0”
,作为应答信号。若收到不与自己匹配的地址信息,非
0XBA
或
0XBB
,
GT910
将保持闲置状态。
SDA
口上的数据按
9
个时钟周期串行发送
9
位数据:
8
位有效数据加
1
位接收方发送的应答
信号
ACK
或非应答信号
NACK
。数据传输在
SCL
为
“1”
时有效。
当通讯完成时,
由主
CPU
发送停止信号。停止信号是当
SCL
为
“1”
时,
SDA
状态由
“0”
到
“1”
的跳变。
b)
对
GT910
写操作
(
以设备地址为
0xBA/0xBB
为例
)
上图为主
CPU
对
GT910
进行的写操作流程图。首先主
CPU
产生一个起始信号,然后发送
地址信息及读写位信息
“0”
表示写操作
:0xBA
。
在收到应答后,主
CPU
发送寄存器的
16
位地址,随后是
8
位要写入到寄存器的数据内容。
GT910
寄存器的地址指针会在写操作后自动加
1
,所以当主
CPU
需要对连续地址的寄存器
进行写操作时,可以在一次写操作中连续写入。写操作完成,主
CPU
发送停止信号结束当
前写操作。
c)
对
GT910
读操作
(
以设备地址为
0xBA/0xBB
为例
)
上图为主
CPU
对
GT910
进行的读操作流程图。首先主
CPU
产生一个起始信号,然后发送
设备地址信息及读写位信息
“0”
表示写操作:
0xBA
。
在收到应答后,主
CPU
发送首寄存器的
16
位地址信息,设置要读取的寄存器地址。在收到
应答后,主
CPU
重新发送一次起始信号,发送读操作:
0xBB
。收到应答后,主
CPU
开始
读取数据。
GT910
同样支持连续的读操作,默认为连续读取数据。主
CPU
在每收到一个
Byte
数据后需
发送一个应答信号表示成功接收。在接收到所需的最后一个
Byte
数据后,
主
CPU
发送
“
非应
答信号
NACK”
,然后再发送停止信号结束通讯。
对外设进行读写操作的过程
标签:
blog
串行
msu
cpu
产生
技术
自动
内容
images
原文地址:http://www.cnblogs.com/gcws/p/6204786.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!