F4的IIC协议

2019-07-20 23:00发布

                          
void IIC_Send_Byte(u8 txd)
{                        
    u8 t;   
        SDA_OUT();             
    IIC_SCL=0;
    for(t=0;t<8;t++)
    {              
        IIC_SDA=(txd&0x80)>>7;
        txd<<=1;           
                delay_us(2);   //根据TEA57676,三个延时必须
                IIC_SCL=1;
                delay_us(2);
                IIC_SCL=0;       
                delay_us(2);
    }         
}
TEA5767是什么,为什么要加这几个延时

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
hpdell
1楼-- · 2019-07-21 05:00
根据 iic协议,数据之间的时间是4.7us的

也就是时钟信号
XHZSCONGE817
2楼-- · 2019-07-21 07:03
本帖最后由 XHZSCONGE817 于 2016-4-8 12:52 编辑

请问怎么根据这张时序图看出是4.7us?
来俩不甜的
3楼-- · 2019-07-21 07:54
看tlow 和 thigh
XHZSCONGE817
4楼-- · 2019-07-21 11:58
来俩不甜的 发表于 2016-4-8 17:13
看tlow 和 thigh

T low=1.2us,T high=0.6us根据数据有效性时序图是不是原子个的这段程序
void IIC_Send_Byte(u8 txd){                        
    u8 t;   
        SDA_OUT();             
    IIC_SCL=0;
    for(t=0;t<8;t++)
    {              
        IIC_SDA=(txd&0x80)>>7;
        txd<<=1;           
                delay_us(2);   
                IIC_SCL=1;
                delay_us(2);
                IIC_SCL=0;       
                delay_us(2);
    }         
}



改为如下更合适
void IIC_Send_Byte(u8 txd){                        
    u8 t;   
        SDA_OUT();             
    IIC_SCL=0;
    for(t=0;t<8;t++)
    {              
        IIC_SDA=(txd&0x80)>>7;
        txd<<=1;           
                delay_us(1.2);   
                IIC_SCL=1;
                delay_us(0.6);
                IIC_SCL=0;       
                delay_us(1.2);
    }         
}

菜鸟入手跪求各位大神详解
来俩不甜的
5楼-- · 2019-07-21 16:51
 精彩回答 2  元偷偷看……
xuande
6楼-- · 2019-07-21 21:23
XHZSCONGE817 发表于 2016-4-9 10:54
T low=1.2us,T high=0.6us根据数据有效性时序图是不是原子个的这段程序
void IIC_Send_Byte(u8 txd){    ...


差不多就是这样理解。


一周热门 更多>