Amplifier_AW87579/Inc/Amplifier_AW87579_list.h

233 lines
6.2 KiB
C

//
// Created by ilya on 20.06.24.
//
#ifndef AMPLIFIER_AW87579_LIST_H
#define AMPLIFIER_AW87579_LIST_H
#include "Amplifier_AW87579_enum.h"
/*
* Default data
*/
#define AW87579_ID_DEFAULT 0x5A
#define AW87579_SYSCTRL_DEFAULT 0x38
#define AW87579_BATSAFE_DEFAULT 0x09
#define AW87579_BSTOVR_DEFAULT 0x0C
#define AW87579_BSTCPR2_DEFAULT 0x08
#define AW87579_PAGR_DEFAULT 0x10
#define AW87579_PAGC3OPR_DEFAULT 0x43
#define AW87579_PAGC3PR_DEFAULT 0x4E
#define AW87579_PAGC2OPR_DEFAULT 0x03
#define AW87579_PAGC2PR_DEFAULT 0x08
#define AW87579_PAGC1PR_DEFAULT 0x4A
#define AW87579_ADP_MODE_DEFAULT 0x03
#define AW87579_ADPBST_TIME1_DEFAULT 0xDD
#define AW87579_ADPBST_VTH_DEFAULT 0x23
/*
* List
*/
#define def_id 0
#define def_sysctr 1
#define def_batsafe 2
#define def_bstvout 3
#define def_bstcpr2 5
#define def_pagr 6
#define def_pagc3Opr 7
#define def_pagc3Pr 8
#define def_pagc2Opr 9
#define def_pagc2Pr 10
#define def_pagc1Pr 11
#define def_adpMode 12
#define def_adpbstTime1 13
#define def_adpbstVth 14
// CHIP ID REGISTER
typedef struct {
uint8_t IDCODE:7; // Chip ID will be returned after reading.
}tAW87579_ChipId;
// SYSTEM CONTROL (SYSCTR) REGISTER
typedef union {
uint8_t data:8;
struct __attribute__((packed)){
bool EN_HVBAT: 1; // Enable high voltage battery
uint8_t res: 1;
bool RCV_MODE: 1; // Receiver mode
bool EN_PA: 1; // PA Enable.
bool EN_BOOST: 1; //Boost Enable.
uint8_t : 1;
bool EN_SW: 1; //Chip software Enable
uint8_t : 1;
};
}tAW87579_SYSCTR;
#define SYSCTR_SET_RESERV(RES) RES = 0b1
// BATTERY SAFEGUARD (BATSAFE) REGISTER
typedef union {
uint8_t data:8;
struct __attribute__((packed)){
eBAT_SFGD_LEVEL BAT_SFGD_LEVEL: 2; // Maxim output level when enter into battery safe_guard mode
bool EN_BAT_SFGD: 1; // Software control battery safeguard
eBAT_SFGD_VTH BAT_SFGD_VTH: 2; // Battery voltage when enter into battery safe_guard mode.
eBAT_SFGD_DEGLITCH BAT_SFGD_DEGLITCH: 2; // Battery safe guard deglitch time.
uint8_t : 1;
};
}tAW87579_BATSAFE;
// BOOST OUTPUT VOLTAGE (BSTVOUT) REGISTER
typedef union {
uint8_t data:8;
struct __attribute__((packed)){
eBST_VOUT BST_VOUT: 5; // BOOST output voltage set
uint8_t : 3;
};
}tAW87579_BSTVOUT;
// BOOSTBOOST CONTROL (BSTCPR2)REGISTER
typedef union {
uint8_t data:8;
struct __attribute__((packed)){
eBST_IPEAK BST_IPEAK: 4; // BOOST peak current limit
uint8_t : 4;
};
}tAW87579_BSTCPR2;
// CLASS D GAIN CONTROL (PAGR) REGISTER
/*
* PA Input SignalGain
* when RCV_MODE=1 PA_GAIN must be set to 00000~00111
* (0dB~9dB)
* when RCV_MODE=0 PA_GAIN must be set to 01000~10010
* (12dB~27dB)
*/
typedef union {
uint8_t data:8;
struct __attribute__((packed)){
uint8_t PA_GAIN: 5;
uint8_t : 3;
};
}tAW87579_PAGR;
#define PA_GAIN_SET__dB_RCV_MODE_EN(DB) (DB<1.5?0b00000:(DB>10.5?0b00111:(uint8_t)(DB/1.5)))
#define PA_GAIN_SET__dB_RCV_MODE_DIS(DB) (DB<12?0b01000:(DB>27?0b10010:(uint8_t)(DB/1.5)))
#define PA_GAIN_SET__dB(RCV_MODE,DB) RCV_MODE == false?PA_GAIN_SET__dB_RCV_MODE_DIS(DB):PA_GAIN_SET__dB_RCV_MODE_EN(DB)
// CLASS D AGC3 OUTPUT POWER (AGC3_Po)(PAGC3OPR) REGISTER
typedef union {
uint8_t data:8;
struct __attribute__((packed)){
AGC3_OUTPUT_POWER AGC3_OUTPUT_POWER: 4; // Speaker Protection output Power Level
bool PD_AGC3: 1; // Disable AGC3
uint8_t res: 3;
};
}tAW87579_PAGC3OPR;
#define PAGC3OPR_SET_RESERV(RES) RES = 0b010
// CLASS D AGC3 PARAMETER REGISTER
typedef union {
uint8_t data:8;
struct __attribute__((packed)){
uint8_t res: 2;
eAGC3_ATT_TIME AGC3_ATT_TIME: 3; // Total 13.5dB attack time
eAGC3_REL_TIME AGC3_REL_TIME: 3; // Total 13.5dB release time
};
}tAW87579_PAGC3PR;
#define PAGC3PR_SET_RESERV(RES) RES = 0b10
// CLASS D AGC2 OUTPUT POWER (AGC2_Po) REGISTER
typedef union {
uint8_t data:8;
struct __attribute__((packed)){
AGC2_OUTPUT_POWER AGC2_OUTPUT_POWER: 4; // Speaker Protection output Power Level
uint8_t res: 4;
};
}tAW87579_PAGC2OPR;
// CLASS D AGC2 PARAMETER REGISTER
typedef union {
uint8_t data:8;
struct __attribute__((packed)){
uint8_t : 2;
eAGC2_ATT_TIME AGC2_ATT_TIME: 3; // AGC2 total attack time
uint8_t : 3;
};
}tAW87579_PAGC2PR;
// CLASS D AGC1 PARAMETER (AGC1) REGISTER
typedef union {
uint8_t data:8;
struct __attribute__((packed)){
bool PD_AGC1: 1; // Disable fastest Level AGC
eAGC1_ATT_TIME AGC1_ATT_TIME: 2; //Fastest Level AGC attack time control
uint8_t res: 5;
};
}tAW87579_PAGC1PR;
#define PAGC1PR_SET_RESERV(RES) RES = 0b01001
// ADP MODE PARAMETER REGISTER
typedef union {
uint8_t data:8;
struct __attribute__((packed)){
eADPBOOST_MODE ADPBOOST_MODE: 3; // BOOST MODE
bool AGC1_ATT_TIMEA: 1; // Fastest Levl AGC attack time control, Refer to 0x0B register
uint8_t : 4;
};
}tAW87579_ADP_MODE;
// ADP BOOST PARAMETER REGISTER
typedef union {
uint8_t data:8;
struct __attribute__((packed)){
eADP_BST_TIME ADP_BST_TIME1: 4; // Duration time Po less than Po1
eADP_BST_TIME ADP_BST_TIME2: 4; // Duration time Po less than Po2
};
}tAW87579_ADPBST_TIME1;
// ADP BOOST PARAMETER REGISTER
typedef union {
uint8_t data:8;
struct __attribute__((packed)){
eSET_BOOST_VTH1 SET_BOOST_VTH1: 3; // Boost threshold Po1
eSET_BOOST_VTH2 SET_BOOST_VTH2: 3; // Boost threshold Po2
eADP_LOW_STEP ADP_LOW_STEP: 2; // ADP BOOST mode2 first step set BOOST_OUT<4:0>
};
}tAW87579_ADPBST_VTH;
// AW87579 ALL LIST
typedef struct __attribute__((packed)) {
tAW87579_SYSCTR sysctr;
tAW87579_BATSAFE batsafe;
tAW87579_BSTVOUT bstvout;
tAW87579_BSTCPR2 bstcpr2;
tAW87579_PAGR pagr;
tAW87579_PAGC3OPR pagc3Opr;
tAW87579_PAGC3PR pagc3Pr;
tAW87579_PAGC2OPR pagc2Opr;
tAW87579_PAGC2PR pagc2Pr;
tAW87579_PAGC1PR pagc1Pr;
tAW87579_ADP_MODE adpMode;
tAW87579_ADPBST_TIME1 adpbstTime1;
tAW87579_ADPBST_VTH adpbstVth;
}tAW87579_RegsList;
#endif //AMPLIFIER_AW87579_LIST_H