forked from gary/BCU
2
0
Fork 0

高压堆叠产品单独程序,支持最多8个pack包

This commit is contained in:
Carl 2025-04-26 14:57:50 +08:00
parent 1be9fc25f7
commit ea635ee7b6
12 changed files with 7201 additions and 10486 deletions

View File

@ -445,7 +445,7 @@ void bms_poll_bmu(uint32_t base_time)
//温感检测是否脱落加上了防抖需要两次大于6000才设置温感排线错误温感排线错误显示的有点慢 //温感检测是否脱落加上了防抖需要两次大于6000才设置温感排线错误温感排线错误显示的有点慢
//温感的值最开始全是大于6000的第二次才是采集值 //温感的值最开始全是大于6000的第二次才是采集值
memset(tempJudge_cnt, 0, sizeof(tempJudge_cnt)); //memset(tempJudge_cnt, 0, sizeof(tempJudge_cnt));
//2-5 @wangk add this line bcu statistic data is show //2-5 @wangk add this line bcu statistic data is show
// bms_poll_statistic(0); // bms_poll_statistic(0);
// //2-6 @wangk // //2-6 @wangk

View File

@ -58,6 +58,22 @@ uint8_t bms_get_bmu_num(void)
return bmu_data.bmu_num; return bmu_data.bmu_num;
} }
void bms_set_bmu_num(uint8_t number)
{
bmu_data.bmu_num = number;
bmu_data.total_ic_num = number;
}
void bms_set_bmu_volt_num(uint8_t number)
{
bmu_data.total_cell_num = number * 16;
}
void bms_set_bmu_temp_num(uint8_t number)
{
bmu_data.total_temp_num = number * 4;
}
uint8_t bms_get_bmu_online_num(void) uint8_t bms_get_bmu_online_num(void)
{ {
return bmu_data.bmu_online_num; return bmu_data.bmu_online_num;

View File

@ -78,7 +78,11 @@ uint16_t bms_get_pole_temp_by_bmu(uint8_t bmu_idx, uint16_t idx);
uint16_t bms_get_balance_temp_by_bmu(uint8_t bmu_idx, uint16_t idx); uint16_t bms_get_balance_temp_by_bmu(uint8_t bmu_idx, uint16_t idx);
uint32_t bms_get_balance_status(uint8_t bmu_idx, uint8_t idx); uint32_t bms_get_balance_status(uint8_t bmu_idx, uint8_t idx);
void bms_set_bmu_fault_bit(BmuFaultBit idx,uint8_t value); void bms_set_bmu_num(uint8_t number);
void bms_set_bmu_num(uint8_t number);
void bms_set_bmu_volt_num(uint8_t number);
void bms_set_bmu_temp_num(uint8_t number);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -384,6 +384,7 @@ const FaultLevel alarm_level_map[8] =
kFaultLevel_Normal, kFaultLevel_First, kFaultLevel_Second, kFaultLevel_Second, kFaultLevel_Normal, kFaultLevel_First, kFaultLevel_Second, kFaultLevel_Second,
kFaultLevel_Third, kFaultLevel_Third, kFaultLevel_Third, kFaultLevel_Third, kFaultLevel_Third, kFaultLevel_Third, kFaultLevel_Third, kFaultLevel_Third,
}; };
void bms_analyse_fault(RunStatus status, FaultArray *fault_array) void bms_analyse_fault(RunStatus status, FaultArray *fault_array)
{ {
uint32_t i, j; uint32_t i, j;
@ -412,15 +413,29 @@ void bms_analyse_fault(RunStatus status, FaultArray *fault_array)
handler = get_eeprom_data(FAULT_ALARM_HANDLER_ADDR(tmp), kEepromDataType_Full); handler = get_eeprom_data(FAULT_ALARM_HANDLER_ADDR(tmp), kEepromDataType_Full);
alarm_handle = handler & 0x0003; alarm_handle = handler & 0x0003;
cur_rate[j + kFaultLevel_End - level] = handler >> 8; cur_rate[j + kFaultLevel_End - level] = handler >> 8;
if(alarm_handle == kFaultHandle_ForbidIdx)//禁用 if(alarm_handle == kFaultHandle_ForbidIdx)//禁用
{ {
continue; continue;
} }
else if(alarm_handle != kFaultHandle_ForbidIdx) else if(alarm_handle != kFaultHandle_ForbidIdx)
{ {
data = fault_item.fault_data[prop_array[i].data_idx]; data = fault_item.fault_data[prop_array[i].data_idx];
threshold[kCondType_Alarm] = get_eeprom_data(FAULT_ARARM_THRESHOLD_ADDR(tmp), kEepromDataType_Full);
threshold[kCondType_Release] = get_eeprom_data(FAULT_RELEASE_THRESHOLD_ADDR(tmp), kEepromDataType_Full); if (i == 10 || i == 11)
{
uint16_t cell_threshold_idx = (i == 10) ? prop_array[12].threshold_idx : prop_array[13].threshold_idx;
uint16_t cell_threshold = get_eeprom_data(FAULT_ARARM_THRESHOLD_ADDR(cell_threshold_idx + j * 5), kEepromDataType_Full);
threshold[kCondType_Alarm] = (cell_threshold * bms_get_cell_num()) / 100;
cell_threshold = get_eeprom_data(FAULT_RELEASE_THRESHOLD_ADDR(cell_threshold_idx + j * 5), kEepromDataType_Full);
threshold[kCondType_Release] = (cell_threshold * bms_get_cell_num()) / 100;
}
else
{
threshold[kCondType_Alarm] = get_eeprom_data(FAULT_ARARM_THRESHOLD_ADDR(tmp), kEepromDataType_Full);
threshold[kCondType_Release] = get_eeprom_data(FAULT_RELEASE_THRESHOLD_ADDR(tmp), kEepromDataType_Full);
}
if(prop_array[i].other_cond == NULL) //如果没有其他故障判断策略,默认模版策略 if(prop_array[i].other_cond == NULL) //如果没有其他故障判断策略,默认模版策略
{ {
check_type = prop_array[i].check_type & 0x03; check_type = prop_array[i].check_type & 0x03;

View File

@ -48,10 +48,10 @@ const FaultProp dis_fault_array[] =
{kFaultCode_MSComm, 1, kFaultData_MScomm, kEep_MSCommAlarm1, kCheckType_MoreThan | FAULT_RELAY_BOTH_OFF, NULL}, {kFaultCode_MSComm, 1, kFaultData_MScomm, kEep_MSCommAlarm1, kCheckType_MoreThan | FAULT_RELAY_BOTH_OFF, NULL},
{kFaultCode_CmdTimeout, 1, kFaultData_CmdHeart, kEep_CmdTimeoutAlarm, kCheckType_MoreThan | FAULT_RELAY_BOTH_OFF, NULL}, {kFaultCode_CmdTimeout, 1, kFaultData_CmdHeart, kEep_CmdTimeoutAlarm, kCheckType_MoreThan | FAULT_RELAY_BOTH_OFF, NULL},
{kFaultCode_LowTotalVolt, 3, kFaultData_TotalVolt, kEep_DisLTVoltHTAlarm1, kCheckType_LessThan, bms_dis_low_volt_ht_call}, {kFaultCode_LowTotalVolt, 3, kFaultData_TotalVolt, kEep_DisLTVoltHTAlarm1, kCheckType_LessThan, bms_dis_low_volt_ht_call}, //10
{kFaultCode_LowTotalVolt, 3, kFaultData_TotalVolt, kEep_DisLTVoltLTAlarm1, kCheckType_LessThan, bms_dis_low_volt_lt_call}, {kFaultCode_LowTotalVolt, 3, kFaultData_TotalVolt, kEep_DisLTVoltLTAlarm1, kCheckType_LessThan, bms_dis_low_volt_lt_call}, //11
{kFaultCode_LowCellVolt, 3, kFaultData_MinVolt, kEep_DisLCVoltHTAlarm1, kCheckType_LessThan, bms_dis_low_volt_ht_call}, {kFaultCode_LowCellVolt, 3, kFaultData_MinVolt, kEep_DisLCVoltHTAlarm1, kCheckType_LessThan, bms_dis_low_volt_ht_call}, //12
{kFaultCode_LowCellVolt, 3, kFaultData_MinVolt, kEep_DisLCVoltLTAlarm1, kCheckType_LessThan, bms_dis_low_volt_lt_call}, {kFaultCode_LowCellVolt, 3, kFaultData_MinVolt, kEep_DisLCVoltLTAlarm1, kCheckType_LessThan, bms_dis_low_volt_lt_call}, //13
{kFaultCode_HighCellVolt, 3, kFaultData_MaxVolt, kEep_DisHCVoltAlarm1, kCheckType_MoreThan, NULL}, {kFaultCode_HighCellVolt, 3, kFaultData_MaxVolt, kEep_DisHCVoltAlarm1, kCheckType_MoreThan, NULL},
{kFaultCode_HighCur, 3, kFaultData_Current, kEep_DisOverCurAlarm1, kCheckType_MoreThan, bms_dis_high_cur_call}, {kFaultCode_HighCur, 3, kFaultData_Current, kEep_DisOverCurAlarm1, kCheckType_MoreThan, bms_dis_high_cur_call},
{kFaultCode_HighCellTemp, 3, kFaultData_MaxTemp, kEep_DisHighTempAlarm1, kCheckType_MoreThan, NULL}, {kFaultCode_HighCellTemp, 3, kFaultData_MaxTemp, kEep_DisHighTempAlarm1, kCheckType_MoreThan, NULL},
@ -104,10 +104,10 @@ const FaultProp chg_fault_array[] =
{kFaultCode_MSComm, 1, kFaultData_MScomm, kEep_MSCommAlarm1, kCheckType_MoreThan | FAULT_RELAY_BOTH_OFF, NULL}, {kFaultCode_MSComm, 1, kFaultData_MScomm, kEep_MSCommAlarm1, kCheckType_MoreThan | FAULT_RELAY_BOTH_OFF, NULL},
{kFaultCode_CmdTimeout, 1, kFaultData_CmdHeart, kEep_CmdTimeoutAlarm, kCheckType_MoreThan | FAULT_RELAY_BOTH_OFF, NULL}, {kFaultCode_CmdTimeout, 1, kFaultData_CmdHeart, kEep_CmdTimeoutAlarm, kCheckType_MoreThan | FAULT_RELAY_BOTH_OFF, NULL},
{kFaultCode_HighTotalVolt, 3, kFaultData_TotalVolt, kEep_ChgHTVoltHTAlarm1, kCheckType_MoreThan, bms_chg_high_volt_ht_call}, {kFaultCode_HighTotalVolt, 3, kFaultData_TotalVolt, kEep_ChgHTVoltHTAlarm1, kCheckType_MoreThan, bms_chg_high_volt_ht_call}, //10
{kFaultCode_HighTotalVolt, 3, kFaultData_TotalVolt, kEep_ChgHTVoltLTAlarm1, kCheckType_MoreThan, bms_chg_high_volt_lt_call}, {kFaultCode_HighTotalVolt, 3, kFaultData_TotalVolt, kEep_ChgHTVoltLTAlarm1, kCheckType_MoreThan, bms_chg_high_volt_lt_call}, //11
{kFaultCode_HighCellVolt, 3, kFaultData_MaxVolt, kEep_ChgHCVoltHTAlarm1, kCheckType_MoreThan, bms_chg_high_volt_ht_call}, {kFaultCode_HighCellVolt, 3, kFaultData_MaxVolt, kEep_ChgHCVoltHTAlarm1, kCheckType_MoreThan, bms_chg_high_volt_ht_call}, //12
{kFaultCode_HighCellVolt, 3, kFaultData_MaxVolt, kEep_ChgHCVoltLTAlarm1, kCheckType_MoreThan, bms_chg_high_volt_lt_call}, {kFaultCode_HighCellVolt, 3, kFaultData_MaxVolt, kEep_ChgHCVoltLTAlarm1, kCheckType_MoreThan, bms_chg_high_volt_lt_call}, //13
{kFaultCode_LowCellVolt, 3, kFaultData_MinVolt, kEep_ChgLCVoltAlarm1, kCheckType_LessThan, NULL}, {kFaultCode_LowCellVolt, 3, kFaultData_MinVolt, kEep_ChgLCVoltAlarm1, kCheckType_LessThan, NULL},
{kFaultCode_HighCur, 3, kFaultData_Current, kEep_ChgOverCurAlarm1, kCheckType_MoreThan, bms_chg_high_cur_call}, {kFaultCode_HighCur, 3, kFaultData_Current, kEep_ChgOverCurAlarm1, kCheckType_MoreThan, bms_chg_high_cur_call},
{kFaultCode_HighCellTemp, 3, kFaultData_MaxTemp, kEep_ChgHighTempAlarm1, kCheckType_MoreThan, NULL}, {kFaultCode_HighCellTemp, 3, kFaultData_MaxTemp, kEep_ChgHighTempAlarm1, kCheckType_MoreThan, NULL},

View File

@ -5,9 +5,27 @@
#include "statistic_manager.h" #include "statistic_manager.h"
#include "table_comm.h" #include "table_comm.h"
#include "kit_time.h" #include "kit_time.h"
#include "hv_adc_manager.h"
uint32_t statistic_data[kStatisticData_End]; uint32_t statistic_data[kStatisticData_End];
typedef struct {
uint8_t bmu_num;
uint16_t min_voltage;
uint16_t max_voltage;
} voltage_range_t;
// 高压堆叠范围对照表所有电压值已×10
const voltage_range_t voltage_ranges[] = {
{1, 490, 550},
{2, 980, 1100},
{3, 1470, 1650},
{4, 1960, 2200},
{5, 2450, 2750},
{6, 2940, 3300},
{7, 3430, 3850},
{8, 3920, 4400}
};
uint32_t bms_get_statistic_data(StatisticData idx) uint32_t bms_get_statistic_data(StatisticData idx)
{ {
@ -220,10 +238,34 @@ static void bms_statistic_cell_temp(void)
kit_time_dly_ms(2); kit_time_dly_ms(2);
} }
void update_bmu_number()
{
if (bms_get_bmu_num() <= 8)
{
uint16_t acc_volt = bms_get_high_volt(kHvType_Bat);
for (uint8_t i = 0; i < sizeof(voltage_ranges)/sizeof(voltage_ranges[0]); i++)
{
if (acc_volt >= voltage_ranges[i].min_voltage && acc_volt <= voltage_ranges[i].max_voltage)
{
if (bms_get_bmu_num() != voltage_ranges[i].bmu_num)
{
bms_set_bmu_num(voltage_ranges[i].bmu_num);
bms_set_bmu_volt_num(voltage_ranges[i].bmu_num);
bms_set_bmu_temp_num(voltage_ranges[i].bmu_num);
break;
}
}
}
}
}
void bms_poll_statistic(uint32_t base_time) void bms_poll_statistic(uint32_t base_time)
{ {
bms_statistic_cell_volt(); bms_statistic_cell_volt();
bms_statistic_cell_temp(); bms_statistic_cell_temp();
update_bmu_number();
} }

View File

@ -10,15 +10,15 @@
<TargetName>stm32f407</TargetName> <TargetName>stm32f407</TargetName>
<ToolsetNumber>0x4</ToolsetNumber> <ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName> <ToolsetName>ARM-ADS</ToolsetName>
<pArmCC>5060960::V5.06 update 7 (build 960)::.\ARM_Compiler_5.06u7</pArmCC> <pArmCC>5050106::V5.05 update 1 (build 106)::ARMCC</pArmCC>
<pCCUsed>5060960::V5.06 update 7 (build 960)::.\ARM_Compiler_5.06u7</pCCUsed> <pCCUsed>5050106::V5.05 update 1 (build 106)::ARMCC</pCCUsed>
<uAC6>0</uAC6> <uAC6>0</uAC6>
<TargetOption> <TargetOption>
<TargetCommonOption> <TargetCommonOption>
<Device>STM32F407ZGTx</Device> <Device>STM32F407ZGTx</Device>
<Vendor>STMicroelectronics</Vendor> <Vendor>STMicroelectronics</Vendor>
<PackID>Keil.STM32F4xx_DFP.3.0.0</PackID> <PackID>Keil.STM32F4xx_DFP.2.16.0</PackID>
<PackURL>https://www.keil.com/pack/</PackURL> <PackURL>http://www.keil.com/pack/</PackURL>
<Cpu>IRAM(0x20000000,0x00020000) IRAM2(0x10000000,0x00010000) IROM(0x08000000,0x00100000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE</Cpu> <Cpu>IRAM(0x20000000,0x00020000) IRAM2(0x10000000,0x00010000) IROM(0x08000000,0x00100000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE</Cpu>
<FlashUtilSpec></FlashUtilSpec> <FlashUtilSpec></FlashUtilSpec>
<StartupFile></StartupFile> <StartupFile></StartupFile>
@ -1145,8 +1145,8 @@
<TargetCommonOption> <TargetCommonOption>
<Device>STM32F407VGTx</Device> <Device>STM32F407VGTx</Device>
<Vendor>STMicroelectronics</Vendor> <Vendor>STMicroelectronics</Vendor>
<PackID>Keil.STM32F4xx_DFP.3.0.0</PackID> <PackID>Keil.STM32F4xx_DFP.2.16.0</PackID>
<PackURL>https://www.keil.com/pack/</PackURL> <PackURL>http://www.keil.com/pack/</PackURL>
<Cpu>IRAM(0x20000000,0x00020000) IRAM2(0x10000000,0x00010000) IROM(0x08000000,0x00100000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE</Cpu> <Cpu>IRAM(0x20000000,0x00020000) IRAM2(0x10000000,0x00010000) IROM(0x08000000,0x00100000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE</Cpu>
<FlashUtilSpec></FlashUtilSpec> <FlashUtilSpec></FlashUtilSpec>
<StartupFile></StartupFile> <StartupFile></StartupFile>

File diff suppressed because it is too large Load Diff

View File

@ -127,11 +127,13 @@ uint16_t bcu_total_msg_fill(uint16_t start_addr, uint8_t reg_num, uint8_t *buf)
//12 在线从机总数 //12 在线从机总数
READ_FC03_F04_ITEM(12, bms_get_bmu_online_num()); READ_FC03_F04_ITEM(12, bms_get_bmu_online_num());
//13 电池总数 //13 电池总数
READ_FC03_F04_ITEM(13, get_eeprom_data(kEep_CellNum, kEepromDataType_Full)); //READ_FC03_F04_ITEM(13, get_eeprom_data(kEep_CellNum, kEepromDataType_Full));
READ_FC03_F04_ITEM(13, bms_get_cell_num());
//14 在线电池总数 //14 在线电池总数
READ_FC03_F04_ITEM(14, bms_get_statistic_data(kStatisticData_OnlineCellNum)); READ_FC03_F04_ITEM(14, bms_get_statistic_data(kStatisticData_OnlineCellNum));
//15 温感总数 //15 温感总数
READ_FC03_F04_ITEM(15, get_eeprom_data(kEep_TempNum, kEepromDataType_Full)); //READ_FC03_F04_ITEM(15, get_eeprom_data(kEep_TempNum, kEepromDataType_Full));
READ_FC03_F04_ITEM(15, bms_get_temp_num());
//16 在线温感总数 //16 在线温感总数
READ_FC03_F04_ITEM(16, bms_get_statistic_data(kStatisticData_OnlineTempNum)); READ_FC03_F04_ITEM(16, bms_get_statistic_data(kStatisticData_OnlineTempNum));
//17 最大允许放电电流 //17 最大允许放电电流

View File

@ -10,15 +10,15 @@
<TargetName>stm32f407</TargetName> <TargetName>stm32f407</TargetName>
<ToolsetNumber>0x4</ToolsetNumber> <ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName> <ToolsetName>ARM-ADS</ToolsetName>
<pArmCC>5060960::V5.06 update 7 (build 960)::.\ARM_Compiler_5.06u7</pArmCC> <pArmCC>5050106::V5.05 update 1 (build 106)::ARMCC</pArmCC>
<pCCUsed>5060960::V5.06 update 7 (build 960)::.\ARM_Compiler_5.06u7</pCCUsed> <pCCUsed>5050106::V5.05 update 1 (build 106)::ARMCC</pCCUsed>
<uAC6>0</uAC6> <uAC6>0</uAC6>
<TargetOption> <TargetOption>
<TargetCommonOption> <TargetCommonOption>
<Device>STM32F407ZGTx</Device> <Device>STM32F407ZGTx</Device>
<Vendor>STMicroelectronics</Vendor> <Vendor>STMicroelectronics</Vendor>
<PackID>Keil.STM32F4xx_DFP.3.0.0</PackID> <PackID>Keil.STM32F4xx_DFP.2.16.0</PackID>
<PackURL>https://www.keil.com/pack/</PackURL> <PackURL>http://www.keil.com/pack/</PackURL>
<Cpu>IRAM(0x20000000,0x00020000) IRAM2(0x10000000,0x00010000) IROM(0x08000000,0x00100000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE</Cpu> <Cpu>IRAM(0x20000000,0x00020000) IRAM2(0x10000000,0x00010000) IROM(0x08000000,0x00100000) CPUTYPE("Cortex-M4") FPU2 CLOCK(12000000) ELITTLE</Cpu>
<FlashUtilSpec></FlashUtilSpec> <FlashUtilSpec></FlashUtilSpec>
<StartupFile></StartupFile> <StartupFile></StartupFile>
@ -81,7 +81,7 @@
<nStopB2X>0</nStopB2X> <nStopB2X>0</nStopB2X>
</BeforeMake> </BeforeMake>
<AfterMake> <AfterMake>
<RunUserProg1>1</RunUserProg1> <RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2> <RunUserProg2>0</RunUserProg2>
<UserProg1Name>fromelf --m32combined --output=BxE1C_BOOT.s19 .\Objects\BxE1C_BOOT.axf</UserProg1Name> <UserProg1Name>fromelf --m32combined --output=BxE1C_BOOT.s19 .\Objects\BxE1C_BOOT.axf</UserProg1Name>
<UserProg2Name></UserProg2Name> <UserProg2Name></UserProg2Name>

File diff suppressed because it is too large Load Diff

View File

@ -1,39 +1,45 @@
[BREAKPOINTS] [BREAKPOINTS]
ForceImpTypeAny = 0 FForceImpTypeAny = 0
ShowInfoWin = 1 ShowInfoWin = 1
EnableFlashBP = 2 EnableFlashBP = 2
BPDuringExecution = 0 BPDuringExecution = 0
orceImpTypeAny = 0
[CFI] [CFI]
CFISize = 0x00 CCFISize = 0x00
CFIAddr = 0x00 CFIAddr = 0x00
FISize = 0x00
[CPU] [CPU]
MonModeVTableAddr = 0xFFFFFFFF MOverrideMemMap = 0
AllowSimulation = 1
ScriptFile=""
onModeVTableAddr = 0xFFFFFFFF
MonModeDebug = 0 MonModeDebug = 0
MaxNumAPs = 0 MaxNumAPs = 0
LowPowerHandlingMode = 0 LowPowerHandlingMode = 0
OverrideMemMap = 0
AllowSimulation = 1
ScriptFile=""
[FLASH] [FLASH]
CacheExcludeSize = 0x00 CCacheExcludeSize = 0x00
CacheExcludeAddr = 0x00 CacheExcludeAddr = 0x00
MinNumBytesFlashDL = 0 MinNumBytesFlashDL = 0
SkipProgOnCRCMatch = 1 SkipProgOnCRCMatch = 1
VerifyDownload = 1 VerifyDownload = 1
AllowCaching = 1 AllowCaching = 1
EnableFlashDL = 2 EnableFlashDL = 2
Override = 0 Override = 1
Device="ARM7" Device="Unspecified"
acheExcludeSize = 0x00
[GENERAL] [GENERAL]
WorkRAMSize = 0x00 WWorkRAMSize = 0x00
WorkRAMAddr = 0x00 WorkRAMAddr = 0x00
RAMUsageLimit = 0x00 RAMUsageLimit = 0x00
orkRAMSize = 0x00
[SWO] [SWO]
SWOLogFile="" SSWOLogFile=""
WOLogFile=""
[MEM] [MEM]
RdOverrideOrMask = 0x00 RRdOverrideOrMask = 0x00
RdOverrideAndMask = 0xFFFFFFFF RdOverrideAndMask = 0xFFFFFFFF
RdOverrideAddr = 0xFFFFFFFF RdOverrideAddr = 0xFFFFFFFF
WrOverrideOrMask = 0x00 WrOverrideOrMask = 0x00
WrOverrideAndMask = 0xFFFFFFFF WrOverrideAndMask = 0xFFFFFFFF
WrOverrideAddr = 0xFFFFFFFF WrOverrideAddr = 0xFFFFFFFF
dOverrideOrMask = 0x00