小渠儿绿豆 发表于 2016-11-29 14:12

关于TDA7564B的IIC驱动问题

各位亲们,最近我在调试一款音频功放芯片TDA7564B,按照数据手册配置,总共7个步骤。能工作输出音频,可是只能配置一次,就是说如果配置后打开芯片使他工作,然后做其他操作(比如配置13db增益,静音、低功耗什么的),就不工作了,IIC通信是正常的。简单来说就是那7个步骤只能操作一次,再操作芯片就失效了,需要重新上电。
有哪位亲们对这方面配置有了解的,帮帮忙,感激不尽。

小渠儿绿豆 发表于 2016-11-29 14:13

这是配置代码:
ubyte Open_TDA7564B(void)
{
    ubyte Databyte;
    /* 1 */
    Databyte   = 0B01000000;
    Databyte   = 0B00000000;
    CorfigIICData(IIC_TDA7564B_ADDR, IIC_TDA7564B_RECEIVE, Databyte, 2);
    if(StartIIC0(Transmit) == FALSE)//主控发送
    {
      return FALSE;
    }
    PIT1_DelayMs(2);
   
    /* 2 */
    CorfigIICData(IIC_TDA7564B_ADDR, IIC_TDA7564B_TRANSMISSION, Databyte, 4);
    if(StartIIC0(Receive) == FALSE)//主控接收
    {
      return FALSE;
    }
    PIT1_DelayMs(1);

    /* 3 */
    Databyte= 0B00000001;
    Databyte= 0B00010011;
    CorfigIICData(IIC_TDA7564B_ADDR, IIC_TDA7564B_RECEIVE, Databyte, 2);
    if(StartIIC0(Transmit) == FALSE)//主控发送
    {
      return FALSE;
    }
    PIT1_DelayMs(1);

    /* 4 */
    Databyte   = 0B00100110;
    Databyte   = 0B00010000;
    CorfigIICData(IIC_TDA7564B_ADDR, IIC_TDA7564B_RECEIVE, Databyte, 2);
    if(StartIIC0(Transmit) == FALSE)//主控发送
    {
      return FALSE;
    }
    PIT1_DelayMs(1);

    /* 5 */
    CorfigIICData(IIC_TDA7564B_ADDR, IIC_TDA7564B_TRANSMISSION, Databyte, 4);
    if(StartIIC0(Receive) == FALSE)//主控接收
    {
      return FALSE;
    }
    PIT1_DelayMs(1);

    /* 6 */
    Databyte   = 0B00011110;
    Databyte   = 0B00010100;
    CorfigIICData(IIC_TDA7564B_ADDR, IIC_TDA7564B_RECEIVE, Databyte, 2);
    if(StartIIC0(Transmit) == FALSE)//主控发送
    {
      return FALSE;
    }
    PIT1_DelayMs(2);

    /* 7 */
    CorfigIICData(IIC_TDA7564B_ADDR, IIC_TDA7564B_TRANSMISSION, Databyte, 4);
    if(StartIIC0(Receive) == FALSE)//主控接收
    {
      return FALSE;
    }

    return TRUE;
}
这是配置代码

小渠儿绿豆 发表于 2016-11-29 16:02

有谁用过这款芯片{:sad:}求助啊

小渠儿绿豆 发表于 2016-11-29 19:54

已解决,步骤之间需要延时,在手册里有说明

honkervip 发表于 2019-12-19 10:01

你是用什么开发板开发的
页: [1]
查看完整版本: 关于TDA7564B的IIC驱动问题