黑心单片机 发表于 2024-2-24 20:33

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

因为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的边沿触发数据锁存。

juliestephen 发表于 2024-3-1 20:24

两个设备尝试同时发送数据而没有正确的时序时,可能会发生总线冲突。

deliahouse887 发表于 2024-3-1 20:41

在物理层面上,单片机通常作为主机,其他器件作为从机。在实际应用中,单片机先向器件发送信息表示要读取数据,之后可能会转变传输方向,使器件发送数据到单片机。

houjiakai 发表于 2024-3-2 01:12

如果设备在传输过程中没有在预期时间内检测到应答(ACK)信号,它会假设发生了错误,并可能进行重传。

mollylawrence 发表于 2024-3-2 08:32

设计中断处理程序时,需要考虑到中断响应时间和I²C传输时序之间的关系,确保在处理中断的同时不会破坏正在进行的I²C通信。

jtracy3 发表于 2024-3-2 11:30

需要注意的是,仲裁过程只会影响在同一时刻尝试访问总线的设备。在正常情况下,当一个设备正在传输数据时,其他设备应该处于监听状态,等待自己的传输时机。因此,只要设备遵循I²C总线的规范,总线上的数据传输应该是稳定的。

pixhw 发表于 2024-3-2 17:16

I2C总线的传输速度相对较慢,因此在某些实时性要求较高的应用场景中,中断处理可能会对数据传输产生一定影响。

huquanz711 发表于 2024-3-2 17:43

利用空闲时间进行传输,或者用DMA。

chenci2013 发表于 2024-3-2 19:14

I²C总线在传输过程中可以被其他设备打断,这是通过仲裁过程实现的

abotomson 发表于 2024-3-2 22:18

在I²C总线上,当多个设备同时尝试获得总线控制权时,仲裁过程就会发生。仲裁是通过比较每个设备的地址和/或数据来决定的。具有较高优先级的设备将继续传输数据,而较低优先级的设备将被中断并等待下一次传输机会。

kkzz 发表于 2024-3-3 09:04

在重传过程中,当前的传输会被中断,直到设备重新获得总线控制权并完成传输。

juliestephen 发表于 2024-3-3 11:24

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

wilhelmina2 发表于 2024-3-3 13:25

总线冲突会导致数据传输错误            

houjiakai 发表于 2024-3-3 15:17

这种中断通常是由另一个I²C设备发起的,该设备需要立即访问总线以发送或接收数据。这种情况称为“总线仲裁”或“仲裁过程”。

backlugin 发表于 2024-3-3 17:08

尽管硬件IIC支持这种打断行为,但软件IIC实现通常不允许在传输过程中被中断,因为这可能会引起数据同步问题。

1988020566 发表于 2024-3-3 19:01

I2C总线上的每一个设备都有一个唯一的地址,当主机发送一个地址时,只有与该地址匹配的设备才会响应。如果主机发送的地址与所有设备的地址都不匹配,那么所有的设备都会忽略这次传输,此时也可以认为传输被打断。

vivilyly 发表于 2024-3-3 21:59

I²C总线上的数据传输是基于时序的,如果中断处理时间过长,可能会错过I²C总线上的时钟脉冲,导致数据无法正常接收或发送。
页: [1] 2 3
查看完整版本: IIC在传输过程中是否可被打断