找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3153|回复: 2
收起左侧

stm32f103RCt6 驱动ADAU1701DSP源代码

[复制链接]
ID:511543 发表于 2020-1-15 09:27 | 显示全部楼层 |阅读模式
#ifndef _ADAU1701_H
#define _ADAU1701_H

#include "stm32f10x.h"  
#include "sys.h"  

#define ADAU1701_I2C_WR    0        /* 写控制bit */
#define ADAU1701_I2C_RD    1        /* 读控制bit */

#define   ClockSpeed            100000
typedef   unsigned short       ADI_DATA_U16;
typedef   const int            ADI_REG_TYPE;                    //define data storing in flash.

#define   DEVICE_ADDR_         0x68                   //设备地址
#define   Address_Length          2                        //define address as 16bit. //define address as 16bit.

#define   SIGMASTUDIOTYPE_FIXPOINT      0
#define   SIGMASTUDIOTYPE_INTEGER       1

/*
* 阅读设备寄存器
*/
#define SIGMA_READ_REGISTER( devAddress, address, length, pData ) {/*TODO: implement macro or define as function*/}

/*
* 设置寄存器字段的值
*/
#define SIGMA_SET_REGSITER_FIELD( regVal, fieldVal, fieldMask, fieldShift )  \
        { (regVal) = (((regVal) & (~(fieldMask))) | (((fieldVal) << (fieldShift)) && (fieldMask))) }
  
/*
* 获取寄存器字段的值
*/
#define SIGMA_GET_REGSITER_FIELD( regVal, fieldMask, fieldShift )  \
        { ((regVal) & (fieldMask)) >> (fieldShift) }

/*
  将浮点值转换为SigmaDSP(5.23)定点格式,此可选宏用于具有特殊实现的系统
*/
#define SIGMASTUDIOTYPE_FIXPOINT_CONVERT( _value ) {/*TODO: IMPLEMENT MACRO*/}

/*
* Convert integer data to system compatible format
*    This optional macro is intended for systems having special implementation
*    requirements (for example: limited memory size or endianness)
*/
#define SIGMASTUDIOTYPE_INTEGER_CONVERT( _value ) {/*TODO: IMPLEMENT MACRO*/}


#define ADAU1701_GPIO_PORT_I2C      GPIOB                          /* GPIO端口 */
#define ADAU1701_RCC_I2C_PORT       RCC_APB2Periph_GPIOB        /* GPIO端口时钟 */
#define ADAU1701_I2C_SCL_PIN          GPIO_Pin_10            /* 连接到SCL时钟线的GPIO */
#define ADAU1701_I2C_SDA_PIN          GPIO_Pin_11            /* 连接到SDA数据线的GPIO */

#define ADAU1701_I2C_SCL_1()  GPIO_SetBits(ADAU1701_GPIO_PORT_I2C, ADAU1701_I2C_SCL_PIN)          /* SCL = 1 */
#define ADAU1701_I2C_SCL_0()  GPIO_ResetBits(ADAU1701_GPIO_PORT_I2C, ADAU1701_I2C_SCL_PIN)        /* SCL = 0 */
   
#define ADAU1701_I2C_SDA_1()  GPIO_SetBits(ADAU1701_GPIO_PORT_I2C, ADAU1701_I2C_SDA_PIN)          /* SDA = 1 */
#define ADAU1701_I2C_SDA_0()  GPIO_ResetBits(ADAU1701_GPIO_PORT_I2C, ADAU1701_I2C_SDA_PIN)        /* SDA = 0 */

#define ADAU1701_I2C_SDA_READ()  GPIO_ReadInputDataBit(ADAU1701_GPIO_PORT_I2C, ADAU1701_I2C_SDA_PIN)    /* 读SDA口线状态 */

void i2c_CfgGpio(void);                   //I2C 引脚配置
void i2c_Start(void);                     //开始信号
void i2c_Stop(void);                      //结束信号
void i2c_SendByte(uint8_t _ucByte);       //发送一个字节
uint8_t i2c_ReadByte(void);               //接收一个字节
uint8_t i2c_WaitAck(void);                //等待应答
void i2c_Ack(void);                       //应答
void i2c_NAck(void);                      //非应答
uint8_t i2c_CheckDevice(uint8_t _Address);//检查设备地址是否存在


void SIGMA_WRITE_REGISTER_BLOCK(int devAddress, int address, int length, const ADI_REG_TYPE *pData ) ;  // 向寄存器写一块数据
void SIGMA_SAFELOAD_WRITE_REGISTER(int devAddress, int address, int length, const ADI_REG_TYPE *pData ) ;

void MASTER_MUTE_download(void);   // 静音
void MASTER_UNMUTE_download(void); // 取消静音

// 调节bass
void BASS0_download(void);   // 调 bass 为 0
void BASS1_download(void);   // 调 bass 为 +1
void BASS2_download(void);   // 调 bass 为 +2
void BASS3_download(void);   // 调 bass 为 +3
void BASS4_download(void);   // 调 bass 为 +4
void BASS5_download(void);   // 调 bass 为 +5
void BASS6_download(void);   // 调 bass 为 +6
void BASS7_download(void);   // 调 bass 为 +7
void BASS8_download(void);   // 调 bass 为 +8
void BASS9_download(void);   // 调 bass 为 +9
void BASS10_download(void);  // 调 bass 为 +10
void BASS_1_download(void);  // 调 bass 为 -1
void BASS_2_download(void);  // 调 bass 为 -2
void BASS_3_download(void);  // 调 bass 为 -3
void BASS_4_download(void);  // 调 bass 为 -4
void BASS_5_download(void);  // 调 bass 为 -5
void BASS_6_download(void);  // 调 bass 为 -6
void BASS_7_download(void);  // 调 bass 为 -7
void BASS_8_download(void);  // 调 bass 为 -8
void BASS_9_download(void);  // 调 bass 为 -9
void BASS_10_download(void); // 调 bass 为 -10

// 调节Treble
void TRE0_download(void);    // 调 Treble 为 0
void TRE1_download(void);    // 调 Treble 为 +1
void TRE2_download(void);    // 调 Treble 为 +2
void TRE3_download(void);    // 调 Treble 为 +3
void TRE4_download(void);    // 调 Treble 为 +4
void TRE5_download(void);    // 调 Treble 为 +5
void TRE6_download(void);    // 调 Treble 为 +6
void TRE7_download(void);    // 调 Treble 为 +7
void TRE8_download(void);    // 调 Treble 为 +8
void TRE9_download(void);    // 调 Treble 为 +9
void TRE10_download(void);   // 调 Treble 为 +10
void TRE_1_download(void);   // 调 Treble 为 -1
void TRE_2_download(void);   // 调 Treble 为 -2
void TRE_3_download(void);   // 调 Treble 为 -3
void TRE_4_download(void);   // 调 Treble 为 -4
void TRE_5_download(void);   // 调 Treble 为 -5
void TRE_6_download(void);   // 调 Treble 为 -6
void TRE_7_download(void);   // 调 Treble 为 -7
void TRE_8_download(void);   // 调 Treble 为 -8
void TRE_9_download(void);   // 调 Treble 为 -9
void TRE_10_download(void);  // 调 Treble 为 -10


#endif

#include "adau1701.h"


/*
*********************************************************************************************************
*    函 数 名: i2c_CfgGpio
*    功能说明: 配置I2C总线的GPIO,采用模拟IO的方式实现
*    形    参:无
*    返 回 值: 无
*********************************************************************************************************
*/
void i2c_CfgGpio(void)
{
        GPIO_InitTypeDef  GPIO_InitStructure;
        RCC_APB2PeriphClockCmd(ADAU1701_RCC_I2C_PORT, ENABLE);    /* 打开GPIO时钟 */

        GPIO_InitStructure.GPIO_Pin = ADAU1701_I2C_SCL_PIN | ADAU1701_I2C_SDA_PIN;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;        /* 开漏输出 */
        GPIO_Init(ADAU1701_GPIO_PORT_I2C, &GPIO_InitStructure);
        /* 给一个停止信号, 复位I2C总线上的所有设备到待机模式 */
        i2c_Stop();
}

static void i2c_Delay(void)  // i2c 延时
{
        uint8_t i;
    /* 
         下面的时间是通过逻辑分析仪测试得到的。
    工作条件:CPU主频72MHz ,MDK编译环境,1级优化
  
        循环次数为10时,SCL频率 = 205KHz
        循环次数为7时,SCL频率 = 347KHz, SCL高电平时间1.5us,SCL低电平时间2.87us
         循环次数为5时,SCL频率 = 421KHz, SCL高电平时间1.25us,SCL低电平时间2.375us
    */
        for (i = 0; i < 10; i++);
}

/*
*********************************************************************************************************
*    函 数 名: i2c_Start
*    功能说明: CPU发起I2C总线启动信号
*    形    参:无
*    返 回 值: 无
*********************************************************************************************************
*/
void i2c_Start(void)
{
    /* 当SCL高电平时,SDA出现一个下跳沿表示I2C总线启动信号 */
    ADAU1701_I2C_SDA_1();
    ADAU1701_I2C_SCL_1();
    i2c_Delay();
    ADAU1701_I2C_SDA_0();
    i2c_Delay();
    ADAU1701_I2C_SCL_0(); // 牵住时钟线,准备发送数据
    i2c_Delay();
}

/*
*********************************************************************************************************
*    函 数 名: i2c_Start
*    功能说明: CPU发起I2C总线停止信号
*    形    参:无
*    返 回 值: 无
*********************************************************************************************************
*/
void i2c_Stop(void)
{
    /* 当SCL高电平时,SDA出现一个上跳沿表示I2C总线停止信号 */
    ADAU1701_I2C_SDA_0();
    ADAU1701_I2C_SCL_1();
    i2c_Delay();
    ADAU1701_I2C_SDA_1();
}

/*
*********************************************************************************************************
*    函 数 名: i2c_WaitAck
*    功能说明: CPU产生一个时钟,并读取器件的ACK应答信号
*    形    参:无
*    返 回 值: 返回0表示正确应答,1表示无器件响应
*********************************************************************************************************
*/
uint8_t i2c_WaitAck(void)
{
    uint8_t re;

    ADAU1701_I2C_SDA_1();    /* CPU释放SDA总线 */
    i2c_Delay();
    ADAU1701_I2C_SCL_1();    /* CPU驱动SCL = 1, 此时器件会返回ACK应答 */
    i2c_Delay();
    if (ADAU1701_I2C_SDA_READ())    /* CPU读取SDA口线状态 */
    {
        re = 1;
    }
    else
    {
        re = 0;
    }
    ADAU1701_I2C_SCL_0();
    i2c_Delay();
    return re;
}

/*
*********************************************************************************************************
*    函 数 名: i2c_Ack
*    功能说明: CPU产生一个ACK信号
*    形    参:无
*    返 回 值: 无
*********************************************************************************************************
*/
void i2c_Ack(void)
{
    ADAU1701_I2C_SDA_0();    /* CPU驱动SDA = 0 */
    i2c_Delay();
    ADAU1701_I2C_SCL_1();    /* CPU产生1个时钟 */
    i2c_Delay();
    ADAU1701_I2C_SCL_0();
    i2c_Delay();
    ADAU1701_I2C_SDA_1();    /* CPU释放SDA总线 */
}

/*
*********************************************************************************************************
*    函 数 名: i2c_NAck
*    功能说明: CPU产生1个NACK信号
*    形    参:无
*    返 回 值: 无
*********************************************************************************************************
*/
void i2c_NAck(void)
{
    ADAU1701_I2C_SDA_1();    /* CPU驱动SDA = 1 */
    i2c_Delay();
    ADAU1701_I2C_SCL_1();    /* CPU产生1个时钟 */
    i2c_Delay();
    ADAU1701_I2C_SCL_0();
    i2c_Delay();   
}

/*
*********************************************************************************************************
*    函 数 名: i2c_SendByte
*    功能说明: CPU向I2C总线设备发送8bit数据
*    形    参:_ucByte : 等待发送的字节
*    返 回 值: 无
*********************************************************************************************************
*/
void i2c_SendByte(uint8_t _ucByte)
{
    uint8_t i;

    /* 先发送字节的高位bit7 */
    for (i = 0; i < 8; i++)
    {        
        if (_ucByte & 0x80)
        {
            ADAU1701_I2C_SDA_1();
        }
        else
        {
            ADAU1701_I2C_SDA_0();
        }
        i2c_Delay();
        ADAU1701_I2C_SCL_1();
        i2c_Delay();   
        ADAU1701_I2C_SCL_0();
        if (i == 7)
        {
             ADAU1701_I2C_SDA_1(); // 释放总线
        }
        _ucByte <<= 1;    /* 左移一个bit */
        i2c_Delay();
    }
}

/*
*********************************************************************************************************
*    函 数 名: i2c_ReadByte
*    功能说明: CPU从I2C总线设备读取8bit数据
*    形    参:无
*    返 回 值: 读到的数据
*********************************************************************************************************
*/
uint8_t i2c_ReadByte(void)
{
    uint8_t i;
    uint8_t value;

    /* 读到第1个bit为数据的bit7 */
    value = 0;
    for (i = 0; i < 8; i++)
    {
        value <<= 1;
        ADAU1701_I2C_SCL_1();
        i2c_Delay();
        if (ADAU1701_I2C_SDA_READ())
        {
            value++;
        }
        ADAU1701_I2C_SCL_0();
        i2c_Delay();
    }
    return value;
}

/*
*********************************************************************************************************
*    函 数 名: i2c_CheckDevice
*    功能说明: 检测I2C总线设备,CPU向发送设备地址,然后读取设备应答来判断该设备是否存在
*    形    参:_Address:设备的I2C总线地址
*    返 回 值: 返回值 0 表示正确, 返回1表示未探测到
*********************************************************************************************************
*/
uint8_t i2c_CheckDevice(uint8_t _Address)
{
   
    uint8_t ucAck;
    i2c_CfgGpio();        /* 配置GPIO */
    i2c_Start();        /* 发送启动信号 */
    /* 发送设备地址+读写控制bit(0 = w, 1 = r) bit7 先传 */
    i2c_SendByte(_Address | ADAU1701_I2C_WR);
    ucAck = i2c_WaitAck();    /* 检测设备的ACK应答 */
    i2c_Stop();            /* 发送停止信号 */
    return ucAck;
}


void SIGMA_WRITE_REGISTER_BLOCK(int devAddress, int address, int length, const ADI_REG_TYPE *pData )
{
        uint8_t subaddress0;
        uint8_t subaddress1;
        uint16_t i;
        subaddress0 = (address & 0xFF00)>>8;
        subaddress1 = address & 0x00FF;
        
        i2c_Start();
        i2c_SendByte(devAddress);    // 设备地址
        i2c_WaitAck();               // 等待应答
        i2c_SendByte(subaddress0);   // 寄存器高位地址
        i2c_WaitAck();               // 等待应答
        i2c_SendByte(subaddress1);   // 寄存器地位地址
        i2c_WaitAck();               // 等待应答
        for(i=0;i<length;i++)
        {
            i2c_SendByte(pData[i]);   // 发送数据
            i2c_WaitAck();            // 等待应答
        }
        i2c_Stop();
}

/*
*        ADAU1701 Sigmastudio Safeload
*        step 1. write target address to safeload address register, address start with 0x0815.
*        step 2. write target data to safeload data register, address start with 0x0810.
*        step 3. set bit IST in DSP CORE control register, address 0x081c, to inital safeload transmitter.
*/
void SIGMA_SAFELOAD_WRITE_REGISTER(int devAddress, int address, int length, const ADI_REG_TYPE *pData )
{
    uint8_t subaddress0;
    uint8_t subaddress1;
//    uint16_t i=0;
    static uint16_t f = 0;        //set flag for triggering safeload transmite, after finished load 5 safeload data register.
    subaddress0 = (address & 0xFF00)>>8;
  subaddress1 = address & 0x00FF;
   
        // write target data to 0x0810
        i2c_Start();
        i2c_SendByte(devAddress);
        i2c_WaitAck();            // 等待应答
        i2c_SendByte(0x08);
        i2c_WaitAck();            // 等待应答   
        i2c_SendByte(0x10+f);
        i2c_WaitAck();            // 等待应答
        //number of prarameter need to loading, length need offset -2? deal with while length >5?
        i2c_SendByte(0x00);
        i2c_WaitAck();            // 等待应答
        i2c_SendByte(pData[0]);
        i2c_WaitAck();            // 等待应答
        i2c_SendByte(pData[1]);
        i2c_WaitAck();            // 等待应答
        i2c_SendByte(pData[2]);
        i2c_WaitAck();            // 等待应答
        i2c_SendByte(pData[3]);
        i2c_WaitAck();            // 等待应答
        i2c_Stop();
        // write     target address to safeload address register start with 0x0815
        i2c_Start();
        i2c_SendByte(devAddress);
        i2c_WaitAck();            // 等待应答
        i2c_SendByte(0x08);
        i2c_WaitAck();            // 等待应答
        i2c_SendByte(0x15+f);
      i2c_WaitAck();            // 等待应答
        i2c_SendByte(subaddress0);
        i2c_WaitAck();            // 等待应答
        i2c_SendByte(subaddress1);
        i2c_WaitAck();            // 等待应答
      i2c_Stop();
   
// trigger safeload transmitter.
    f++;
    if(f == 5)
    {
        uint8_t recv0;
        uint8_t recv1;
        f = 0;
        i2c_Start();
        i2c_SendByte(devAddress);   
        i2c_WaitAck();            // 等待应答
        i2c_SendByte(0x08);
        i2c_WaitAck();            // 等待应答
        i2c_SendByte(0x1C);
        i2c_WaitAck();            // 等待应答
      i2c_Start();
        i2c_SendByte(devAddress+1);   
        i2c_WaitAck();            // 等待应答
        recv0 = i2c_ReadByte();
        i2c_Ack();
        recv1 = i2c_ReadByte();
        i2c_Stop();                        // read data from DSP CORE control register.
        
        recv1 = recv1 | 0x20    ;    // set bit IST to trigger safeload.

        i2c_Start();                        // send data to DSP CORE control register.
        i2c_SendByte(devAddress);   
        i2c_WaitAck();            // 等待应答
        i2c_SendByte(0x08);
        i2c_WaitAck();            // 等待应答
        i2c_SendByte(0x1c);
        i2c_WaitAck();            // 等待应答
        i2c_SendByte(recv0);
        i2c_WaitAck();            // 等待应答
        i2c_SendByte(recv1);
        i2c_WaitAck();            // 等待应答
        i2c_Stop();
            
    }
}





//静音
ADI_REG_TYPE MASTER_MUTE_0[4] = {0x00, 0x00, 0x00, 0x00};
void MASTER_MUTE_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x003D, 4, MASTER_MUTE_0);            /* MuteNoSlewAlg1mute */
}

//取消静音
ADI_REG_TYPE MASTER_UNMUTE_0[4] = {0x00, 0x80, 0x00, 0x00};
void MASTER_UNMUTE_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x003D, 4, MASTER_UNMUTE_0);            /* MuteNoSlewAlg1mute */
}


/*****************************************音量调节**********************************************/

// 调 bass 为 0
ADI_REG_TYPE BASS0_0[4] = {0xFF, 0xBB, 0x10, 0x41};
ADI_REG_TYPE BASS0_1[4] = {0x00, 0x35, 0xFF, 0xDB};
ADI_REG_TYPE BASS0_2[4] = {0x00, 0x10, 0x0D, 0xE0};
ADI_REG_TYPE BASS0_3[4] = {0x00, 0xA8, 0x6F, 0xB3};
ADI_REG_TYPE BASS0_4[4] = {0xFF, 0xD6, 0x72, 0x52};
void BASS0_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, BASS0_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, BASS0_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, BASS0_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, BASS0_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, BASS0_4);            /* EQ1940Dual12A1 */
}

// 调 bass 为 +1
ADI_REG_TYPE BASS1_0[4] = {0xFF, 0xBB, 0x10, 0x57};
ADI_REG_TYPE BASS1_1[4] = {0x00, 0x36, 0x0D, 0x40};
ADI_REG_TYPE BASS1_2[4] = {0x00, 0x10, 0x10, 0xF3};
ADI_REG_TYPE BASS1_3[4] = {0x00, 0xA8, 0x88, 0x0D};
ADI_REG_TYPE BASS1_4[4] = {0xFF, 0xD6, 0x6A, 0x4F};
void BASS1_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, BASS1_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, BASS1_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, BASS1_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, BASS1_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, BASS1_4);            /* EQ1940Dual12A1 */
}

// 调 bass 为 +2
ADI_REG_TYPE BASS2_0[4] = {0xFF, 0xBB, 0x10, 0x6D};
ADI_REG_TYPE BASS2_1[4] = {0x00, 0x36, 0x1A, 0x91};
ADI_REG_TYPE BASS2_2[4] = {0x00, 0x10, 0x14, 0x01};
ADI_REG_TYPE BASS2_3[4] = {0x00, 0xA8, 0xA0, 0x43};
ADI_REG_TYPE BASS2_4[4] = {0xFF, 0xD6, 0x62, 0x59};
void BASS2_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, BASS2_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, BASS2_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, BASS2_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, BASS2_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, BASS2_4);            /* EQ1940Dual12A1 */
}

// 调 bass 为 +3
ADI_REG_TYPE BASS3_0[4] = {0xFF, 0xBB, 0x10, 0x83};
ADI_REG_TYPE BASS3_1[4] = {0x00, 0x36, 0x27, 0xB9};
ADI_REG_TYPE BASS3_2[4] = {0x00, 0x10, 0x17, 0x06};
ADI_REG_TYPE BASS3_3[4] = {0x00, 0xA8, 0xB8, 0x2D};
ADI_REG_TYPE BASS3_4[4] = {0xFF, 0xD6, 0x5A, 0x7B};
void BASS3_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, BASS3_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, BASS3_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, BASS3_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, BASS3_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, BASS3_4);            /* EQ1940Dual12A1 */
}

// 调 bass 为 +4
ADI_REG_TYPE BASS4_0[4] = {0xFF, 0xBB, 0x10, 0x99};
ADI_REG_TYPE BASS4_1[4] = {0x00, 0x36, 0x34, 0xA1};
ADI_REG_TYPE BASS4_2[4] = {0x00, 0x10, 0x19, 0xFC};
ADI_REG_TYPE BASS4_3[4] = {0x00, 0xA8, 0xCF, 0xA3};
ADI_REG_TYPE BASS4_4[4] = {0xFF, 0xD6, 0x52, 0xC4};
void BASS4_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, BASS4_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, BASS4_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, BASS4_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, BASS4_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, BASS4_4);            /* EQ1940Dual12A1 */
}

// 调 bass 为 +5
ADI_REG_TYPE BASS5_0[4] = {0xFF, 0x81, 0xAA, 0xED};
ADI_REG_TYPE BASS5_1[4] = {0x00, 0x91, 0x19, 0x61};
ADI_REG_TYPE BASS5_2[4] = {0xFF, 0xEF, 0x16, 0x44};
ADI_REG_TYPE BASS5_3[4] = {0x00, 0x8F, 0xA6, 0xA8};
ADI_REG_TYPE BASS5_4[4] = {0xFF, 0xEF, 0x4E, 0x79};
void BASS5_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, BASS5_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, BASS5_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, BASS5_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, BASS5_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, BASS5_4);            /* EQ1940Dual12A1 */
}

// 调 bass 为 +6
ADI_REG_TYPE BASS6_0[4] = {0xFF, 0xBB, 0x10, 0xC2};
ADI_REG_TYPE BASS6_1[4] = {0x00, 0x36, 0x4D, 0x67};
ADI_REG_TYPE BASS6_2[4] = {0x00, 0x10, 0x1F, 0xAC};
ADI_REG_TYPE BASS6_3[4] = {0x00, 0xA8, 0xFC, 0xAE};
ADI_REG_TYPE BASS6_4[4] = {0xFF, 0xD6, 0x43, 0xF3};
void  BASS6_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, BASS6_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, BASS6_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, BASS6_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, BASS6_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, BASS6_4);            /* EQ1940Dual12A1 */
}

// 调 bass 为 +7
ADI_REG_TYPE BASS7_0[4] = {0xFF, 0xBB, 0x10, 0xD5};
ADI_REG_TYPE BASS7_1[4] = {0x00, 0x36, 0x59, 0x26};
ADI_REG_TYPE BASS7_2[4] = {0x00, 0x10, 0x22, 0x5E};
ADI_REG_TYPE BASS7_3[4] = {0x00, 0xA9, 0x12, 0x08};
ADI_REG_TYPE BASS7_4[4] = {0xFF, 0xD6, 0x3C, 0xED};
void  BASS7_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, BASS7_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, BASS7_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, BASS7_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, BASS7_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, BASS7_4);            /* EQ1940Dual12A1 */
}

// 调 bass 为 +8
ADI_REG_TYPE BASS8_0[4] = {0xFF, 0xBB, 0x10, 0xE8};
ADI_REG_TYPE BASS8_1[4] = {0x00, 0x36, 0x64, 0x65};
ADI_REG_TYPE BASS8_2[4] = {0x00, 0x10, 0x24, 0xF3};
ADI_REG_TYPE BASS8_3[4] = {0x00, 0xA9, 0x26, 0x7A};
ADI_REG_TYPE BASS8_4[4] = {0xFF, 0xD6, 0x36, 0x34};
void  BASS8_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, BASS8_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, BASS8_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, BASS8_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, BASS8_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, BASS8_4);            /* EQ1940Dual12A1 */
}
// 调 bass 为 +9
ADI_REG_TYPE BASS9_0[4] = {0xFF, 0xBB, 0x10, 0xFA};
ADI_REG_TYPE BASS9_1[4] = {0x00, 0x36, 0x6F, 0x1A};
ADI_REG_TYPE BASS9_2[4] = {0x00, 0x10, 0x27, 0x68};
ADI_REG_TYPE BASS9_3[4] = {0x00, 0xA9, 0x39, 0xF2};
ADI_REG_TYPE BASS9_4[4] = {0xFF, 0xD6, 0x2F, 0xCC};
void  BASS9_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, BASS9_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, BASS9_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, BASS9_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, BASS9_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, BASS9_4);            /* EQ1940Dual12A1 */
}
// 调 bass 为 +10
ADI_REG_TYPE BASS10_0[4] = {0xFF, 0xBB, 0x11, 0x0B};
ADI_REG_TYPE BASS10_1[4] = {0x00, 0x36, 0x79, 0x3F};
ADI_REG_TYPE BASS10_2[4] = {0x00, 0x10, 0x29, 0xBC};
ADI_REG_TYPE BASS10_3[4] = {0x00, 0xA9, 0x4C, 0x63};
ADI_REG_TYPE BASS10_4[4] = {0xFF, 0xD6, 0x29, 0xBC};
void  BASS10_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, BASS10_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, BASS10_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, BASS10_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, BASS10_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, BASS10_4);            /* EQ1940Dual12A1 */
}

// 调 bass 为 -1
ADI_REG_TYPE BASS_1_0[4] = {0xFF, 0xBB, 0x10, 0x2B};
ADI_REG_TYPE BASS_1_1[4] = {0x00, 0x35, 0xF2, 0x78};
ADI_REG_TYPE BASS_1_2[4] = {0x00, 0x10, 0x0A, 0xCD};
ADI_REG_TYPE BASS_1_3[4] = {0x00, 0xA8, 0x57, 0x5D};
ADI_REG_TYPE BASS_1_4[4] = {0xFF, 0xD6, 0x7A, 0x53};
void BASS_1_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, BASS_1_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, BASS_1_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, BASS_1_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, BASS_1_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, BASS_1_4);            /* EQ1940Dual12A1 */
}

// 调 bass 为 -2
ADI_REG_TYPE BASS_2_0[4] = {0xFF, 0xBB, 0x10, 0x15};
ADI_REG_TYPE BASS_2_1[4] = {0x00, 0x35, 0xE5, 0x2E};
ADI_REG_TYPE BASS_2_2[4] = {0x00, 0x10, 0x07, 0xC1};
ADI_REG_TYPE BASS_2_3[4] = {0x00, 0xA8, 0x3F, 0x34};
ADI_REG_TYPE BASS_2_4[4] = {0xFF, 0xD6, 0x82, 0x45};
void BASS_2_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, BASS_2_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, BASS_2_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, BASS_2_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, BASS_2_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, BASS_2_4);            /* EQ1940Dual12A1 */
}

// 调 bass 为 -3
ADI_REG_TYPE BASS_3_0[4] = {0xFF, 0xBB, 0x0F, 0xFF};
ADI_REG_TYPE BASS_3_1[4] = {0x00, 0x35, 0xD8, 0x14};
ADI_REG_TYPE BASS_3_2[4] = {0x00, 0x10, 0x04, 0xBF};
ADI_REG_TYPE BASS_3_3[4] = {0x00, 0xA8, 0x27, 0x62};
ADI_REG_TYPE BASS_3_4[4] = {0xFF, 0xD6, 0x8A, 0x1B};
void BASS_3_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, BASS_3_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, BASS_3_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, BASS_3_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, BASS_3_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, BASS_3_4);            /* EQ1940Dual12A1 */
}

// 调 bass 为 -4
ADI_REG_TYPE BASS_4_0[4] = {0xFF, 0xBB, 0x0F, 0xEA};
ADI_REG_TYPE BASS_4_1[4] = {0x00, 0x35, 0xCB, 0x3D};
ADI_REG_TYPE BASS_4_2[4] = {0x00, 0x10, 0x01, 0xCC};
ADI_REG_TYPE BASS_4_3[4] = {0x00, 0xA8, 0x10, 0x0A};
ADI_REG_TYPE BASS_4_4[4] = {0xFF, 0xD6, 0x91, 0xC9};
void BASS_4_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, BASS_4_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, BASS_4_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, BASS_4_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, BASS_4_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, BASS_4_4);            /* EQ1940Dual12A1 */
}

// 调 bass 为 -5
ADI_REG_TYPE BASS_5_0[4] = {0xFF, 0xBB, 0x0F, 0xD5};
ADI_REG_TYPE BASS_5_1[4] = {0x00, 0x35, 0xBE, 0xBD};
ADI_REG_TYPE BASS_5_2[4] = {0x00, 0x0F, 0xFE, 0xEE};
ADI_REG_TYPE BASS_5_3[4] = {0x00, 0xA7, 0xF9, 0x50};
ADI_REG_TYPE BASS_5_4[4] = {0xFF, 0xD6, 0x99, 0x42};
void BASS_5_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, BASS_5_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, BASS_5_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, BASS_5_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, BASS_5_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, BASS_5_4);            /* EQ1940Dual12A1 */
}

// 调 bass 为 -6
ADI_REG_TYPE BASS_6_0[4] = {0xFF, 0xBB, 0x0F, 0xC1};
ADI_REG_TYPE BASS_6_1[4] = {0x00, 0x35, 0xB2, 0xA4};
ADI_REG_TYPE BASS_6_2[4] = {0x00, 0x0F, 0xFC, 0x27};
ADI_REG_TYPE BASS_6_3[4] = {0x00, 0xA7, 0xE3, 0x52};
ADI_REG_TYPE BASS_6_4[4] = {0xFF, 0xD6, 0xA0, 0x7E};
void BASS_6_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, BASS_6_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, BASS_6_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, BASS_6_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, BASS_6_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, BASS_6_4);            /* EQ1940Dual12A1 */
}

// 调 bass 为 -7
ADI_REG_TYPE BASS_7_0[4] = {0xFF, 0xBB, 0x0F, 0xAD};
ADI_REG_TYPE BASS_7_1[4] = {0x00, 0x35, 0xA7, 0x01};
ADI_REG_TYPE BASS_7_2[4] = {0x00, 0x0F, 0xF9, 0x7B};
ADI_REG_TYPE BASS_7_3[4] = {0x00, 0xA7, 0xCE, 0x2B};
ADI_REG_TYPE BASS_7_4[4] = {0xFF, 0xD6, 0xA7, 0x73};
void BASS_7_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, BASS_7_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, BASS_7_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, BASS_7_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, BASS_7_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, BASS_7_4);            /* EQ1940Dual12A1 */
}

// 调 bass 为 -8
ADI_REG_TYPE BASS_8_0[4] = {0xFF, 0xBB, 0x0F, 0x9B};
ADI_REG_TYPE BASS_8_1[4] = {0x00, 0x35, 0x9B, 0xE1};
ADI_REG_TYPE BASS_8_2[4] = {0x00, 0x0F, 0xF6, 0xEE};
ADI_REG_TYPE BASS_8_3[4] = {0x00, 0xA7, 0xB9, 0xF1};
ADI_REG_TYPE BASS_8_4[4] = {0xFF, 0xD6, 0xAE, 0x1A};
void BASS_8_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, BASS_8_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, BASS_8_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, BASS_8_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, BASS_8_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, BASS_8_4);            /* EQ1940Dual12A1 */
}

// 调 bass 为 -9
ADI_REG_TYPE BASS_9_0[4] = {0xFF, 0xBB, 0x0F, 0x89};
ADI_REG_TYPE BASS_9_1[4] = {0x00, 0x35, 0x91, 0x4B};
ADI_REG_TYPE BASS_9_2[4] = {0x00, 0x0F, 0xF4, 0x80};
ADI_REG_TYPE BASS_9_3[4] = {0x00, 0xA7, 0xA6, 0xB3};
ADI_REG_TYPE BASS_9_4[4] = {0xFF, 0xD6, 0xB4, 0x6E};
void BASS_9_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, BASS_9_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, BASS_9_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, BASS_9_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, BASS_9_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, BASS_9_4);            /* EQ1940Dual12A1 */
}

// 调 bass 为 -10
ADI_REG_TYPE BASS_10_0[4] = {0xFF, 0xBB, 0x0F, 0x79};
ADI_REG_TYPE BASS_10_1[4] = {0x00, 0x35, 0x87, 0x48};
ADI_REG_TYPE BASS_10_2[4] = {0x00, 0x0F, 0xF2, 0x33};
ADI_REG_TYPE BASS_10_3[4] = {0x00, 0xA7, 0x94, 0x7F};
ADI_REG_TYPE BASS_10_4[4] = {0xFF, 0xD6, 0xBA, 0x6B};
void BASS_10_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, BASS_10_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, BASS_10_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, BASS_10_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, BASS_10_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, BASS_10_4);            /* EQ1940Dual12A1 */
}

/*****************************************调节Treble**********************************************/
// 调 Treble 为 0
ADI_REG_TYPE TRE0_0[4] = {0xFF, 0x81, 0xAA, 0x26};
ADI_REG_TYPE TRE0_1[4] = {0x00, 0x90, 0xA1, 0xE3};
ADI_REG_TYPE TRE0_2[4] = {0xFF, 0xEF, 0x26, 0x03};
ADI_REG_TYPE TRE0_3[4] = {0x00, 0x8F, 0x2F, 0xD7};
ADI_REG_TYPE TRE0_4[4] = {0xFF, 0xEF, 0x5E, 0x1D};
void TRE0_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, TRE0_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, TRE0_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, TRE0_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, TRE0_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, TRE0_4);            /* EQ1940Dual12A1 */
}

// 调 Treble 为 1
ADI_REG_TYPE TRE1_0[4] = {0xFF, 0x79, 0x2A, 0xD9};
ADI_REG_TYPE TRE1_1[4] = {0x00, 0x9E, 0x0C, 0xB1};
ADI_REG_TYPE TRE1_2[4] = {0xFF, 0xEA, 0x46, 0xF3};
ADI_REG_TYPE TRE1_3[4] = {0x00, 0x8B, 0x72, 0xF0};
ADI_REG_TYPE TRE1_4[4] = {0xFF, 0xF3, 0x0E, 0x93};
void TRE1_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, TRE1_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, TRE1_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, TRE1_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, TRE1_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, TRE1_4);            /* EQ1940Dual12A1 */
}

// 调 Treble 为 2
ADI_REG_TYPE TRE2_0[4] = {0xFF, 0x70, 0x24, 0x03};
ADI_REG_TYPE TRE2_1[4] = {0x00, 0xAC, 0x4D, 0x82};
ADI_REG_TYPE TRE2_2[4] = {0xFF, 0xE5, 0x1A, 0x31};
ADI_REG_TYPE TRE2_3[4] = {0x00, 0x87, 0x7A, 0x69};
ADI_REG_TYPE TRE2_4[4] = {0xFF, 0xF6, 0xF9, 0xE1};
void TRE2_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, TRE2_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, TRE2_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, TRE2_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, TRE2_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, TRE2_4);            /* EQ1940Dual12A1 */
}

// 调 Treble 为 3
ADI_REG_TYPE TRE3_0[4] = {0xFF, 0x66, 0x99, 0x4A};
ADI_REG_TYPE TRE3_1[4] = {0x00, 0xBB, 0x5E, 0x92};
ADI_REG_TYPE TRE3_2[4] = {0xFF, 0xDF, 0xA1, 0xD3};
ADI_REG_TYPE TRE3_3[4] = {0x00, 0x83, 0x47, 0xDF};
ADI_REG_TYPE TRE3_4[4] = {0xFF, 0xFB, 0x1E, 0x71};
void TRE3_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, TRE3_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, TRE3_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, TRE3_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, TRE3_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, TRE3_4);            /* EQ1940Dual12A1 */
}

// 调 Treble 为 4
ADI_REG_TYPE TRE4_0[4] = {0xFF, 0x5C, 0x90, 0x9C};
ADI_REG_TYPE TRE4_1[4] = {0x00, 0xCB, 0x36, 0x87};
ADI_REG_TYPE TRE4_2[4] = {0xFF, 0xD9, 0xE1, 0x3E};
ADI_REG_TYPE TRE4_3[4] = {0x00, 0x7E, 0xDD, 0xEC};
ADI_REG_TYPE TRE4_4[4] = {0xFF, 0xFF, 0x79, 0xB3};
void TRE4_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, TRE4_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, TRE4_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, TRE4_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, TRE4_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, TRE4_4);            /* EQ1940Dual12A1 */
}

// 调 Treble 为 5
ADI_REG_TYPE TRE5_0[4] = {0xFF, 0x52, 0x12, 0x42};
ADI_REG_TYPE TRE5_1[4] = {0x00, 0xDB, 0xC8, 0x48};
ADI_REG_TYPE TRE5_2[4] = {0xFF, 0xD3, 0xDD, 0x35};
ADI_REG_TYPE TRE5_3[4] = {0x00, 0x7A, 0x40, 0x36};
ADI_REG_TYPE TRE5_4[4] = {0x00, 0x04, 0x08, 0x0A};
void TRE5_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, TRE5_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, TRE5_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, TRE5_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, TRE5_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, TRE5_4);            /* EQ1940Dual12A1 */
}

// 调 Treble 为 6
ADI_REG_TYPE TRE6_0[4] = {0xFF, 0x47, 0x28, 0xEF};
ADI_REG_TYPE TRE6_1[4] = {0x00, 0xED, 0x02, 0xF3};
ADI_REG_TYPE TRE6_2[4] = {0xFF, 0xCD, 0x9B, 0xD8};
ADI_REG_TYPE TRE6_3[4] = {0x00, 0x75, 0x73, 0x72};
ADI_REG_TYPE TRE6_4[4] = {0x00, 0x08, 0xC4, 0xD4};
void TRE6_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, TRE6_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, TRE6_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, TRE6_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, TRE6_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, TRE6_4);            /* EQ1940Dual12A1 */
}

// 调 Treble 为 7
ADI_REG_TYPE TRE7_0[4] = {0xFF, 0x3B, 0xE1, 0xA8};
ADI_REG_TYPE TRE7_1[4] = {0x00, 0xFE, 0xD1, 0xF7};
ADI_REG_TYPE TRE7_2[4] = {0xFF, 0xC7, 0x24, 0xA0};
ADI_REG_TYPE TRE7_3[4] = {0x00, 0x70, 0x7D, 0x59};
ADI_REG_TYPE TRE7_4[4] = {0x00, 0x0D, 0xAA, 0x68};
void TRE7_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, TRE7_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, TRE7_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, TRE7_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, TRE7_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, TRE7_4);            /* EQ1940Dual12A1 */
}

// 调 Treble 为 8
ADI_REG_TYPE TRE8_0[4] = {0xFF, 0x30, 0x4B, 0xA0};
ADI_REG_TYPE TRE8_1[4] = {0x01, 0x11, 0x1D, 0x56};
ADI_REG_TYPE TRE8_2[4] = {0xFF, 0xC0, 0x80, 0x40};
ADI_REG_TYPE TRE8_3[4] = {0x00, 0x6B, 0x64, 0x9B};
ADI_REG_TYPE TRE8_4[4] = {0x00, 0x12, 0xB2, 0x2E};
void TRE8_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, TRE8_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, TRE8_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, TRE8_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, TRE8_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, TRE8_4);            /* EQ1940Dual12A1 */
}

// 调 Treble 为 9
ADI_REG_TYPE TRE9_0[4] = {0xFF, 0x24, 0x77, 0xF0};
ADI_REG_TYPE TRE9_1[4] = {0x01, 0x23, 0xCA, 0x10};
ADI_REG_TYPE TRE9_2[4] = {0xFF, 0xB9, 0xB8, 0x89};
ADI_REG_TYPE TRE9_3[4] = {0x00, 0x66, 0x30, 0xBE};
ADI_REG_TYPE TRE9_4[4] = {0x00, 0x17, 0xD4, 0xB9};
void TRE9_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, TRE9_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, TRE9_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, TRE9_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, TRE9_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, TRE9_4);            /* EQ1940Dual12A1 */
}

// 调 Treble 为 10
ADI_REG_TYPE TRE10_0[4] = {0xFF, 0x18, 0x79, 0x3D};
ADI_REG_TYPE TRE10_1[4] = {0x01, 0x36, 0xBA, 0xB4};
ADI_REG_TYPE TRE10_2[4] = {0xFF, 0xB2, 0xD8, 0x28};
ADI_REG_TYPE TRE10_3[4] = {0x00, 0x60, 0xE9, 0xF5};
ADI_REG_TYPE TRE10_4[4] = {0x00, 0x1D, 0x09, 0xF1};
void TRE10_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, TRE10_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, TRE10_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, TRE10_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, TRE10_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, TRE10_4);            /* EQ1940Dual12A1 */
}


// 调 Treble 为 -1
ADI_REG_TYPE TRE_1_0[4] = {0xFF, 0x89, 0xA0, 0x5C};
ADI_REG_TYPE TRE_1_1[4] = {0x00, 0x84, 0x0F, 0x8B};
ADI_REG_TYPE TRE_1_2[4] = {0xFF, 0xF3, 0xB6, 0x7B};
ADI_REG_TYPE TRE_1_3[4] = {0x00, 0x92, 0xB0, 0x70};
ADI_REG_TYPE TRE_1_4[4] = {0xFF, 0xEB, 0xE9, 0x2D};
void TRE_1_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, TRE_1_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, TRE_1_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, TRE_1_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, TRE_1_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, TRE_1_4);            /* EQ1940Dual12A1 */
}

// 调 Treble 为 -2
ADI_REG_TYPE TRE_2_0[4] = {0xFF, 0x91, 0x0D, 0xD1};
ADI_REG_TYPE TRE_2_1[4] = {0x00, 0x78, 0x55, 0x24};
ADI_REG_TYPE TRE_2_2[4] = {0xFF, 0xF7, 0xF8, 0x8D};
ADI_REG_TYPE TRE_2_3[4] = {0x00, 0x95, 0xF4, 0xE1};
ADI_REG_TYPE TRE_2_4[4] = {0xFF, 0xE8, 0xAF, 0x9D};
void TRE_2_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, TRE_2_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, TRE_2_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, TRE_2_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, TRE_2_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, TRE_2_4);            /* EQ1940Dual12A1 */
}

// 调 Treble 为 -3
ADI_REG_TYPE TRE_3_0[4] = {0xFF, 0x97, 0xF4, 0x7E};
ADI_REG_TYPE TRE_3_1[4] = {0x00, 0x6D, 0x6F, 0x8E};
ADI_REG_TYPE TRE_3_2[4] = {0xFF, 0xFB, 0xED, 0x5A};
ADI_REG_TYPE TRE_3_3[4] = {0x00, 0x98, 0xFE, 0x07};
ADI_REG_TYPE TRE_3_4[4] = {0xFF, 0xE5, 0xB0, 0x92};
void TRE_3_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, TRE_3_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, TRE_3_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, TRE_3_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, TRE_3_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, TRE_3_4);            /* EQ1940Dual12A1 */
}

// 调 Treble 为 -4
ADI_REG_TYPE TRE_4_0[4] = {0xFF, 0x9E, 0x57, 0xC0};
ADI_REG_TYPE TRE_4_1[4] = {0x00, 0x63, 0x59, 0x7B};
ADI_REG_TYPE TRE_4_2[4] = {0xFF, 0xFF, 0x96, 0xD1};
ADI_REG_TYPE TRE_4_3[4] = {0x00, 0x9B, 0xCD, 0x5F};
ADI_REG_TYPE TRE_4_4[4] = {0xFF, 0xE2, 0xEA, 0x96};
void TRE_4_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, TRE_4_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, TRE_4_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, TRE_4_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, TRE_4_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, TRE_4_4);            /* EQ1940Dual12A1 */
}

// 调 Treble 为 -5
ADI_REG_TYPE TRE_5_0[4] = {0xFF, 0xA4, 0x3C, 0x14};
ADI_REG_TYPE TRE_5_1[4] = {0x00, 0x5A, 0x0B, 0xD4};
ADI_REG_TYPE TRE_5_2[4] = {0x00, 0x02, 0xF7, 0x83};
ADI_REG_TYPE TRE_5_3[4] = {0x00, 0x9E, 0x64, 0xE0};
ADI_REG_TYPE TRE_5_4[4] = {0xFF, 0xE0, 0x5B, 0xB5};
void TRE_5_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, TRE_5_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, TRE_5_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, TRE_5_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, TRE_5_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, TRE_5_4);            /* EQ1940Dual12A1 */
}

// 调 Treble 为 -6
ADI_REG_TYPE TRE_6_0[4] = {0xFF, 0xAE, 0x9E, 0x12};
ADI_REG_TYPE TRE_6_1[4] = {0x00, 0x49, 0xA6, 0xD8};
ADI_REG_TYPE TRE_6_2[4] = {0x00, 0x08, 0xEB, 0x4B};
ADI_REG_TYPE TRE_6_3[4] = {0x00, 0xA2, 0xF6, 0x1D};
ADI_REG_TYPE TRE_6_4[4] = {0xFF, 0xDB, 0xD9, 0xAD};
void TRE_6_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, TRE_6_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, TRE_6_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, TRE_6_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, TRE_6_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, TRE_6_4);            /* EQ1940Dual12A1 */
}

// 调 Treble 为 -7
ADI_REG_TYPE TRE_7_0[4] = {0xFF, 0xA9, 0xA6, 0xD8};
ADI_REG_TYPE TRE_7_1[4] = {0x00, 0x51, 0x7E, 0x1E};
ADI_REG_TYPE TRE_7_2[4] = {0x00, 0x06, 0x12, 0x86};
ADI_REG_TYPE TRE_7_3[4] = {0x00, 0xA0, 0xC6, 0xE8};
ADI_REG_TYPE TRE_7_4[4] = {0xFF, 0xDE, 0x01, 0x9C};
void TRE_7_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, TRE_7_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, TRE_7_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, TRE_7_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, TRE_7_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, TRE_7_4);            /* EQ1940Dual12A1 */
}

// 调 Treble 为 -8
ADI_REG_TYPE TRE_8_0[4] = {0xFF, 0xB3, 0x28, 0x38};
ADI_REG_TYPE TRE_8_1[4] = {0x00, 0x42, 0x7B, 0xD0};
ADI_REG_TYPE TRE_8_2[4] = {0x00, 0x0B, 0x85, 0x88};
ADI_REG_TYPE TRE_8_3[4] = {0x00, 0xA4, 0xF5, 0x56};
ADI_REG_TYPE TRE_8_4[4] = {0xFF, 0xD9, 0xE1, 0x1A};
void TRE_8_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, TRE_8_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, TRE_8_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, TRE_8_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, TRE_8_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, TRE_8_4);            /* EQ1940Dual12A1 */
}
// 调 Treble 为 -9
ADI_REG_TYPE TRE_9_0[4] = {0xFF, 0xB7, 0x4C, 0x01};
ADI_REG_TYPE TRE_9_1[4] = {0x00, 0x3B, 0xF2, 0x69};
ADI_REG_TYPE TRE_9_2[4] = {0x00, 0x0D, 0xE5, 0x16};
ADI_REG_TYPE TRE_9_3[4] = {0x00, 0xA6, 0xC7, 0x87};
ADI_REG_TYPE TRE_9_4[4] = {0xFF, 0xD8, 0x14, 0xF9};
void TRE_9_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, TRE_9_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, TRE_9_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, TRE_9_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, TRE_9_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, TRE_9_4);            /* EQ1940Dual12A1 */
}

// 调 Treble 为 -10
ADI_REG_TYPE TRE_10_0[4] = {0xFF, 0xBB, 0x10, 0x41};
ADI_REG_TYPE TRE_10_1[4] = {0x00, 0x35, 0xFF, 0xDB};
ADI_REG_TYPE TRE_10_2[4] = {0x00, 0x10, 0x0D, 0xE0};
ADI_REG_TYPE TRE_10_3[4] = {0x00, 0xA8, 0x6F, 0xB3};
ADI_REG_TYPE TRE_10_4[4] = {0xFF, 0xD6, 0x72, 0x52};
void TRE_10_download(void){
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0005, 4, TRE_10_0);            /* EQ1940Dual10B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0006, 4, TRE_10_1);            /* EQ1940Dual11B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0007, 4, TRE_10_2);            /* EQ1940Dual12B1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0008, 4, TRE_10_3);            /* EQ1940Dual11A1 */
SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_, 0x0009, 4, TRE_10_4);            /* EQ1940Dual12A1 */
}



回复

使用道具 举报

ID:89217 发表于 2020-2-27 13:11 | 显示全部楼层
多做几个宏命令多舒服,你这写的太累了
回复

使用道具 举报

ID:3706 发表于 2020-3-2 17:33 | 显示全部楼层
楼主可以提供这个程序的下载吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表