飞利浦 半导体 产品 数据
p89c660/p89c662/p89c664/
P89C668
80c51 8-位 flash 微控制器 家族
16kb/32kb/64kb isp/iap flash 和 512b/1kb/2kb/8kb 内存
2002 oct 28
15
arbitration 和 同步 逻辑
在 这 主控 传输者 模式, 这 arbitration 逻辑 checks 那
每 transmitted 逻辑 1 的确 呈现 作 一个 逻辑 1 在 这 i
2
C
总线. 如果 另一 设备 在 这 总线 overrules 一个 逻辑 1 和 pulls 这
sda 线条 低, arbitration 是 lost, 和 sio1 立即 改变 从
主控 传输者 至 从动装置 接受者. sio1 将 continue 至 输出
时钟 脉冲 (在 scl) 直到 传递 的 这 电流 串行 字节 是
完全.
arbitration 将 也 是 lost 在 这 主控 接受者 模式. 丧失 的
arbitration 在 这个 模式 能 仅有的 出现 当 sio1 是 returning 一个 “not
acknowledge: (逻辑 1) 至 这 总线. arbitration 是 lost 当 另一
设备 在 这 总线 pulls 这个 信号 低. 自从 这个 能 出现 仅有的 在
这 终止 的 一个 串行 字节, sio1 发生 非 更远 时钟 脉冲.
图示 4 显示 这 arbitration 程序.
这 同步 逻辑 将 同步 这 串行 时钟 发生器
和 这 时钟 脉冲 在 这 scl 线条 从 另一 设备. 如果 二 或者
更多 主控 设备 发生 时钟 脉冲, 这 “mark” 持续时间 是
决定 用 这 设备 那 发生 这 shortest “marks,” 和
这 “space” 持续时间 是 决定 用 这 设备 那 发生 这
longest “spaces.” 图示 5 显示 这 同步 程序.
一个 从动装置 将 stretch 这 空间 持续时间 至 慢 向下 这 总线
主控. 这 空间 持续时间 将 也 是 拉长 为 handshaking
目的. 这个 能 是 完毕 之后 各自 位 或者 之后 一个 完全 字节
转移. sio1 将 stretch 这 scl 空间 持续时间 之后 一个 字节 有
被 transmitted 或者 received 和 这 acknowledge 位 有 被
transferred. 这 串行 中断 标记 (si) 是 设置, 和 这 stretching
持续 直到 这 串行 中断 标记 是 cleared.
ACK
1. 另一 设备 transmits 完全同样的 串行 数据.
SDA
1
234 89
SCL
(1) (1) (2)
(3)
2. 另一 设备 overrules 一个 逻辑 1 (dotted 线条) transmitted 用 sio1 (主控) 用 拉 这 sda 线条 低. arbitration 是
lost, 和 sio1 enters 这 从动装置 接受者 模式.
3. sio1 是 在 这 从动装置 接受者 模式 但是 安静的 发生 时钟 脉冲 直到 这 电流 字节 有 被 transmitted. sio1 将
不 发生 时钟 脉冲 为 这 next 字节. 数据 在 sda originates 从 这 新 主控 once 它 有 won arbitration.
SU00967
图示 4. arbitration 程序
(1)
SCL
(3) (1)
SDA
MARK
持续时间
空间 持续时间
(2)
1. 另一 维护 pulls 这 scl 线条 低 在之前 这 sio1 “mark” 持续时间 是 完全. 这 串行 时钟 发生器 是 立即
重置 和 commences 和 这 “space” 持续时间 用 拉 scl 低.
2. 另一 设备 安静的 pulls 这 scl 线条 低 之后 sio1 releases scl. 这 串行 时钟 发生器 是 强迫 在 这 wait 状态
直到 这 scl 线条 是 released.
3. 这 scl 线条 是 released, 和 这 串行 时钟 发生器 commences 和 这 mark 持续时间.
SU00968
图示 5. 串行 时钟 同步