指定地址写![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/11530f64b90b086f31bfdca83d754b69.png)
1.空闲状态都是高电平
2.主机给从机写数据,SCL高电平期间拉低SDA,产生起始条件(START即S)主函数中MyI2C_Start();
3.(起始条件后紧跟着的时序必须是发送一个字节的时序,字节内容:从机地址7位+读写位1位 = Slave Address+R/W = 确定 通信的对象+写入/读出
4.接收从机的应答位
这个时刻主机应该释放SDA,单看主机的波形,应该如红线所示,SDA回弹到高电平;
而与此同时,根据协议规定,从机要在这里拉低SDA,如绿色所示。从机应答的时候,从机立刻拽住SDA,应答结束后从机放开SDA。
综合主机从机的波形,结合线与特性,主机释放SDA后,SDA被从机拽住了,这个过程就代表从机产生了应答
5. 指定设备的内部地址,一般是寄存器地址如AD转换器。
6. 往地址中写内容。
7. 主机不需要继续传输了,就可以产生停止条件(STOP,P)
在停止条件之前,先拉低SDA,为后续停止条件中SDA的上升沿做准备,