下面是我用示波器观测到的一个时序图:
其中,黄色是SCL,蓝色是SDA;从机的地址我设的是0xA0,可以看到总线上出现了从机的地址,以及在第9个时钟成功的出现了ACK信号;但是我的主机代码里面是要在接收到应答之后再给从机发一个数据的,然而这个数据被塞进数据发送寄存器之后,一直没有被发送。从下面的时序图也可以看到,在应答信号之后,并没有出现那个要发的数据;
主机:
下面是往从机写一个数据:
执行IIC_Send_Byte后,dat被放进数据发送寄存器,但是没有发出去;单步调试了一下,发现在执行完IIC_Start后,从机地址以及应答出现在了总线上,但是之后,SCL线就被拉低了,SDA线是高的;
下面是IIC主机的配置初始化:
从机:
下面是从机的IIC初始化配置:
下面是从机对待主机的一些处理机制:
转载
|