打印
[应用相关]

IIC在传输过程中是否可被打断

[复制链接]
414|31
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
黑心单片机|  楼主 | 2024-2-24 20:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
因为IIC通信速率较慢,一直等待发送完成会影响实时性。如果在IIC通信过程中有中断到来,处理完中断,IIC是否还可以接着通信

使用特权

评论回复
沙发
laocuo1142| | 2024-2-25 16:50 | 只看该作者
在IIC的传输过程中,数据传输通常是不可被打断的。

使用特权

评论回复
板凳
dw772| | 2024-2-26 18:09 | 只看该作者
你用硬件IIC+中断 就可以被打断了

使用特权

评论回复
地板
jobszheng| | 2024-2-27 09:07 | 只看该作者
可以有一定的延迟。
I2C是同步传输,依据sck的边沿触发数据锁存。

使用特权

评论回复
5
juliestephen| | 2024-3-1 20:24 | 只看该作者
两个设备尝试同时发送数据而没有正确的时序时,可能会发生总线冲突。

使用特权

评论回复
6
deliahouse887| | 2024-3-1 20:41 | 只看该作者
在物理层面上,单片机通常作为主机,其他器件作为从机。在实际应用中,单片机先向器件发送信息表示要读取数据,之后可能会转变传输方向,使器件发送数据到单片机。

使用特权

评论回复
7
houjiakai| | 2024-3-2 01:12 | 只看该作者
如果设备在传输过程中没有在预期时间内检测到应答(ACK)信号,它会假设发生了错误,并可能进行重传。

使用特权

评论回复
8
mollylawrence| | 2024-3-2 08:32 | 只看该作者
设计中断处理程序时,需要考虑到中断响应时间和I²C传输时序之间的关系,确保在处理中断的同时不会破坏正在进行的I²C通信。

使用特权

评论回复
9
jtracy3| | 2024-3-2 11:30 | 只看该作者
需要注意的是,仲裁过程只会影响在同一时刻尝试访问总线的设备。在正常情况下,当一个设备正在传输数据时,其他设备应该处于监听状态,等待自己的传输时机。因此,只要设备遵循I²C总线的规范,总线上的数据传输应该是稳定的。

使用特权

评论回复
10
pixhw| | 2024-3-2 17:16 | 只看该作者
I2C总线的传输速度相对较慢,因此在某些实时性要求较高的应用场景中,中断处理可能会对数据传输产生一定影响。

使用特权

评论回复
11
huquanz711| | 2024-3-2 17:43 | 只看该作者
利用空闲时间进行传输,或者用DMA。

使用特权

评论回复
12
chenci2013| | 2024-3-2 19:14 | 只看该作者
I²C总线在传输过程中可以被其他设备打断,这是通过仲裁过程实现的

使用特权

评论回复
13
abotomson| | 2024-3-2 22:18 | 只看该作者
在I²C总线上,当多个设备同时尝试获得总线控制权时,仲裁过程就会发生。仲裁是通过比较每个设备的地址和/或数据来决定的。具有较高优先级的设备将继续传输数据,而较低优先级的设备将被中断并等待下一次传输机会。

使用特权

评论回复
14
kkzz| | 2024-3-3 09:04 | 只看该作者
在重传过程中,当前的传输会被中断,直到设备重新获得总线控制权并完成传输。

使用特权

评论回复
15
juliestephen| | 2024-3-3 11:24 | 只看该作者
在某些特定的中断系统设计中,硬件IIC可以被中断打断。例如,如果系统设计允许在中断服务例程(ISR)中处理IIC通信,那么当中断发生时,当前的IIC传输可以被中断并暂停,待ISR执行完毕后,IIC可以继续之前的传输或者开始新的传输。这种设计可以提高系统的实时性,因为它允许系统在中断发生后立即进行处理,而不是等待IIC传输完成。

使用特权

评论回复
16
wilhelmina2| | 2024-3-3 13:25 | 只看该作者
总线冲突会导致数据传输错误              

使用特权

评论回复
17
houjiakai| | 2024-3-3 15:17 | 只看该作者
这种中断通常是由另一个I²C设备发起的,该设备需要立即访问总线以发送或接收数据。这种情况称为“总线仲裁”或“仲裁过程”。

使用特权

评论回复
18
backlugin| | 2024-3-3 17:08 | 只看该作者
尽管硬件IIC支持这种打断行为,但软件IIC实现通常不允许在传输过程中被中断,因为这可能会引起数据同步问题。

使用特权

评论回复
19
1988020566| | 2024-3-3 19:01 | 只看该作者
I2C总线上的每一个设备都有一个唯一的地址,当主机发送一个地址时,只有与该地址匹配的设备才会响应。如果主机发送的地址与所有设备的地址都不匹配,那么所有的设备都会忽略这次传输,此时也可以认为传输被打断。

使用特权

评论回复
20
vivilyly| | 2024-3-3 21:59 | 只看该作者
I²C总线上的数据传输是基于时序的,如果中断处理时间过长,可能会错过I²C总线上的时钟脉冲,导致数据无法正常接收或发送。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

58

主题

398

帖子

0

粉丝