
异步时序与同步时序的区别异步时序 节省时钟线 但是对时间要求严格对硬件电路依赖同步时序 需要时钟线 但是对时间要求不严格对硬件电路依赖小 可以使用软件模拟时序I2C总线I2C 是两根线SCL、SDA 是同步通信 采用半双工工作模式支持一主多从多主多从通信模式 多主机下还需要进行时钟同步在总线冲突时会触发总线仲裁机制硬件电路任何时候主机完全掌控SCL线在空闲状态下可以主动发起对SDA线的控制 从机不允许控制SCL线且只有在主机允许的情况下才能对SDA线进行控制所有设备均需要上拉电阻保证SDA、SCL线在空闲状态下为高电平主设备配置为开漏输出从设备上拉输入I2C禁止所有设备输出强上拉高电平采用外置弱上拉电阻开漏输出的方式##I2C时序在总线空闲时SDA和SCL由外挂的上拉电阻拉高至高电平起始条件 SCL高电平期间SDA从高电平切换到低电平终止条件 SCL高电平期间SDA从高电平切换到低电平传输SCL低电平期间主机将数据放到SDA线上高位先后释放SCL,从机在SCL高电平期间读取SDA数据。故SCL在高电平期间不允许SDA有数据变化应答发送应答主机在接收完一个字节的数据后在下一个时钟发送应答数据0应答 1非应答接收应答主机在发送完一个字节的数据后在下一个时钟释放SDA线接收从机的应答0应答1非应答来个栗子首先需要确定每个从机的唯一地址7位、10位用来作为主机发送的地址而从设备地址会拥有可变部分指定地址写 对于指定的设备在指定的地址下写入指定的数据先发送起始条件SDA拉低发送一个字节的数据从机地址读写位(0写1读)主机查看应答信号开始写入一个字节数据