打印
[技术问答]

第8-9个时钟,数据突变是怎么回事?

[复制链接]
2834|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
用gpio模拟I2c通信,
uint8_t wait_for_ack(void)
{
       
        uint8_t ACK=1;
        uint8_t timer =0
        GPIO_SetDir(GPIOB,GPIO_PIN10,GPIO_IN);
       
        GPIO_Analog_I2C_SCL(0);
        Delay();
        while((!GPIO_GetPinLevel(GPIOB,GPIO_PIN10))  && timer<50)
        {
        ACK = GPIO_GetPinLevel(GPIOB,GPIO_PIN10);
        Delay();
                break;
        }
        GPIO_Analog_I2C_SCL(1);
        Delay();
        GPIO_Analog_I2C_SDA(1);
        Delay();
        return ACK;
}

void i2c_SendByte(uint16_t byte)
{
    uint8_t i;
        GPIO_SetDir(GPIOB,GPIO_PIN9,GPIO_OUT);
        GPIO_SetDir(GPIOB,GPIO_PIN10,GPIO_OUT);
    for (i=0; i<8; i++)
    {               
               
                GPIO_Analog_I2C_SCL(0);
                Delay();
        if (byte & 0x80)   
                {
                        GPIO_Analog_I2C_SDA(1);
                }
                else
                {
                        GPIO_Analog_I2C_SDA(0);
                }
                Delay();
                GPIO_Analog_I2C_SCL(1);
        Delay();
        byte <<= 1;          
        Delay();
    }
       
        GPIO_Analog_I2C_SDA(1);   
        Delay();
}




使用特权

评论回复

相关帖子

沙发
chenjun89| | 2021-11-3 18:42 | 只看该作者
应该是切换IO方向时的抖动

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

0

粉丝