STM32F0 模拟IIC 从机应答时序混乱是什么原因

2019-08-14 04:16发布

本帖最后由 怕水的鱼 于 2017-9-1 10:54 编辑

最近在搞电能芯片BQ32Z100-G1这个芯片 需要用IIC通信 用的是模拟IIC 发送数据时序正常 等待应答时时序很混乱第九个时钟脉冲保持的时间很乱  用的是原子哥的代码 不知道哪出现的问题 请教各位大神看看 谢谢了

1504233378(1).jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
怕水的鱼
1楼-- · 2019-08-15 07:27
现在不知道为什么应答的时候 我释放数据线  时钟线拉高  但是不知道为什么 等待应答的时候会影响我的时钟线 总是被拉低   从设备应答时会控制我的时钟线么
怕水的鱼
2楼-- · 2019-08-15 10:30
 精彩回答 2  元偷偷看……
huanghan
3楼-- · 2019-08-15 13:17
怕水的鱼 发表于 2017-9-1 12:46
你看那个0x08那个的应答 时钟高电平只持续了很短的时间不知道为什么 应答时总是影响我的时钟总线

uint8_t IIC_Wait_Ack(void)
{
        uint8_t ack;
        uint32_t ucErrTime=0;
        
        IIC_SDA_ON;
        Delayus(500);         //
        IIC_SCL_ON;
        Delayus(130);         
  
       SDA_IN();      //SDAéèÖÃÎaêäèë  //0x08那个的应答是这里产生的
        while(IIC_SDA_IN)
        {
                ucErrTime++;
                if(ucErrTime>2500)
                {
                        //IIC_Stop();
                        return 1;
                }
        }

        IIC_SCL_OFF;//ê±Öóêä3ö0            
        Delayus(130);         
        return 0;  
//        ack = (IIC_SDA_IN);                       // Read ACK state from Slave
//  IIC_SCL_OFF;                                    // SCL = 0
//  if (ack)                                  // Return ACK state to calling app
//    return (1);
//  else
//    return (0);
}
怕水的鱼
4楼-- · 2019-08-15 17:50
huanghan 发表于 2017-9-1 13:50
uint8_t IIC_Wait_Ack(void)
{
        uint8_t ack;

之前的时钟写的保持130 可是实际也就保持了1us 不知道是不是从设备影响了我的时钟总线

一周热门 更多>