IIC在传输过程中是否可被打断
因为IIC通信速率较慢,一直等待发送完成会影响实时性。如果在IIC通信过程中有中断到来,处理完中断,IIC是否还可以接着通信在IIC的传输过程中,数据传输通常是不可被打断的。 你用硬件IIC+中断 就可以被打断了 可以有一定的延迟。
I2C是同步传输,依据sck的边沿触发数据锁存。 两个设备尝试同时发送数据而没有正确的时序时,可能会发生总线冲突。 在物理层面上,单片机通常作为主机,其他器件作为从机。在实际应用中,单片机先向器件发送信息表示要读取数据,之后可能会转变传输方向,使器件发送数据到单片机。 如果设备在传输过程中没有在预期时间内检测到应答(ACK)信号,它会假设发生了错误,并可能进行重传。 设计中断处理程序时,需要考虑到中断响应时间和I²C传输时序之间的关系,确保在处理中断的同时不会破坏正在进行的I²C通信。 需要注意的是,仲裁过程只会影响在同一时刻尝试访问总线的设备。在正常情况下,当一个设备正在传输数据时,其他设备应该处于监听状态,等待自己的传输时机。因此,只要设备遵循I²C总线的规范,总线上的数据传输应该是稳定的。 I2C总线的传输速度相对较慢,因此在某些实时性要求较高的应用场景中,中断处理可能会对数据传输产生一定影响。 利用空闲时间进行传输,或者用DMA。 I²C总线在传输过程中可以被其他设备打断,这是通过仲裁过程实现的 在I²C总线上,当多个设备同时尝试获得总线控制权时,仲裁过程就会发生。仲裁是通过比较每个设备的地址和/或数据来决定的。具有较高优先级的设备将继续传输数据,而较低优先级的设备将被中断并等待下一次传输机会。 在重传过程中,当前的传输会被中断,直到设备重新获得总线控制权并完成传输。 在某些特定的中断系统设计中,硬件IIC可以被中断打断。例如,如果系统设计允许在中断服务例程(ISR)中处理IIC通信,那么当中断发生时,当前的IIC传输可以被中断并暂停,待ISR执行完毕后,IIC可以继续之前的传输或者开始新的传输。这种设计可以提高系统的实时性,因为它允许系统在中断发生后立即进行处理,而不是等待IIC传输完成。 总线冲突会导致数据传输错误 这种中断通常是由另一个I²C设备发起的,该设备需要立即访问总线以发送或接收数据。这种情况称为“总线仲裁”或“仲裁过程”。 尽管硬件IIC支持这种打断行为,但软件IIC实现通常不允许在传输过程中被中断,因为这可能会引起数据同步问题。 I2C总线上的每一个设备都有一个唯一的地址,当主机发送一个地址时,只有与该地址匹配的设备才会响应。如果主机发送的地址与所有设备的地址都不匹配,那么所有的设备都会忽略这次传输,此时也可以认为传输被打断。 I²C总线上的数据传输是基于时序的,如果中断处理时间过长,可能会错过I²C总线上的时钟脉冲,导致数据无法正常接收或发送。