Init
This commit is contained in:
commit
6521b2c4bd
|
|
@ -0,0 +1,445 @@
|
||||||
|
//
|
||||||
|
// Created by ilya on 06.05.24.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "Amplifier.h"
|
||||||
|
//#include "Amplifier_MAX9768.h"
|
||||||
|
#include "Amplifier_AW87579.h"
|
||||||
|
|
||||||
|
#include "SystemDelayInterface.h"
|
||||||
|
#include "DeviceStorage.h"
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
uint8_t ProtMethods_AmplGetLvlVoltIndex(tAmplifier *env, uint8_t indexValule) {
|
||||||
|
for(uint8_t i=0; i < sizeof(env->voltages); i++){
|
||||||
|
if(env->voltages[i] == indexValule){
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t ProtMethods_AmplGetLvlAmperIndex(tAmplifier *env, uint8_t indexValule) {
|
||||||
|
for(uint8_t i=1; i < sizeof(env->ampers); i++){
|
||||||
|
if(env->ampers[i] == indexValule){
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t ProtMethods_AmplGetLvlVolumeIndex(tAmplifier *env, uint8_t indexValule) {
|
||||||
|
for(uint16_t i=0; i < sizeof(env->levels); i++){
|
||||||
|
if(env->levels[i] == indexValule){
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t ProtMethods_AmplGetADP_BoostStep(tAmplifier *env, uint8_t indexValule) {
|
||||||
|
for(uint8_t i=0; i < sizeof(env->boost_steps); i++){
|
||||||
|
if(env->boost_steps[i] == indexValule){
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t ProtMethods_AmplGetADP_En_Boost(tAmplifier *env, uint8_t indexValule) {
|
||||||
|
for(uint8_t i=0; i < sizeof(env->confStr->data); i++){
|
||||||
|
if(env->confStr->data[i] == indexValule){
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t ProtMethods_AmplGetADP_BoostVTH1(tAmplifier *env, uint8_t indexValule) {
|
||||||
|
for(uint8_t i=0; i < sizeof(env->boost_vths1); i++){
|
||||||
|
if(env->boost_vths1[i] == indexValule){
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t ProtMethods_AmplGetADP_BoostVTH2(tAmplifier *env, uint8_t indexValule) {
|
||||||
|
for(uint8_t i=0; i < sizeof(env->boost_vths2); i++){
|
||||||
|
if(env->boost_vths2[i] == indexValule){
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t ProtMethods_AmplGetADP_BoostMode(tAmplifier *env, uint8_t indexValule) {
|
||||||
|
for(uint8_t i=0; i < sizeof(env->adp_boostModes); i++){
|
||||||
|
if(env->adp_boostModes[i] == indexValule){
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t ProtMethods_AmplGetAGC1_AttackTime(tAmplifier *env, uint8_t indexValule) {
|
||||||
|
for(uint8_t i=0; i < sizeof(env->agc1_att_times); i++){
|
||||||
|
if(env->agc1_att_times[i] == indexValule){
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t ProtMethods_AmplGetAGC3_RelTime(tAmplifier *env, uint8_t indexValule) {
|
||||||
|
for(uint8_t i=0; i < sizeof(env->agc3_relTimes); i++){
|
||||||
|
if(env->agc3_relTimes[i] == indexValule){
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t ProtMethods_AmplGetAGC3_AttTime(tAmplifier *env, uint8_t indexValule) {
|
||||||
|
for(uint8_t i=0; i < sizeof(env->agc3_attTimes); i++){
|
||||||
|
if(env->agc3_attTimes[i] == indexValule){
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t ProtMethods_AmplGetAGC3_OutPower(tAmplifier *env, uint8_t indexValule) {
|
||||||
|
for(uint8_t i=0; i < sizeof(env->agc3_out_powers); i++){
|
||||||
|
if(env->agc3_out_powers[i] == indexValule){
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t ProtMethods_AmplGetEN_Boost(tAmplifier *env, uint8_t indexValule) {
|
||||||
|
if(env->en_boost == indexValule){
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t ProtMethods_AmplGetAGC2_AttTime(tAmplifier *env, uint8_t indexValule) {
|
||||||
|
for(uint8_t i=0; i < sizeof(env->agc2_attTimes); i++){
|
||||||
|
if(env->agc2_attTimes[i] == indexValule){
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t ProtMethods_AmplGetAGC2_OutPower(tAmplifier *env, uint8_t indexValule) {
|
||||||
|
for(uint8_t i=0; i < sizeof(env->agc2Opr_out_powers); i++){
|
||||||
|
if(env->agc2Opr_out_powers[i] == indexValule){
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ProtMethodsAdd_AmplifierSetCard(tAmplifier *env) {
|
||||||
|
if(env != NULL) {
|
||||||
|
env->levels[0] = PA_GAIN_0dB;
|
||||||
|
env->levels[1] = PA_GAIN_1_5dB;
|
||||||
|
env->levels[2] = PA_GAIN_3dB;
|
||||||
|
env->levels[3] = PA_GAIN_4_5dB;
|
||||||
|
env->levels[4] = PA_GAIN_6dB;
|
||||||
|
env->levels[5] = PA_GAIN_7_5dB;
|
||||||
|
env->levels[6] = PA_GAIN_9dB;
|
||||||
|
env->levels[7] = PA_GAIN_10_5dB;
|
||||||
|
env->levels[8] = PA_GAIN_12dB;
|
||||||
|
env->levels[9] = PA_GAIN_13_5dB;
|
||||||
|
env->levels[10] = PA_GAIN_15dB;
|
||||||
|
env->levels[11] = PA_GAIN_16_5dB;
|
||||||
|
env->levels[12] = PA_GAIN_18dB;
|
||||||
|
env->levels[13] = PA_GAIN_19_5dB;
|
||||||
|
env->levels[14] = PA_GAIN_21dB;
|
||||||
|
env->levels[15] = PA_GAIN_22_5dB;
|
||||||
|
env->levels[16] = PA_GAIN_24dB;
|
||||||
|
env->levels[17] = PA_GAIN_25_5dB;
|
||||||
|
env->levels[18] = PA_GAIN_27dB;
|
||||||
|
|
||||||
|
env->ampers[0] = BST_IPEAK_2A;
|
||||||
|
env->ampers[1] = BST_IPEAK_2A;
|
||||||
|
env->ampers[2] = BST_IPEAK_2_25A;
|
||||||
|
env->ampers[3] = BST_IPEAK_2_5A;
|
||||||
|
env->ampers[4] = BST_IPEAK_2_75A;
|
||||||
|
env->ampers[5] = BST_IPEAK_3A;
|
||||||
|
env->ampers[5] = BST_IPEAK_3_25A;
|
||||||
|
env->ampers[6] = BST_IPEAK_3_5A;
|
||||||
|
env->ampers[7] = BST_IPEAK_3_75A;
|
||||||
|
env->ampers[8] = BST_IPEAK_4A;
|
||||||
|
env->ampers[9] = BST_IPEAK_4_25A;
|
||||||
|
env->ampers[10] = BST_IPEAK_4_5A;
|
||||||
|
|
||||||
|
env->voltages[0] = BST_VOUT_6_5V;
|
||||||
|
env->voltages[1] = BST_VOUT_6_75V;
|
||||||
|
env->voltages[2] = BST_VOUT_7V;
|
||||||
|
env->voltages[3] = BST_VOUT_7_25V;
|
||||||
|
env->voltages[4] = BST_VOUT_7_5V;
|
||||||
|
env->voltages[5] = BST_VOUT_7_75V;
|
||||||
|
env->voltages[6] = BST_VOUT_8V;
|
||||||
|
env->voltages[7] = BST_VOUT_8_25V;
|
||||||
|
env->voltages[8] = BST_VOUT_8_5V;
|
||||||
|
env->voltages[9] = BST_VOUT_8_75V;
|
||||||
|
env->voltages[10] = BST_VOUT_9V;
|
||||||
|
env->voltages[11] = BST_VOUT_9_25V;
|
||||||
|
env->voltages[12] = BST_VOUT_9_5V;
|
||||||
|
env->voltages[13] = BST_VOUT_9_75V;
|
||||||
|
env->voltages[14] = BST_VOUT_10V;
|
||||||
|
env->voltages[15] = BST_VOUT_10_25V;
|
||||||
|
env->voltages[16] = BST_VOUT_10_5V;
|
||||||
|
env->voltages[17] = BST_VOUT_10_75V;
|
||||||
|
env->voltages[18] = BST_VOUT_11V;
|
||||||
|
env->voltages[19] = BST_VOUT_11_25V;
|
||||||
|
env->voltages[20] = BST_VOUT_11_5V;
|
||||||
|
env->voltages[21] = BST_VOUT_11_75V;
|
||||||
|
env->voltages[22] = BST_VOUT_12V;
|
||||||
|
|
||||||
|
env->boost_vths1[0] = SET_BOOST_VTH1_0_1W;
|
||||||
|
env->boost_vths1[1] = SET_BOOST_VTH1_0_2W;
|
||||||
|
env->boost_vths1[2] = SET_BOOST_VTH1_0_3W;
|
||||||
|
env->boost_vths1[3] = SET_BOOST_VTH1_0_4W;
|
||||||
|
|
||||||
|
env->boost_vths2[0] = SET_BOOST_VTH2_1_2W;
|
||||||
|
env->boost_vths2[1] = SET_BOOST_VTH2_1_4W;
|
||||||
|
env->boost_vths2[2] = SET_BOOST_VTH2_1_6W;
|
||||||
|
env->boost_vths2[3] = SET_BOOST_VTH2_1_8W;
|
||||||
|
env->boost_vths2[4] = SET_BOOST_VTH2_2_0W;
|
||||||
|
env->boost_vths2[5] = SET_BOOST_VTH2_2_2W;
|
||||||
|
|
||||||
|
env->boost_steps[0] = ADP_LOW_STEP_1st_BST_OUT_6_5V;
|
||||||
|
env->boost_steps[1] = ADP_LOW_STEP_1st_BST_OUT_6_75V;
|
||||||
|
env->boost_steps[2] = ADP_LOW_STEP_1st_BST_OUT_7V;
|
||||||
|
env->boost_steps[3] = ADP_LOW_STEP_1st_BST_OUT_7_25V;
|
||||||
|
|
||||||
|
env->adp_boostModes[0] = ADPBOOST_MODE_PassThrough;
|
||||||
|
env->adp_boostModes[1] = ADPBOOST_MODE_ForceBOOST;
|
||||||
|
env->adp_boostModes[2] = ADPBOOST_MODE_MD1;
|
||||||
|
env->adp_boostModes[3] = ADPBOOST_MODE_MD2;
|
||||||
|
|
||||||
|
env->agc1_att_times[0] = AGC1_ATT_TIME_0_04ms_dB;
|
||||||
|
env->agc1_att_times[1] = AGC1_ATT_TIME_0_08ms_dB;
|
||||||
|
env->agc1_att_times[2] = AGC1_ATT_TIME_0_16ms_dB;
|
||||||
|
env->agc1_att_times[3] = AGC1_ATT_TIME_0_32ms_dB;
|
||||||
|
|
||||||
|
|
||||||
|
env->agc3_out_powers[0] = AGC3OP_0_5W_8ohm_OR_0_67W_6ohm;
|
||||||
|
env->agc3_out_powers[1] = AGC3OP_0_6W_8ohm_OR_0_8W_6ohm;
|
||||||
|
env->agc3_out_powers[2] = AGC3OP_0_7W_8ohm_OR_0_93W_6ohm;
|
||||||
|
env->agc3_out_powers[3] = AGC3OP_0_8W_8ohm_OR_1_07W_6ohm;
|
||||||
|
env->agc3_out_powers[4] = AGC3OP_0_9W_8ohm_OR_1_2W_6ohm;
|
||||||
|
env->agc3_out_powers[5] = AGC3OP_1W_8ohm_OR_1_33W_6ohm;
|
||||||
|
env->agc3_out_powers[6] = AGC3OP_1_1W_8ohm_OR_1_47W_6ohm;
|
||||||
|
env->agc3_out_powers[7] = AGC3OP_1_2W_8ohm_OR_1_6W_6ohm;
|
||||||
|
env->agc3_out_powers[8] = AGC3OP_1_3W_8ohm_OR_1_73W_6ohm;
|
||||||
|
env->agc3_out_powers[9] = AGC3OP_1_4W_8ohm_OR_1_87W_6ohm;
|
||||||
|
env->agc3_out_powers[10] = AGC3OP_1_5W_8ohm_OR_2W_6ohm;
|
||||||
|
env->agc3_out_powers[11] = AGC3OP_1_6W_8ohm_OR_2_13W_6ohm;
|
||||||
|
env->agc3_out_powers[12] = AGC3OP_1_7W_8ohm_OR_2_27W_6ohm;
|
||||||
|
env->agc3_out_powers[13] = AGC3OP_1_8W_8ohm_OR_2_4W_6ohm;
|
||||||
|
env->agc3_out_powers[14] = AGC3OP_1_9W_8ohm_OR_2_53W_6ohm;
|
||||||
|
env->agc3_out_powers[15] = AGC3OP_2W_8ohm_OR_2_67W_6ohm;
|
||||||
|
|
||||||
|
env->agc3_relTimes[0] = AGC3_REL_TIME_5_12ms_dB;
|
||||||
|
env->agc3_relTimes[1] = AGC3_REL_TIME_10_24ms_dB;
|
||||||
|
env->agc3_relTimes[2] = AGC3_REL_TIME_20_48ms_dB;
|
||||||
|
env->agc3_relTimes[3] = AGC3_REL_TIME_40_56ms_dB;
|
||||||
|
env->agc3_relTimes[4] = AGC3_REL_TIME_81_92ms_dB;
|
||||||
|
env->agc3_relTimes[5] = AGC3_REL_TIME_163_84ms_dB;
|
||||||
|
env->agc3_relTimes[6] = AGC3_REL_TIME_327_68ms_dB;
|
||||||
|
env->agc3_relTimes[7] = AGC3_REL_TIME_655_36ms_dB;
|
||||||
|
|
||||||
|
env->agc3_attTimes[0] = AGC3_ATT_TIME_1_28ms_dB;
|
||||||
|
env->agc3_attTimes[1] = AGC3_ATT_TIME_2_56ms_dB;
|
||||||
|
env->agc3_attTimes[2] = AGC3_ATT_TIME_10_24ms_dB;
|
||||||
|
env->agc3_attTimes[3] = AGC3_ATT_TIME_40_96ms_dB;
|
||||||
|
env->agc3_attTimes[4] = AGC3_ATT_TIME_82ms_dB;
|
||||||
|
env->agc3_attTimes[5] = AGC3_ATT_TIME_164ms_dB;
|
||||||
|
env->agc3_attTimes[6] = AGC3_ATT_TIME_328ms_dB;
|
||||||
|
env->agc3_attTimes[7] = AGC3_ATT_TIME_656ms_dB;
|
||||||
|
|
||||||
|
env->agc2Opr_out_powers[0] = AGC2OP_1W_8ohm_OR_1_33W_6ohm;
|
||||||
|
env->agc2Opr_out_powers[1] = AGC2OP_1_2W_8ohm_OR_1_6W_6ohm;
|
||||||
|
env->agc2Opr_out_powers[2] = AGC2OP_1_4W_8ohm_OR_1_87W_6ohm;
|
||||||
|
env->agc2Opr_out_powers[3] = AGC2OP_1_6W_8ohm_OR_2_13W_6ohm;
|
||||||
|
env->agc2Opr_out_powers[4] = AGC2OP_1_8W_8ohm_OR_2_4W_6ohm;
|
||||||
|
env->agc2Opr_out_powers[5] = AGC2OP_2W_8ohm_OR_2_67W_6ohm;
|
||||||
|
env->agc2Opr_out_powers[6] = AGC2OP_2_2W_8ohm_OR_2_93W_6ohm;
|
||||||
|
env->agc2Opr_out_powers[7] = AGC2OP_2_4W_8ohm_OR_3_2W_6ohm;
|
||||||
|
env->agc2Opr_out_powers[8] = AGC2OP_2_6W_8ohm_OR_3_47W_6ohm;
|
||||||
|
env->agc2Opr_out_powers[9] = AGC2OP_2_8W_8ohm_OR_3_73W_6ohm;
|
||||||
|
env->agc2Opr_out_powers[10] = AGC2OP_3W_8ohm_OR_4W_6ohm;
|
||||||
|
env->agc2Opr_out_powers[11] = AGC2OP_OFF;
|
||||||
|
|
||||||
|
env->agc2_attTimes[0] = AGC2_ATT_TIME_0_16ms_dB;
|
||||||
|
env->agc2_attTimes[1] = AGC2_ATT_TIME_0_32ms_dB;
|
||||||
|
env->agc2_attTimes[2] = AGC2_ATT_TIME_0_64ms_dB;
|
||||||
|
env->agc2_attTimes[3] = AGC2_ATT_TIME_2_56ms_dB;
|
||||||
|
env->agc2_attTimes[4] = AGC2_ATT_TIME_10_24ms_dB;
|
||||||
|
env->agc2_attTimes[5] = AGC2_ATT_TIME_40_96ms_dB;
|
||||||
|
env->agc2_attTimes[6] = AGC2_ATT_TIME_82ms_dB;
|
||||||
|
env->agc2_attTimes[7] = AGC2_ATT_TIME_164ms_dB;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tAW87579_RegsList Amplifier_ConvertStrToRegs(tString32 *conf) {
|
||||||
|
tAW87579_RegsList list;
|
||||||
|
list.sysctr.data = conf->data[def_sysctr];
|
||||||
|
list.batsafe.data = conf->data[def_batsafe];
|
||||||
|
list.bstvout.data = conf->data[def_bstvout];
|
||||||
|
list.bstcpr2.data = conf->data[def_bstcpr2];
|
||||||
|
list.pagr.data = conf->data[def_pagr];
|
||||||
|
list.pagc3Opr.data = conf->data[def_pagc3Opr];
|
||||||
|
list.pagc3Pr.data = conf->data[def_pagc3Pr];
|
||||||
|
list.pagc2Opr.data = conf->data[def_pagc2Opr];
|
||||||
|
list.pagc2Pr.data = conf->data[def_pagc2Pr];
|
||||||
|
list.pagc1Pr.data = conf->data[def_pagc1Pr];
|
||||||
|
list.adpMode.data = conf->data[def_adpMode];
|
||||||
|
list.adpbstTime1.data = conf->data[def_adpbstTime1];
|
||||||
|
list.adpbstVth.data = conf->data[def_adpbstVth];
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Amplifier_ConfRegsToStr(tAW87579_RegsList *conf, tString32 *res) {
|
||||||
|
// tString32 res;
|
||||||
|
res->data[def_sysctr] = conf->sysctr.data;
|
||||||
|
res->data[def_batsafe] = conf->batsafe.data;
|
||||||
|
res->data[def_bstvout] = conf->bstvout.data;
|
||||||
|
res->data[def_bstcpr2] = conf->bstcpr2.data;
|
||||||
|
res->data[def_pagr] = conf->pagr.data;
|
||||||
|
res->data[def_pagc3Opr] = conf->pagc3Opr.data;
|
||||||
|
res->data[def_pagc3Pr] = conf->pagc3Pr.data;
|
||||||
|
res->data[def_pagc2Opr] = conf->pagc2Opr.data;
|
||||||
|
res->data[def_pagc2Pr] = conf->pagc2Pr.data;
|
||||||
|
res->data[def_pagc1Pr] = conf->pagc1Pr.data;
|
||||||
|
res->data[def_adpMode] = conf->adpMode.data;
|
||||||
|
res->data[def_adpbstTime1] = conf->adpbstTime1.data;
|
||||||
|
res->data[def_adpbstVth] = conf->adpbstVth.data;
|
||||||
|
res->length = 12;
|
||||||
|
res->data[4]= -1;
|
||||||
|
// return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Amplifier_BoostAdpMode_SetSTEP(tAmplifier *env, uint8_t index){
|
||||||
|
tAW87579_RegsList *list;
|
||||||
|
list = &env->confRegs;
|
||||||
|
list->adpbstVth.ADP_LOW_STEP = index;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Amplifier_BoostAdpMode_SetVTH1(tAmplifier *env, uint8_t index){
|
||||||
|
tAW87579_RegsList *list;
|
||||||
|
list = &env->confRegs;
|
||||||
|
list->adpbstVth.SET_BOOST_VTH1 = env->boost_vths1[index];
|
||||||
|
}
|
||||||
|
|
||||||
|
void Amplifier_BoostAdpMode_SetVTH2(tAmplifier *env, uint8_t index){
|
||||||
|
tAW87579_RegsList *list;
|
||||||
|
list = &env->confRegs;
|
||||||
|
list->adpbstVth.SET_BOOST_VTH2 = env->boost_vths2[index];
|
||||||
|
}
|
||||||
|
|
||||||
|
tAW87579_RegsList Amplifier_GetDefaultConf(){
|
||||||
|
tAW87579_RegsList list = {
|
||||||
|
.sysctr.EN_SW = true,
|
||||||
|
.sysctr.EN_PA = true,
|
||||||
|
.sysctr.EN_BOOST = true,
|
||||||
|
.sysctr.RCV_MODE = false,
|
||||||
|
.sysctr.EN_HVBAT = true,
|
||||||
|
|
||||||
|
.batsafe.EN_BAT_SFGD = true,
|
||||||
|
.batsafe.BAT_SFGD_LEVEL = BAT_SFGD_LEVEL_6_5V,
|
||||||
|
.batsafe.BAT_SFGD_VTH = BAT_SFGD_VTH_3_6V,
|
||||||
|
.batsafe.BAT_SFGD_DEGLITCH = BAT_SFGD_DEGLITCH_1ms,
|
||||||
|
|
||||||
|
.bstvout.BST_VOUT = BST_VOUT_6_5V,
|
||||||
|
|
||||||
|
.bstcpr2.BST_IPEAK = BST_IPEAK_4_5A,
|
||||||
|
|
||||||
|
.pagr.PA_GAIN = PA_GAIN_SET__dB(false,27),
|
||||||
|
|
||||||
|
.pagc3Opr.PD_AGC3 = false,
|
||||||
|
.pagc3Opr.AGC3_OUTPUT_POWER = AGC3OP_2W_8ohm_OR_2_67W_6ohm,
|
||||||
|
|
||||||
|
.pagc3Pr.AGC3_REL_TIME = AGC3_REL_TIME_40_56ms_dB,
|
||||||
|
.pagc3Pr.AGC3_ATT_TIME = AGC3_ATT_TIME_82ms_dB,
|
||||||
|
|
||||||
|
.pagc2Opr.AGC2_OUTPUT_POWER = AGC2OP_OFF,
|
||||||
|
|
||||||
|
.pagc2Pr.AGC2_ATT_TIME = AGC2_ATT_TIME_0_32ms_dB,
|
||||||
|
|
||||||
|
.pagc1Pr.PD_AGC1 = false,
|
||||||
|
.pagc1Pr.AGC1_ATT_TIME = AGC1_ATT_TIME_0_04ms_dB,
|
||||||
|
|
||||||
|
.adpMode.AGC1_ATT_TIMEA = false,
|
||||||
|
.adpMode.ADPBOOST_MODE = ADPBOOST_MODE_PassThrough,
|
||||||
|
|
||||||
|
.adpbstTime1.ADP_BST_TIME1 = ADP_BST_TIME_160ms,
|
||||||
|
.adpbstTime1.ADP_BST_TIME2 = ADP_BST_TIME_140ms,
|
||||||
|
|
||||||
|
.adpbstVth.ADP_LOW_STEP = ADP_LOW_STEP_1st_BST_OUT_7_25V,
|
||||||
|
.adpbstVth.SET_BOOST_VTH1 = SET_BOOST_VTH1_0_1W,
|
||||||
|
.adpbstVth.SET_BOOST_VTH2 = SET_BOOST_VTH2_2_2W
|
||||||
|
};
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Amplifier_DumpConf(tAmplifier *env){
|
||||||
|
Amplifier_ConfRegsToStr(&env->confRegs, env->confStr);
|
||||||
|
EraGlonassUveosDumper_ForceDump(env->dumper);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Amplifier_ChangeConf(tAmplifier *env){
|
||||||
|
// env->confRegs = Amplifier_ConvertStrToRegs(env->confStr);
|
||||||
|
// *env->confStr = Amplifier_ConfRegsToStr(&env->confRegs);
|
||||||
|
xAmplifierAW87579_SetAll(env->amplIoBus,env->confRegs);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Amplifier_PowerOn(tAmplifier *env){
|
||||||
|
Pwm_SetMuteInCar(env->power, true);
|
||||||
|
Pwm_AmpOn(env->power);
|
||||||
|
SystemDelayMs(500);
|
||||||
|
Amplifier_StartUp(env);
|
||||||
|
SystemDelayMs(500);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Amplifier_PowerOff(tAmplifier *env){
|
||||||
|
Pwm_SetMuteInCar(env->power, false);
|
||||||
|
SystemDelayMs(500);
|
||||||
|
Pwm_AmpOff(env->power);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Amplifier_StartUp(tAmplifier *env){
|
||||||
|
if(env->confStr->length < 1 ){
|
||||||
|
env->confRegs = Amplifier_GetDefaultConf();
|
||||||
|
if(xAmplifierAW87579_SetAll(env->amplIoBus,env->confRegs)){
|
||||||
|
env->isTest = 2;
|
||||||
|
} else {
|
||||||
|
env->isTest = 1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
env->confRegs = Amplifier_ConvertStrToRegs(env->confStr);
|
||||||
|
if(xAmplifierAW87579_SetAll(env->amplIoBus,env->confRegs)){
|
||||||
|
env->isTest = 2;
|
||||||
|
} else {
|
||||||
|
env->isTest = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Amplifier_Init(tAmplifier *env, tI2cIO *ampl_IO, tEraGlonassUveosDumperInterface *dumper, tString32 *conf, tPowerManagement *power, bool *speakTestAcsess){
|
||||||
|
env->isTest = 0;
|
||||||
|
env->speakTestAcsess = speakTestAcsess;
|
||||||
|
env->power = power;
|
||||||
|
env->confStr = conf;
|
||||||
|
env->dumper = dumper;
|
||||||
|
env->amplIoBus = ampl_IO;
|
||||||
|
ProtMethodsAdd_AmplifierSetCard(env);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,101 @@
|
||||||
|
//
|
||||||
|
// Created by ilya on 06.05.24.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef SMART_COMPONENTS_AMPLIFIER_H
|
||||||
|
#define SMART_COMPONENTS_AMPLIFIER_H
|
||||||
|
|
||||||
|
//#include "Amplifier_MAX9768.h"
|
||||||
|
#include "Amplifier_AW87579.h"
|
||||||
|
#include "BaseTypes/Strings.h"
|
||||||
|
#include "EraGlonassUveos_Dumper.h"
|
||||||
|
#include "PowerManagment.h"
|
||||||
|
|
||||||
|
//**********************************************************************
|
||||||
|
//void Gpios_AudioPins(tAudioPins *env){
|
||||||
|
//
|
||||||
|
// env->mute = InitGpioPin(GPIOB, GPIO_PINS_1, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
|
||||||
|
// env->off_mcu = InitGpioPin(GPIOB, GPIO_PINS_0, GPIO_MODE_OUTPUT, GPIO_PIN_NOREVERSE);
|
||||||
|
//}
|
||||||
|
//**********************************************************************
|
||||||
|
typedef struct {
|
||||||
|
bool *speakTestAcsess;
|
||||||
|
uint8_t isTest;
|
||||||
|
tI2cIO *amplIoBus;
|
||||||
|
tEraGlonassUveosDumperInterface *dumper;
|
||||||
|
tString32 *confStr;
|
||||||
|
tAW87579_RegsList confRegs;
|
||||||
|
tPowerManagement *power;
|
||||||
|
uint8_t en_boost;
|
||||||
|
uint16_t levels[19];
|
||||||
|
uint16_t voltages[23];
|
||||||
|
uint16_t ampers[11];
|
||||||
|
uint16_t boost_vths1[4];
|
||||||
|
uint16_t boost_vths2[6];
|
||||||
|
uint16_t boost_steps[4];
|
||||||
|
uint16_t agc1_att_times[4];
|
||||||
|
uint16_t adp_boostModes[4];
|
||||||
|
uint16_t agc3_out_powers[16];
|
||||||
|
uint16_t agc3_relTimes[8];
|
||||||
|
uint16_t agc3_attTimes[8];
|
||||||
|
uint16_t agc2Opr_out_powers[12];
|
||||||
|
uint16_t agc2_attTimes[8];
|
||||||
|
}tAmplifier;
|
||||||
|
|
||||||
|
void Amplifier_Init(tAmplifier *env, tI2cIO *ampl_IO, tEraGlonassUveosDumperInterface *dumper, tString32 *conf, tPowerManagement *power, bool *speakTestAcsess);
|
||||||
|
|
||||||
|
void Amplifier_PowerOn(tAmplifier *env);
|
||||||
|
|
||||||
|
void Amplifier_PowerOff(tAmplifier *env);
|
||||||
|
|
||||||
|
void Amplifier_StartUp(tAmplifier *env);
|
||||||
|
|
||||||
|
void Amplifier_ConfRegsToStr(tAW87579_RegsList *conf, tString32 *res) ;
|
||||||
|
|
||||||
|
void Amplifier_BoostAdpMode_SetVTH1(tAmplifier *env, uint8_t index);
|
||||||
|
|
||||||
|
void Amplifier_BoostAdpMode_SetVTH2(tAmplifier *env, uint8_t index);
|
||||||
|
|
||||||
|
void Amplifier_BoostAdpMode_SetSTEP(tAmplifier *env, uint8_t index);
|
||||||
|
|
||||||
|
void Amplifier_DumpConf(tAmplifier *env);
|
||||||
|
|
||||||
|
void Amplifier_ChangeConf(tAmplifier *env);
|
||||||
|
|
||||||
|
void ProtMethodsAdd_AmplifierInit(tAmplifier *env);
|
||||||
|
|
||||||
|
uint8_t ProtMethods_AmplGetLvlVolumeIndex(tAmplifier *env, uint8_t regVal);
|
||||||
|
|
||||||
|
uint8_t ProtMethods_AmplGetLvlAmperIndex(tAmplifier *env, uint8_t regVal);
|
||||||
|
|
||||||
|
uint8_t ProtMethods_AmplGetLvlVoltIndex(tAmplifier *env, uint8_t regVal);
|
||||||
|
|
||||||
|
uint8_t ProtMethods_AmplGetADP_BoostStep(tAmplifier *env, uint8_t regVal);
|
||||||
|
|
||||||
|
uint8_t ProtMethods_AmplGetADP_BoostVTH1(tAmplifier *env, uint8_t regVal);
|
||||||
|
|
||||||
|
uint8_t ProtMethods_AmplGetADP_En_Boost(tAmplifier *env, uint8_t indexValule);
|
||||||
|
|
||||||
|
uint8_t ProtMethods_AmplGetADP_BoostVTH2(tAmplifier *env, uint8_t regVal);
|
||||||
|
|
||||||
|
uint8_t ProtMethods_AmplGetADP_BoostMode(tAmplifier *env, uint8_t regVal);
|
||||||
|
|
||||||
|
uint8_t ProtMethods_AmplGetAGC1_AttackTime(tAmplifier *env, uint8_t regVal);
|
||||||
|
|
||||||
|
uint8_t ProtMethods_AmplGetAGC3_OutPower(tAmplifier *env, uint8_t indexValule);
|
||||||
|
|
||||||
|
uint8_t ProtMethods_AmplGetAGC2_OutPower(tAmplifier *env, uint8_t indexValule);
|
||||||
|
|
||||||
|
uint8_t ProtMethods_AmplGetAGC2_AttTime(tAmplifier *env, uint8_t indexValule);
|
||||||
|
|
||||||
|
uint8_t ProtMethods_AmplGetAGC3_RelTime(tAmplifier *env, uint8_t indexValule);
|
||||||
|
|
||||||
|
uint8_t ProtMethods_AmplGetAGC3_AttTime(tAmplifier *env, uint8_t indexValule);
|
||||||
|
|
||||||
|
uint8_t ProtMethods_AmplGetEN_Boost(tAmplifier *env, uint8_t indexValule);
|
||||||
|
|
||||||
|
#define AMPL_IFNOKR(VALUE) if(!VALUE) return false;
|
||||||
|
#define AMPL_IFNOKREPIT(VALUE) while(VALUE == false);
|
||||||
|
|
||||||
|
|
||||||
|
#endif //SMART_COMPONENTS_AMPLIFIER_H
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"cmake": {
|
||||||
|
"inc_dirs": [
|
||||||
|
"./"
|
||||||
|
],
|
||||||
|
"srcs": [
|
||||||
|
"./**.c"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue