mirror of
https://github.com/Dev-KATECH/ADM.git
synced 2026-05-17 09:53:59 +09:00
4292 lines
81 KiB
Plaintext
4292 lines
81 KiB
Plaintext
Lpi2c_Ip_SetMasterHighSpeedMode (uint32 u32Instance, boolean bHighSpeedEnabled)
|
|
{
|
|
struct Lpi2c_Ip_MasterStateType * master;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
master = g_lpi2cMasterStatePtr[u32Instance];
|
|
# DEBUG BEGIN_STMT
|
|
if (bHighSpeedEnabled != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
master->operatingMode = 3;
|
|
goto <bb 5>; [INV]
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
master->operatingMode = 0;
|
|
|
|
<bb 5> :
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_SetSlaveCallback (uint32 u32Instance, void (*Lpi2c_Ip_SlaveCallbackType) (Lpi2c_Ip_SlaveEventType, uint8) slaveCallback)
|
|
{
|
|
struct Lpi2c_Ip_SlaveStateType * slave;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
slave = g_lpi2cSlaveStatePtr[u32Instance];
|
|
# DEBUG BEGIN_STMT
|
|
slave->slaveCallback = slaveCallback;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_SetMasterCallback (uint32 u32Instance, void (*Lpi2c_Ip_MasterCallbackType) (Lpi2c_Ip_MasterEventType, uint8) masterCallback)
|
|
{
|
|
struct Lpi2c_Ip_MasterStateType * master;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
master = g_lpi2cMasterStatePtr[u32Instance];
|
|
# DEBUG BEGIN_STMT
|
|
master->masterCallback = masterCallback;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_ModuleIRQHandler (uint32 instance)
|
|
{
|
|
uint32 u32SlaveIsrStatus;
|
|
uint32 u32SlaveIsrEnable;
|
|
uint32 u32MasterIsrStatus;
|
|
uint32 u32MasterIsrEnable;
|
|
struct LPI2C_Type * baseAddr;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
u32MasterIsrEnable = 0;
|
|
# DEBUG BEGIN_STMT
|
|
u32MasterIsrStatus = 0;
|
|
# DEBUG BEGIN_STMT
|
|
u32SlaveIsrEnable = 0;
|
|
# DEBUG BEGIN_STMT
|
|
u32SlaveIsrStatus = 0;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr = g_lpi2cBase[instance];
|
|
# DEBUG BEGIN_STMT
|
|
_1 = g_lpi2cSlaveStatePtr[instance];
|
|
if (_1 != 0B)
|
|
goto <bb 4>; [INV]
|
|
else
|
|
goto <bb 3>; [INV]
|
|
|
|
<bb 3> :
|
|
_2 = g_lpi2cMasterStatePtr[instance];
|
|
if (_2 != 0B)
|
|
goto <bb 4>; [INV]
|
|
else
|
|
goto <bb 12>; [INV]
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
_3 = baseAddr->MIER;
|
|
u32MasterIsrEnable = _3 & 32515;
|
|
# DEBUG BEGIN_STMT
|
|
_4 = baseAddr->MSR;
|
|
u32MasterIsrStatus = _4 & 32515;
|
|
# DEBUG BEGIN_STMT
|
|
_5 = baseAddr->SIER;
|
|
u32SlaveIsrEnable = _5 & 65295;
|
|
# DEBUG BEGIN_STMT
|
|
_6 = baseAddr->SSR;
|
|
u32SlaveIsrStatus = _6 & 65295;
|
|
# DEBUG BEGIN_STMT
|
|
if (u32MasterIsrEnable != 0)
|
|
goto <bb 5>; [INV]
|
|
else
|
|
goto <bb 6>; [INV]
|
|
|
|
<bb 5> :
|
|
if (u32MasterIsrStatus != 0)
|
|
goto <bb 8>; [INV]
|
|
else
|
|
goto <bb 6>; [INV]
|
|
|
|
<bb 6> :
|
|
if (u32SlaveIsrEnable != 0)
|
|
goto <bb 7>; [INV]
|
|
else
|
|
goto <bb 11>; [INV]
|
|
|
|
<bb 7> :
|
|
if (u32SlaveIsrStatus != 0)
|
|
goto <bb 8>; [INV]
|
|
else
|
|
goto <bb 11>; [INV]
|
|
|
|
<bb 8> :
|
|
# DEBUG BEGIN_STMT
|
|
_7 = g_lpi2cSlaveStatePtr[instance];
|
|
if (_7 == 0B)
|
|
goto <bb 9>; [INV]
|
|
else
|
|
goto <bb 10>; [INV]
|
|
|
|
<bb 9> :
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterIRQHandler (instance);
|
|
goto <bb 13>; [INV]
|
|
|
|
<bb 10> :
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_SlaveIRQHandler (instance);
|
|
goto <bb 13>; [INV]
|
|
|
|
<bb 11> :
|
|
# DEBUG BEGIN_STMT
|
|
_8 = baseAddr->MSR;
|
|
baseAddr->MSR = _8;
|
|
# DEBUG BEGIN_STMT
|
|
_9 = baseAddr->SSR;
|
|
baseAddr->SSR = _9;
|
|
goto <bb 13>; [INV]
|
|
|
|
<bb 12> :
|
|
# DEBUG BEGIN_STMT
|
|
_10 = baseAddr->MSR;
|
|
baseAddr->MSR = _10;
|
|
# DEBUG BEGIN_STMT
|
|
_11 = baseAddr->SSR;
|
|
baseAddr->SSR = _11;
|
|
|
|
<bb 13> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_SlaveIRQHandler (uint32 instance)
|
|
{
|
|
boolean repeatStartDetect;
|
|
boolean stopDetect;
|
|
struct Lpi2c_Ip_SlaveStateType * slave;
|
|
struct LPI2C_Type * baseAddr;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
stopDetect = 0;
|
|
repeatStartDetect = 0;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr = g_lpi2cBase[instance];
|
|
# DEBUG BEGIN_STMT
|
|
slave = g_lpi2cSlaveStatePtr[instance];
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_SlaveCheckDataEvent (instance, baseAddr, slave);
|
|
# DEBUG BEGIN_STMT
|
|
stopDetect = LPI2C_Get_SlaveSTOPDetectEvent (baseAddr);
|
|
# DEBUG BEGIN_STMT
|
|
repeatStartDetect = LPI2C_Get_SlaveRepeatedStartEvent (baseAddr);
|
|
# DEBUG BEGIN_STMT
|
|
if (repeatStartDetect != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 6>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
_1 = slave->repeatedStarts;
|
|
_2 = _1;
|
|
_3 = _2 + 1;
|
|
slave->repeatedStarts = _3;
|
|
# DEBUG BEGIN_STMT
|
|
_4 = slave->repeatedStarts;
|
|
if (_4 == 1)
|
|
goto <bb 4>; [INV]
|
|
else
|
|
goto <bb 6>; [INV]
|
|
|
|
<bb 4> :
|
|
_5 = slave->is10bitAddress;
|
|
if (_5 != 0)
|
|
goto <bb 5>; [INV]
|
|
else
|
|
goto <bb 6>; [INV]
|
|
|
|
<bb 5> :
|
|
# DEBUG BEGIN_STMT
|
|
repeatStartDetect = 0;
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Clear_SlaveRepeatedStartEvent (baseAddr);
|
|
|
|
<bb 6> :
|
|
# DEBUG BEGIN_STMT
|
|
if (stopDetect != 0)
|
|
goto <bb 8>; [INV]
|
|
else
|
|
goto <bb 7>; [INV]
|
|
|
|
<bb 7> :
|
|
if (repeatStartDetect != 0)
|
|
goto <bb 8>; [INV]
|
|
else
|
|
goto <bb 10>; [INV]
|
|
|
|
<bb 8> :
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_SlaveStopDetectHandler (baseAddr, slave);
|
|
# DEBUG BEGIN_STMT
|
|
if (stopDetect != 0)
|
|
goto <bb 9>; [INV]
|
|
else
|
|
goto <bb 10>; [INV]
|
|
|
|
<bb 9> :
|
|
# DEBUG BEGIN_STMT
|
|
slave->repeatedStarts = 0;
|
|
|
|
<bb 10> :
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_SlaveCheckErrorEvent (baseAddr, slave);
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_SlaveCheckErrorEvent (struct LPI2C_Type * baseAddr, struct Lpi2c_Ip_SlaveStateType * slave)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
_1 = LPI2C_Get_SlaveBitErrorEvent (baseAddr);
|
|
if (_1 != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_SlaveBitErrorEventHandler (baseAddr, slave);
|
|
|
|
<bb 4> :
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_SlaveBitErrorEventHandler (struct LPI2C_Type * baseAddr, struct Lpi2c_Ip_SlaveStateType * slave)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
slave->status = 1;
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Clear_SlaveBitErrorEvent (baseAddr);
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_SlaveInt (baseAddr, 1, 0);
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_SlaveEndTransferHandler (slave, baseAddr);
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_SlaveStopDetectHandler (struct LPI2C_Type * baseAddr, struct Lpi2c_Ip_SlaveStateType * slave)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Clear_SlaveSTOPDetectEvent (baseAddr);
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Clear_SlaveRepeatedStartEvent (baseAddr);
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_SlaveInt (baseAddr, 1, 0);
|
|
# DEBUG BEGIN_STMT
|
|
_1 = slave->status;
|
|
if (_1 == 2)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
slave->status = 0;
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_SlaveEndTransferHandler (slave, baseAddr);
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_SlaveCheckDataEvent (uint32 instance, struct LPI2C_Type * baseAddr, struct Lpi2c_Ip_SlaveStateType * slave)
|
|
{
|
|
boolean slaveInterrupt;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
slaveInterrupt = 0;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = LPI2C_Get_SlaveAddressValidEvent (baseAddr);
|
|
if (_1 != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_SlaveHandleAddressValidEvent (instance, baseAddr, slave);
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
_2 = LPI2C_Get_SlaveTransmitDataEvent (baseAddr);
|
|
if (_2 != 0)
|
|
goto <bb 5>; [INV]
|
|
else
|
|
goto <bb 7>; [INV]
|
|
|
|
<bb 5> :
|
|
# DEBUG BEGIN_STMT
|
|
slaveInterrupt = LPI2C_Get_SlaveInt (baseAddr, 1);
|
|
# DEBUG BEGIN_STMT
|
|
if (slaveInterrupt != 0)
|
|
goto <bb 6>; [INV]
|
|
else
|
|
goto <bb 7>; [INV]
|
|
|
|
<bb 6> :
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_SlaveHandleTransmitDataEvent (baseAddr, slave);
|
|
|
|
<bb 7> :
|
|
# DEBUG BEGIN_STMT
|
|
_3 = LPI2C_Get_SlaveReceiveDataEvent (baseAddr);
|
|
if (_3 != 0)
|
|
goto <bb 8>; [INV]
|
|
else
|
|
goto <bb 10>; [INV]
|
|
|
|
<bb 8> :
|
|
# DEBUG BEGIN_STMT
|
|
slaveInterrupt = LPI2C_Get_SlaveInt (baseAddr, 2);
|
|
# DEBUG BEGIN_STMT
|
|
if (slaveInterrupt != 0)
|
|
goto <bb 9>; [INV]
|
|
else
|
|
goto <bb 10>; [INV]
|
|
|
|
<bb 9> :
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_SlaveHandleReceiveDataEvent (baseAddr, slave);
|
|
|
|
<bb 10> :
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_SlaveEndTransferHandler (const struct Lpi2c_Ip_SlaveStateType * slave, struct LPI2C_Type * baseAddr)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
_1 = slave->slaveListening;
|
|
_2 = ~_1;
|
|
if (_2 != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_SlaveEndTransfer (baseAddr);
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
_3 = slave->slaveCallback;
|
|
if (_3 != 0B)
|
|
goto <bb 5>; [INV]
|
|
else
|
|
goto <bb 6>; [INV]
|
|
|
|
<bb 5> :
|
|
# DEBUG BEGIN_STMT
|
|
_4 = slave->slaveCallback;
|
|
_5 = slave->callbackParam;
|
|
_4 (7, _5);
|
|
|
|
<bb 6> :
|
|
# DEBUG BEGIN_STMT
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_SlaveEndTransfer (struct LPI2C_Type * baseAddr)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_SlaveInt (baseAddr, 3847, 0);
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_SlaveEnable (baseAddr, 0);
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_SlaveGetTransferStatus (uint32 instance, uint32 * bytesRemaining)
|
|
{
|
|
const struct Lpi2c_Ip_SlaveStateType * slave;
|
|
Lpi2c_Ip_StatusType D.5520;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
slave = g_lpi2cSlaveStatePtr[instance];
|
|
# DEBUG BEGIN_STMT
|
|
if (bytesRemaining != 0B)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 5>; [INV]
|
|
|
|
<bb 3> :
|
|
_1 = slave->transferType;
|
|
if (_1 == 1)
|
|
goto <bb 4>; [INV]
|
|
else
|
|
goto <bb 5>; [INV]
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
_2 = slave->bufferSize;
|
|
*bytesRemaining = _2;
|
|
|
|
<bb 5> :
|
|
# DEBUG BEGIN_STMT
|
|
D.5520 = slave->status;
|
|
return D.5520;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_SlaveSetBuffer (uint32 instance, uint8 * dataBuff, uint32 dataSize)
|
|
{
|
|
struct Lpi2c_Ip_SlaveStateType * slave;
|
|
Lpi2c_Ip_StatusType D.5514;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
slave = g_lpi2cSlaveStatePtr[instance];
|
|
# DEBUG BEGIN_STMT
|
|
slave->dataBuffer = dataBuff;
|
|
# DEBUG BEGIN_STMT
|
|
slave->bufferSize = dataSize;
|
|
# DEBUG BEGIN_STMT
|
|
D.5514 = 0;
|
|
return D.5514;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_SlaveDeinit (uint32 instance)
|
|
{
|
|
const struct Lpi2c_Ip_SlaveStateType * slave;
|
|
struct LPI2C_Type * baseAddr;
|
|
Lpi2c_Ip_StatusType D.5504;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr = g_lpi2cBase[instance];
|
|
# DEBUG BEGIN_STMT
|
|
slave = g_lpi2cSlaveStatePtr[instance];
|
|
# DEBUG BEGIN_STMT
|
|
_1 = slave->transferType;
|
|
if (_1 == 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 5>; [INV]
|
|
|
|
<bb 3> :
|
|
_2 = slave->slaveListening;
|
|
if (_2 != 0)
|
|
goto <bb 4>; [INV]
|
|
else
|
|
goto <bb 5>; [INV]
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_SlaveRxDMA (baseAddr, 0);
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_SlaveTxDMA (baseAddr, 0);
|
|
|
|
<bb 5> :
|
|
# DEBUG BEGIN_STMT
|
|
g_lpi2cSlaveStatePtr[instance] = 0B;
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_SlaveEnable (baseAddr, 0);
|
|
# DEBUG BEGIN_STMT
|
|
D.5504 = 0;
|
|
return D.5504;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_StartListening (uint32 u32Instance)
|
|
{
|
|
const struct Lpi2c_Ip_SlaveStateType * slave;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
slave = g_lpi2cSlaveStatePtr[u32Instance];
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_SlaveActivateEvents (u32Instance);
|
|
# DEBUG BEGIN_STMT
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_SlaveInit (uint32 instance, const struct Lpi2c_Ip_SlaveConfigType * userConfigPtr)
|
|
{
|
|
struct Lpi2c_Ip_SlaveStateType * slave;
|
|
struct LPI2C_Type * baseAddr;
|
|
Lpi2c_Ip_StatusType D.5466;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr = g_lpi2cBase[instance];
|
|
# DEBUG BEGIN_STMT
|
|
_1 = userConfigPtr->slaveState;
|
|
g_lpi2cSlaveStatePtr[instance] = _1;
|
|
# DEBUG BEGIN_STMT
|
|
slave = g_lpi2cSlaveStatePtr[instance];
|
|
# DEBUG BEGIN_STMT
|
|
slave->status = 0;
|
|
# DEBUG BEGIN_STMT
|
|
_2 = userConfigPtr->slaveCallback;
|
|
slave->slaveCallback = _2;
|
|
# DEBUG BEGIN_STMT
|
|
_3 = userConfigPtr->callbackParam;
|
|
slave->callbackParam = _3;
|
|
# DEBUG BEGIN_STMT
|
|
slave->dataBuffer = 0B;
|
|
# DEBUG BEGIN_STMT
|
|
slave->bufferSize = 0;
|
|
# DEBUG BEGIN_STMT
|
|
slave->direction = 0;
|
|
# DEBUG BEGIN_STMT
|
|
_4 = userConfigPtr->transferType;
|
|
slave->transferType = _4;
|
|
# DEBUG BEGIN_STMT
|
|
_5 = userConfigPtr->dmaTxChannel;
|
|
slave->dmaTxChannel = _5;
|
|
# DEBUG BEGIN_STMT
|
|
_6 = userConfigPtr->dmaRxChannel;
|
|
slave->dmaRxChannel = _6;
|
|
# DEBUG BEGIN_STMT
|
|
slave->isTransferInProgress = 0;
|
|
# DEBUG BEGIN_STMT
|
|
_7 = userConfigPtr->is10bitAddr;
|
|
slave->is10bitAddress = _7;
|
|
# DEBUG BEGIN_STMT
|
|
slave->repeatedStarts = 0;
|
|
# DEBUG BEGIN_STMT
|
|
_8 = userConfigPtr->slaveListening;
|
|
slave->slaveListening = _8;
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Init (baseAddr);
|
|
# DEBUG BEGIN_STMT
|
|
_9 = userConfigPtr->slaveAddress;
|
|
_10 = userConfigPtr->is10bitAddr;
|
|
Lpi2c_Ip_SlaveConigureAddress (baseAddr, _9, _10);
|
|
# DEBUG BEGIN_STMT
|
|
_11 = userConfigPtr->operatingMode;
|
|
Lpi2c_Ip_SlaveSetOperatingMode (instance, _11);
|
|
# DEBUG BEGIN_STMT
|
|
_12 = userConfigPtr->u32GlitchFilterSDA;
|
|
_13 = userConfigPtr->u32GlitchFilterSCL;
|
|
Lpi2c_Ip_SlaveConfigureGlitchFilter (baseAddr, _12, _13);
|
|
# DEBUG BEGIN_STMT
|
|
_14 = slave->slaveListening;
|
|
if (_14 != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_SlaveActivateEvents (instance);
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
D.5466 = 0;
|
|
return D.5466;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_SlaveConfigureGlitchFilter (struct LPI2C_Type * baseAddr, uint32 u32GlitchFilterSDA, uint32 u32GlitchFilterSCL)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_SlaveGlitchFilterSDA (baseAddr, u32GlitchFilterSDA);
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_SlaveGlitchFilterSCL (baseAddr, u32GlitchFilterSCL);
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_SlaveConigureAddress (struct LPI2C_Type * baseAddr, uint16 slaveAddr, boolean is10bitAddr)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_SlaveAddr0 (baseAddr, slaveAddr);
|
|
# DEBUG BEGIN_STMT
|
|
if (is10bitAddr != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_SlaveAddrConfig (baseAddr, 1);
|
|
goto <bb 5>; [INV]
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_SlaveAddrConfig (baseAddr, 0);
|
|
|
|
<bb 5> :
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_SlaveActivateEvents (uint32 instance)
|
|
{
|
|
const struct Lpi2c_Ip_SlaveStateType * slave;
|
|
struct LPI2C_Type * baseAddr;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr = g_lpi2cBase[instance];
|
|
# DEBUG BEGIN_STMT
|
|
slave = g_lpi2cSlaveStatePtr[instance];
|
|
# DEBUG BEGIN_STMT
|
|
_1 = slave->transferType;
|
|
if (_1 == 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_SlaveInt (baseAddr, 3844, 1);
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
_2 = slave->transferType;
|
|
if (_2 == 1)
|
|
goto <bb 5>; [INV]
|
|
else
|
|
goto <bb 6>; [INV]
|
|
|
|
<bb 5> :
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_SlaveInt (baseAddr, 3846, 1);
|
|
|
|
<bb 6> :
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_SlaveEnable (baseAddr, 1);
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterIRQHandler (uint32 instance)
|
|
{
|
|
struct Lpi2c_Ip_MasterStateType * master;
|
|
struct LPI2C_Type * baseAddr;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr = g_lpi2cBase[instance];
|
|
# DEBUG BEGIN_STMT
|
|
master = g_lpi2cMasterStatePtr[instance];
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterCheckDataTxRxEvent (baseAddr, master);
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterCheckErrorEvents (baseAddr, master);
|
|
# DEBUG BEGIN_STMT
|
|
_1 = LPI2C_Get_MasterPinLowTimeoutEvent (baseAddr);
|
|
if (_1 != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 6>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
_2 = master->masterCallback;
|
|
if (_2 != 0B)
|
|
goto <bb 4>; [INV]
|
|
else
|
|
goto <bb 5>; [INV]
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
_3 = master->masterCallback;
|
|
_4 = master->callbackParam;
|
|
_3 (12, _4);
|
|
|
|
<bb 5> :
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Clear_MasterPinLowTimeoutEvent (baseAddr);
|
|
|
|
<bb 6> :
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterCheckDataTxRxEvent (struct LPI2C_Type * baseAddr, struct Lpi2c_Ip_MasterStateType * master)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
_1 = LPI2C_Get_MasterTransmitDataRequestEvent (baseAddr);
|
|
if (_1 != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterHandleTransmitDataRequest (baseAddr, master);
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
_2 = LPI2C_Get_MasterReceiveDataReadyEvent (baseAddr);
|
|
if (_2 != 0)
|
|
goto <bb 5>; [INV]
|
|
else
|
|
goto <bb 6>; [INV]
|
|
|
|
<bb 5> :
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterHandleReceiveDataReadyEvent (baseAddr, master);
|
|
|
|
<bb 6> :
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterGetTransferStatus (uint32 instance, uint32 * bytesRemaining)
|
|
{
|
|
const struct Lpi2c_Ip_MasterStateType * master;
|
|
Lpi2c_Ip_StatusType D.5431;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
master = g_lpi2cMasterStatePtr[instance];
|
|
# DEBUG BEGIN_STMT
|
|
if (bytesRemaining != 0B)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 5>; [INV]
|
|
|
|
<bb 3> :
|
|
_1 = master->transferType;
|
|
if (_1 == 1)
|
|
goto <bb 4>; [INV]
|
|
else
|
|
goto <bb 5>; [INV]
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
_2 = master->bufferSize;
|
|
*bytesRemaining = _2;
|
|
|
|
<bb 5> :
|
|
# DEBUG BEGIN_STMT
|
|
D.5431 = master->status;
|
|
return D.5431;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterReceiveDataBlocking (uint32 instance, uint8 * rxBuff, uint32 rxSize, boolean sendStop, uint32 timeout)
|
|
{
|
|
Lpi2c_Ip_StatusType retStatus;
|
|
uint32 TimeoutTicks;
|
|
uint32 ElapsedTicks;
|
|
uint32 CurrentTicks;
|
|
struct Lpi2c_Ip_MasterStateType * master;
|
|
Lpi2c_Ip_StatusType D.5405;
|
|
long unsigned int D.5401;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
CurrentTicks = 0;
|
|
# DEBUG BEGIN_STMT
|
|
ElapsedTicks = 0;
|
|
# DEBUG BEGIN_STMT
|
|
TimeoutTicks = OsIf_MicrosToTicks (timeout, 1);
|
|
# DEBUG BEGIN_STMT
|
|
retStatus = 2;
|
|
# DEBUG BEGIN_STMT
|
|
master = g_lpi2cMasterStatePtr[instance];
|
|
# DEBUG BEGIN_STMT
|
|
_1 = master->i2cIdle;
|
|
if (_1 != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 9>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
master->bufferSize = rxSize;
|
|
# DEBUG BEGIN_STMT
|
|
master->dataBuffer = rxBuff;
|
|
# DEBUG BEGIN_STMT
|
|
master->direction = 1;
|
|
# DEBUG BEGIN_STMT
|
|
master->sendStop = sendStop;
|
|
# DEBUG BEGIN_STMT
|
|
master->i2cIdle = 0;
|
|
# DEBUG BEGIN_STMT
|
|
master->status = 2;
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterInterruptReceiveInit (instance, rxSize);
|
|
# DEBUG BEGIN_STMT
|
|
_2 = OsIf_GetCounter (1);
|
|
CurrentTicks = _2;
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterReceive (instance);
|
|
# DEBUG BEGIN_STMT
|
|
D.5401 = OsIf_GetElapsed (&CurrentTicks, 1);
|
|
ElapsedTicks = D.5401 + ElapsedTicks;
|
|
# DEBUG BEGIN_STMT
|
|
_3 = Lpi2c_Ip_MasterGetTransferStatus (instance, 0B);
|
|
if (_3 == 2)
|
|
goto <bb 5>; [INV]
|
|
else
|
|
goto <bb 6>; [INV]
|
|
|
|
<bb 5> :
|
|
if (ElapsedTicks < TimeoutTicks)
|
|
goto <bb 4>; [INV]
|
|
else
|
|
goto <bb 6>; [INV]
|
|
|
|
<bb 6> :
|
|
# DEBUG BEGIN_STMT
|
|
if (ElapsedTicks >= TimeoutTicks)
|
|
goto <bb 7>; [INV]
|
|
else
|
|
goto <bb 8>; [INV]
|
|
|
|
<bb 7> :
|
|
# DEBUG BEGIN_STMT
|
|
master->status = 9;
|
|
|
|
<bb 8> :
|
|
# DEBUG BEGIN_STMT
|
|
retStatus = master->status;
|
|
|
|
<bb 9> :
|
|
# DEBUG BEGIN_STMT
|
|
D.5405 = retStatus;
|
|
CurrentTicks = {CLOBBER};
|
|
return D.5405;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterReceiveData (uint32 instance, uint8 * rxBuff, uint32 rxSize, boolean sendStop)
|
|
{
|
|
Lpi2c_Ip_StatusType retStatus;
|
|
struct Lpi2c_Ip_MasterStateType * master;
|
|
struct LPI2C_Type * baseAddr;
|
|
Lpi2c_Ip_StatusType D.5393;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
retStatus = 2;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr = g_lpi2cBase[instance];
|
|
# DEBUG BEGIN_STMT
|
|
master = g_lpi2cMasterStatePtr[instance];
|
|
# DEBUG BEGIN_STMT
|
|
_1 = master->i2cIdle;
|
|
_2 = ~_1;
|
|
if (_2 != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
retStatus = 2;
|
|
goto <bb 7>; [INV]
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
retStatus = 0;
|
|
# DEBUG BEGIN_STMT
|
|
master->bufferSize = rxSize;
|
|
# DEBUG BEGIN_STMT
|
|
master->i2cIdle = 0;
|
|
# DEBUG BEGIN_STMT
|
|
master->sendStop = sendStop;
|
|
# DEBUG BEGIN_STMT
|
|
master->dataBuffer = rxBuff;
|
|
# DEBUG BEGIN_STMT
|
|
master->direction = 1;
|
|
# DEBUG BEGIN_STMT
|
|
master->status = 2;
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterInterruptReceiveInit (instance, rxSize);
|
|
# DEBUG BEGIN_STMT
|
|
_3 = Lpi2c_Ip_MasterCmdQueueEmpty (master);
|
|
_4 = ~_3;
|
|
if (_4 != 0)
|
|
goto <bb 5>; [INV]
|
|
else
|
|
goto <bb 6>; [INV]
|
|
|
|
<bb 5> :
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_MasterInt (baseAddr, 7171, 1);
|
|
goto <bb 7>; [INV]
|
|
|
|
<bb 6> :
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_MasterInt (baseAddr, 7170, 1);
|
|
|
|
<bb 7> :
|
|
# DEBUG BEGIN_STMT
|
|
D.5393 = retStatus;
|
|
return D.5393;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterInterruptReceiveInit (uint32 instance, uint32 rxSize)
|
|
{
|
|
uint16 rxBytes;
|
|
struct Lpi2c_Ip_MasterStateType * master;
|
|
struct LPI2C_Type * baseAddr;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr = g_lpi2cBase[instance];
|
|
# DEBUG BEGIN_STMT
|
|
master = g_lpi2cMasterStatePtr[instance];
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterSendAddress (baseAddr, master, 1);
|
|
# DEBUG BEGIN_STMT
|
|
_1 = (unsigned char) rxSize;
|
|
_2 = _1 + 255;
|
|
Lpi2c_Ip_MasterQueueCmd (baseAddr, master, 1, _2);
|
|
# DEBUG BEGIN_STMT
|
|
rxBytes = LPI2C_Get_MasterRxFIFOSize (baseAddr);
|
|
# DEBUG BEGIN_STMT
|
|
_3 = (long unsigned int) rxBytes;
|
|
if (rxSize < _3)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
_4 = (unsigned char) rxSize;
|
|
rxBytes = (uint16) _4;
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
_5 = rxBytes + 65535;
|
|
LPI2C_Set_MasterRxFIFOWatermark (baseAddr, _5);
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterSendDataBlocking (uint32 instance, uint8 * txBuff, uint32 txSize, boolean sendStop, uint32 timeout)
|
|
{
|
|
struct Lpi2c_Ip_MasterStateType * master;
|
|
struct LPI2C_Type * baseAddr;
|
|
Lpi2c_Ip_StatusType retStatus;
|
|
uint32 TimeoutTicks;
|
|
uint32 ElapsedTicks;
|
|
uint32 CurrentTicks;
|
|
Lpi2c_Ip_StatusType D.5340;
|
|
long unsigned int D.5336;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
CurrentTicks = 0;
|
|
# DEBUG BEGIN_STMT
|
|
ElapsedTicks = 0;
|
|
# DEBUG BEGIN_STMT
|
|
TimeoutTicks = OsIf_MicrosToTicks (timeout, 1);
|
|
# DEBUG BEGIN_STMT
|
|
retStatus = 2;
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr = g_lpi2cBase[instance];
|
|
# DEBUG BEGIN_STMT
|
|
master = g_lpi2cMasterStatePtr[instance];
|
|
# DEBUG BEGIN_STMT
|
|
_1 = master->i2cIdle;
|
|
if (_1 != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 9>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
master->bufferSize = txSize;
|
|
# DEBUG BEGIN_STMT
|
|
master->dataBuffer = txBuff;
|
|
# DEBUG BEGIN_STMT
|
|
master->direction = 0;
|
|
# DEBUG BEGIN_STMT
|
|
master->sendStop = sendStop;
|
|
# DEBUG BEGIN_STMT
|
|
master->i2cIdle = 0;
|
|
# DEBUG BEGIN_STMT
|
|
master->status = 2;
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterInitSendTransfer (baseAddr, master);
|
|
# DEBUG BEGIN_STMT
|
|
_2 = OsIf_GetCounter (1);
|
|
CurrentTicks = _2;
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterSend (instance);
|
|
# DEBUG BEGIN_STMT
|
|
D.5336 = OsIf_GetElapsed (&CurrentTicks, 1);
|
|
ElapsedTicks = D.5336 + ElapsedTicks;
|
|
# DEBUG BEGIN_STMT
|
|
_3 = Lpi2c_Ip_MasterGetTransferStatus (instance, 0B);
|
|
if (_3 == 2)
|
|
goto <bb 5>; [INV]
|
|
else
|
|
goto <bb 6>; [INV]
|
|
|
|
<bb 5> :
|
|
if (ElapsedTicks < TimeoutTicks)
|
|
goto <bb 4>; [INV]
|
|
else
|
|
goto <bb 6>; [INV]
|
|
|
|
<bb 6> :
|
|
# DEBUG BEGIN_STMT
|
|
if (ElapsedTicks >= TimeoutTicks)
|
|
goto <bb 7>; [INV]
|
|
else
|
|
goto <bb 8>; [INV]
|
|
|
|
<bb 7> :
|
|
# DEBUG BEGIN_STMT
|
|
master->status = 9;
|
|
|
|
<bb 8> :
|
|
# DEBUG BEGIN_STMT
|
|
retStatus = master->status;
|
|
|
|
<bb 9> :
|
|
# DEBUG BEGIN_STMT
|
|
D.5340 = retStatus;
|
|
CurrentTicks = {CLOBBER};
|
|
return D.5340;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterInitSendTransfer (struct LPI2C_Type * baseAddr, struct Lpi2c_Ip_MasterStateType * master)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterSendAddress (baseAddr, master, 0);
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterQueueData (baseAddr, master);
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_MasterTxFIFOWatermark (baseAddr, 0);
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterSendData (uint32 instance, uint8 * txBuff, uint32 txSize, boolean sendStop)
|
|
{
|
|
Lpi2c_Ip_StatusType retStatus;
|
|
struct Lpi2c_Ip_MasterStateType * master;
|
|
struct LPI2C_Type * baseAddr;
|
|
Lpi2c_Ip_StatusType D.5305;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
retStatus = 2;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr = g_lpi2cBase[instance];
|
|
# DEBUG BEGIN_STMT
|
|
master = g_lpi2cMasterStatePtr[instance];
|
|
# DEBUG BEGIN_STMT
|
|
_1 = master->i2cIdle;
|
|
if (_1 != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
master->bufferSize = txSize;
|
|
# DEBUG BEGIN_STMT
|
|
master->dataBuffer = txBuff;
|
|
# DEBUG BEGIN_STMT
|
|
master->direction = 0;
|
|
# DEBUG BEGIN_STMT
|
|
master->sendStop = sendStop;
|
|
# DEBUG BEGIN_STMT
|
|
master->i2cIdle = 0;
|
|
# DEBUG BEGIN_STMT
|
|
master->status = 2;
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterSendAddress (baseAddr, master, 0);
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterQueueData (baseAddr, master);
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_MasterTxFIFOWatermark (baseAddr, 0);
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_MasterInt (baseAddr, 15361, 1);
|
|
# DEBUG BEGIN_STMT
|
|
retStatus = 0;
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
D.5305 = retStatus;
|
|
return D.5305;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterSetSlaveAddr (uint32 instance, const uint16 address, const boolean is10bitAddr)
|
|
{
|
|
struct Lpi2c_Ip_MasterStateType * master;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
master = g_lpi2cMasterStatePtr[instance];
|
|
# DEBUG BEGIN_STMT
|
|
master->slaveAddress = address;
|
|
# DEBUG BEGIN_STMT
|
|
master->is10bitAddr = is10bitAddr;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterGetBaudRate (uint32 instance, uint32 inputClock, uint32 * baudRate)
|
|
{
|
|
uint32 clkHi;
|
|
uint32 clkLo;
|
|
uint32 prescaler;
|
|
const struct Lpi2c_Ip_MasterStateType * master;
|
|
const struct LPI2C_Type * baseAddr;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr = g_lpi2cBase[instance];
|
|
# DEBUG BEGIN_STMT
|
|
master = g_lpi2cMasterStatePtr[instance];
|
|
# DEBUG BEGIN_STMT
|
|
_1 = LPI2C_Get_MasterPrescaler (baseAddr);
|
|
prescaler = (uint32) _1;
|
|
# DEBUG BEGIN_STMT
|
|
_2 = LPI2C_Get_MasterClockHighPeriod (baseAddr);
|
|
clkHi = (uint32) _2;
|
|
# DEBUG BEGIN_STMT
|
|
_3 = LPI2C_Get_MasterClockLowPeriod (baseAddr);
|
|
clkLo = (uint32) _3;
|
|
# DEBUG BEGIN_STMT
|
|
_4 = clkLo + clkHi;
|
|
_5 = _4 + 2;
|
|
_6 = _5 << prescaler;
|
|
_7 = inputClock / _6;
|
|
*baudRate = _7;
|
|
# DEBUG BEGIN_STMT
|
|
_8 = master->operatingMode;
|
|
if (_8 == 3)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
_9 = LPI2C_Get_MasterClockHighPeriodHS (baseAddr);
|
|
clkHi = (uint32) _9;
|
|
# DEBUG BEGIN_STMT
|
|
_10 = LPI2C_Get_MasterClockLowPeriodHS (baseAddr);
|
|
clkLo = (uint32) _10;
|
|
# DEBUG BEGIN_STMT
|
|
_11 = clkLo + clkHi;
|
|
_12 = _11 + 2;
|
|
_13 = _12 << prescaler;
|
|
_14 = inputClock / _13;
|
|
*baudRate = _14;
|
|
|
|
<bb 4> :
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterDeinit (uint32 instance)
|
|
{
|
|
const struct Lpi2c_Ip_MasterStateType * master;
|
|
struct LPI2C_Type * baseAddr;
|
|
Lpi2c_Ip_StatusType D.5289;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr = g_lpi2cBase[instance];
|
|
# DEBUG BEGIN_STMT
|
|
master = g_lpi2cMasterStatePtr[instance];
|
|
# DEBUG BEGIN_STMT
|
|
g_lpi2cMasterStatePtr[instance] = 0B;
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_MasterEnable (baseAddr, 0);
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
D.5289 = 0;
|
|
return D.5289;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterInit (uint32 instance, const struct Lpi2c_Ip_MasterConfigType * userConfigPtr)
|
|
{
|
|
struct Lpi2c_Ip_MasterStateType * master;
|
|
struct LPI2C_Type * baseAddr;
|
|
Lpi2c_Ip_StatusType D.5279;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr = g_lpi2cBase[instance];
|
|
# DEBUG BEGIN_STMT
|
|
_1 = userConfigPtr->masterState;
|
|
g_lpi2cMasterStatePtr[instance] = _1;
|
|
# DEBUG BEGIN_STMT
|
|
master = g_lpi2cMasterStatePtr[instance];
|
|
# DEBUG BEGIN_STMT
|
|
master->direction = 0;
|
|
# DEBUG BEGIN_STMT
|
|
master->dataBuffer = 0B;
|
|
# DEBUG BEGIN_STMT
|
|
master->bufferSize = 0;
|
|
# DEBUG BEGIN_STMT
|
|
master->status = 0;
|
|
# DEBUG BEGIN_STMT
|
|
master->i2cIdle = 1;
|
|
# DEBUG BEGIN_STMT
|
|
_2 = userConfigPtr->slaveAddress;
|
|
master->slaveAddress = _2;
|
|
# DEBUG BEGIN_STMT
|
|
_3 = userConfigPtr->is10bitAddr;
|
|
master->is10bitAddr = _3;
|
|
# DEBUG BEGIN_STMT
|
|
_4 = userConfigPtr->transferType;
|
|
master->transferType = _4;
|
|
# DEBUG BEGIN_STMT
|
|
_5 = userConfigPtr->dmaTxChannel;
|
|
master->dmaTxChannel = _5;
|
|
# DEBUG BEGIN_STMT
|
|
_6 = userConfigPtr->dmaRxChannel;
|
|
master->dmaRxChannel = _6;
|
|
# DEBUG BEGIN_STMT
|
|
_7 = userConfigPtr->masterCallback;
|
|
master->masterCallback = _7;
|
|
# DEBUG BEGIN_STMT
|
|
_8 = userConfigPtr->callbackParam;
|
|
master->callbackParam = _8;
|
|
# DEBUG BEGIN_STMT
|
|
_9 = userConfigPtr->masterCode;
|
|
master->masterCode = _9;
|
|
# DEBUG BEGIN_STMT
|
|
master->highSpeedInProgress = 0;
|
|
# DEBUG BEGIN_STMT
|
|
_10 = userConfigPtr->baudrateParams;
|
|
master->baudrateParams = _10;
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterInitModule (baseAddr, master);
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterConfigFeatures (baseAddr, userConfigPtr);
|
|
# DEBUG BEGIN_STMT
|
|
_11 = userConfigPtr->operatingMode;
|
|
_12 = master->baudrateParams;
|
|
Lpi2c_Ip_MasterSetBaudRateInit (instance, _11, _12);
|
|
# DEBUG BEGIN_STMT
|
|
_13 = userConfigPtr->slaveAddress;
|
|
_14 = userConfigPtr->is10bitAddr;
|
|
Lpi2c_Ip_MasterSetSlaveAddr (instance, _13, _14);
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_MasterEnable (baseAddr, 1);
|
|
# DEBUG BEGIN_STMT
|
|
D.5279 = 0;
|
|
return D.5279;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterConfigFeatures (struct LPI2C_Type * baseAddr, const struct Lpi2c_Ip_MasterConfigType * userConfigPtr)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
_1 = userConfigPtr->u32GlitchFilterSDA;
|
|
LPI2C_Set_MasterGlitchFilterSDA (baseAddr, _1);
|
|
# DEBUG BEGIN_STMT
|
|
_2 = userConfigPtr->u32GlitchFilterSCL;
|
|
LPI2C_Set_MasterGlitchFilterSCL (baseAddr, _2);
|
|
# DEBUG BEGIN_STMT
|
|
_3 = userConfigPtr->u32BusIdleTimeout;
|
|
LPI2C_Set_MasterBusIdleTimeout (baseAddr, _3);
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_MasterPinLowTimeoutConfiguration (baseAddr, 1);
|
|
# DEBUG BEGIN_STMT
|
|
_4 = userConfigPtr->u32PinLowTimeout;
|
|
LPI2C_Set_MasterPinLowTimeout (baseAddr, _4);
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterInitModule (struct LPI2C_Type * baseAddr, struct Lpi2c_Ip_MasterStateType * master)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterResetQueue (master);
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Init (baseAddr);
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterSetBaudRateInit (uint32 instance, const Lpi2c_Ip_ModeType operatingMode, const struct Lpi2c_Ip_BaudRateType * baudRate)
|
|
{
|
|
Lpi2c_Ip_StatusType retStatus;
|
|
const struct Lpi2c_Ip_MasterStateType * master;
|
|
struct LPI2C_Type * baseAddr;
|
|
Lpi2c_Ip_StatusType D.5287;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
retStatus = 2;
|
|
# DEBUG BEGIN_STMT
|
|
master = g_lpi2cMasterStatePtr[instance];
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr = g_lpi2cBase[instance];
|
|
# DEBUG BEGIN_STMT
|
|
_1 = master->i2cIdle;
|
|
if (_1 != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_MasterEnable (baseAddr, 0);
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_BaudRateConfig (baseAddr, baudRate);
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_HSBaudRateConfig (baseAddr, baudRate);
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterSetOperatingMode (instance, operatingMode);
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_MasterEnable (baseAddr, 1);
|
|
# DEBUG BEGIN_STMT
|
|
retStatus = 0;
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
D.5287 = retStatus;
|
|
return D.5287;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterSetBaudRate (uint32 instance, Lpi2c_Ip_ModeType operatingMode, uint32 baudrate, uint32 inputClock)
|
|
{
|
|
Lpi2c_Ip_StatusType retStatus;
|
|
uint32 dataVd;
|
|
uint32 setHold;
|
|
uint32 clkHi;
|
|
uint32 clkLo;
|
|
uint32 clkTotal;
|
|
uint32 prescaler;
|
|
uint32 minPrescaler;
|
|
struct Lpi2c_Ip_BaudRateType baudRateParams;
|
|
const struct Lpi2c_Ip_MasterStateType * master;
|
|
struct LPI2C_Type * baseAddr;
|
|
Lpi2c_Ip_StatusType D.5272;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
minPrescaler = 0;
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
retStatus = 2;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr = g_lpi2cBase[instance];
|
|
# DEBUG BEGIN_STMT
|
|
master = g_lpi2cMasterStatePtr[instance];
|
|
# DEBUG BEGIN_STMT
|
|
_1 = master->i2cIdle;
|
|
if (_1 != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 24>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_MasterEnable (baseAddr, 0);
|
|
# DEBUG BEGIN_STMT
|
|
if (baudrate != 0)
|
|
goto <bb 4>; [INV]
|
|
else
|
|
goto <bb 9>; [INV]
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
_2 = inputClock + 4294967295;
|
|
_3 = baudrate * 128;
|
|
_4 = _2 / _3;
|
|
minPrescaler = _4 + 1;
|
|
# DEBUG BEGIN_STMT
|
|
prescaler = 0;
|
|
goto <bb 7>; [INV]
|
|
|
|
<bb 5> :
|
|
# DEBUG BEGIN_STMT
|
|
_5 = 1 << prescaler;
|
|
if (minPrescaler <= _5)
|
|
goto <bb 8>; [INV]
|
|
else
|
|
goto <bb 6>; [INV]
|
|
|
|
<bb 6> :
|
|
# DEBUG BEGIN_STMT
|
|
prescaler = prescaler + 1;
|
|
|
|
<bb 7> :
|
|
# DEBUG BEGIN_STMT
|
|
if (prescaler <= 6)
|
|
goto <bb 5>; [INV]
|
|
else
|
|
goto <bb 8>; [INV]
|
|
|
|
<bb 8> :
|
|
# DEBUG BEGIN_STMT
|
|
_6 = baudrate << prescaler;
|
|
_7 = _6 >> 1;
|
|
_8 = inputClock + _7;
|
|
_9 = baudrate << prescaler;
|
|
clkTotal = _8 / _9;
|
|
goto <bb 10>; [INV]
|
|
|
|
<bb 9> :
|
|
# DEBUG BEGIN_STMT
|
|
prescaler = 7;
|
|
# DEBUG BEGIN_STMT
|
|
clkTotal = 128;
|
|
|
|
<bb 10> :
|
|
# DEBUG BEGIN_STMT
|
|
if (clkTotal > 128)
|
|
goto <bb 11>; [INV]
|
|
else
|
|
goto <bb 12>; [INV]
|
|
|
|
<bb 11> :
|
|
# DEBUG BEGIN_STMT
|
|
clkTotal = 128;
|
|
|
|
<bb 12> :
|
|
# DEBUG BEGIN_STMT
|
|
if (clkTotal <= 1)
|
|
goto <bb 13>; [INV]
|
|
else
|
|
goto <bb 14>; [INV]
|
|
|
|
<bb 13> :
|
|
# DEBUG BEGIN_STMT
|
|
clkHi = 0;
|
|
# DEBUG BEGIN_STMT
|
|
clkLo = 0;
|
|
goto <bb 15>; [INV]
|
|
|
|
<bb 14> :
|
|
# DEBUG BEGIN_STMT
|
|
_10 = clkTotal + 4294967294;
|
|
clkHi = _10 / 2;
|
|
# DEBUG BEGIN_STMT
|
|
_11 = clkTotal - clkHi;
|
|
clkLo = _11 + 4294967294;
|
|
|
|
<bb 15> :
|
|
# DEBUG BEGIN_STMT
|
|
if (clkHi == 0)
|
|
goto <bb 16>; [INV]
|
|
else
|
|
goto <bb 17>; [INV]
|
|
|
|
<bb 16> :
|
|
# DEBUG BEGIN_STMT
|
|
clkHi = 1;
|
|
|
|
<bb 17> :
|
|
# DEBUG BEGIN_STMT
|
|
if (clkLo <= 2)
|
|
goto <bb 18>; [INV]
|
|
else
|
|
goto <bb 19>; [INV]
|
|
|
|
<bb 18> :
|
|
# DEBUG BEGIN_STMT
|
|
clkLo = 3;
|
|
|
|
<bb 19> :
|
|
# DEBUG BEGIN_STMT
|
|
setHold = clkHi;
|
|
# DEBUG BEGIN_STMT
|
|
dataVd = clkHi >> 1;
|
|
# DEBUG BEGIN_STMT
|
|
if (setHold <= 1)
|
|
goto <bb 20>; [INV]
|
|
else
|
|
goto <bb 21>; [INV]
|
|
|
|
<bb 20> :
|
|
# DEBUG BEGIN_STMT
|
|
setHold = 2;
|
|
|
|
<bb 21> :
|
|
# DEBUG BEGIN_STMT
|
|
if (dataVd == 0)
|
|
goto <bb 22>; [INV]
|
|
else
|
|
goto <bb 23>; [INV]
|
|
|
|
<bb 22> :
|
|
# DEBUG BEGIN_STMT
|
|
dataVd = 1;
|
|
|
|
<bb 23> :
|
|
# DEBUG BEGIN_STMT
|
|
_12 = (<unnamed type>) prescaler;
|
|
baudRateParams.prescaler = _12;
|
|
# DEBUG BEGIN_STMT
|
|
baudRateParams.dataValid = dataVd;
|
|
# DEBUG BEGIN_STMT
|
|
baudRateParams.setHold = setHold;
|
|
# DEBUG BEGIN_STMT
|
|
baudRateParams.clkHI = clkHi;
|
|
# DEBUG BEGIN_STMT
|
|
baudRateParams.clkLO = clkLo;
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_BaudRateConfig (baseAddr, &baudRateParams);
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterSetOperatingMode (instance, operatingMode);
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_MasterEnable (baseAddr, 1);
|
|
# DEBUG BEGIN_STMT
|
|
retStatus = 0;
|
|
|
|
<bb 24> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
D.5272 = retStatus;
|
|
baudRateParams = {CLOBBER};
|
|
return D.5272;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_HSBaudRateConfig (struct LPI2C_Type * baseAddr, const struct Lpi2c_Ip_BaudRateType * baudRate)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
_1 = baudRate->setHoldHS;
|
|
_2 = (unsigned char) _1;
|
|
LPI2C_Set_MasterDataValidDelayHS (baseAddr, _2);
|
|
# DEBUG BEGIN_STMT
|
|
_3 = baudRate->dataValidHS;
|
|
_4 = (unsigned char) _3;
|
|
LPI2C_Set_MasterSetupHoldDelayHS (baseAddr, _4);
|
|
# DEBUG BEGIN_STMT
|
|
_5 = baudRate->clkHIHS;
|
|
_6 = (unsigned char) _5;
|
|
LPI2C_Set_MasterClockHighPeriodHS (baseAddr, _6);
|
|
# DEBUG BEGIN_STMT
|
|
_7 = baudRate->clkLOHS;
|
|
_8 = (unsigned char) _7;
|
|
LPI2C_Set_MasterClockLowPeriodHS (baseAddr, _8);
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_BaudRateConfig (struct LPI2C_Type * baseAddr, const struct Lpi2c_Ip_BaudRateType * baudRate)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
_1 = baudRate->prescaler;
|
|
LPI2C_Set_MasterPrescaler (baseAddr, _1);
|
|
# DEBUG BEGIN_STMT
|
|
_2 = baudRate->setHold;
|
|
_3 = (unsigned char) _2;
|
|
LPI2C_Set_MasterSetupHoldDelay (baseAddr, _3);
|
|
# DEBUG BEGIN_STMT
|
|
_4 = baudRate->dataValid;
|
|
_5 = (unsigned char) _4;
|
|
LPI2C_Set_MasterDataValidDelay (baseAddr, _5);
|
|
# DEBUG BEGIN_STMT
|
|
_6 = baudRate->clkHI;
|
|
_7 = (unsigned char) _6;
|
|
LPI2C_Set_MasterClockHighPeriod (baseAddr, _7);
|
|
# DEBUG BEGIN_STMT
|
|
_8 = baudRate->clkLO;
|
|
_9 = (unsigned char) _8;
|
|
LPI2C_Set_MasterClockLowPeriod (baseAddr, _9);
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterReceive (uint32 instance)
|
|
{
|
|
struct Lpi2c_Ip_MasterStateType * master;
|
|
struct LPI2C_Type * baseAddr;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr = g_lpi2cBase[instance];
|
|
# DEBUG BEGIN_STMT
|
|
master = g_lpi2cMasterStatePtr[instance];
|
|
# DEBUG BEGIN_STMT
|
|
_1 = LPI2C_Get_MasterReceiveDataReadyEvent (baseAddr);
|
|
if (_1 != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 8>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterGetReceivedData (baseAddr, master);
|
|
# DEBUG BEGIN_STMT
|
|
_2 = master->bufferSize;
|
|
if (_2 == 0)
|
|
goto <bb 4>; [INV]
|
|
else
|
|
goto <bb 6>; [INV]
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
_3 = master->sendStop;
|
|
Lpi2c_Ip_MasterEndTransfer (baseAddr, master, _3, 0);
|
|
# DEBUG BEGIN_STMT
|
|
master->status = 0;
|
|
# DEBUG BEGIN_STMT
|
|
_4 = master->masterCallback;
|
|
if (_4 != 0B)
|
|
goto <bb 5>; [INV]
|
|
else
|
|
goto <bb 8>; [INV]
|
|
|
|
<bb 5> :
|
|
# DEBUG BEGIN_STMT
|
|
_5 = master->masterCallback;
|
|
_6 = master->callbackParam;
|
|
_5 (11, _6);
|
|
goto <bb 8>; [INV]
|
|
|
|
<bb 6> :
|
|
# DEBUG BEGIN_STMT
|
|
_7 = master->bufferSize;
|
|
_8 = LPI2C_Get_MasterRxFIFOWatermark (baseAddr);
|
|
_9 = (long unsigned int) _8;
|
|
if (_7 <= _9)
|
|
goto <bb 7>; [INV]
|
|
else
|
|
goto <bb 8>; [INV]
|
|
|
|
<bb 7> :
|
|
# DEBUG BEGIN_STMT
|
|
_10 = master->bufferSize;
|
|
_11 = (short unsigned int) _10;
|
|
_12 = _11 + 65535;
|
|
LPI2C_Set_MasterRxFIFOWatermark (baseAddr, _12);
|
|
|
|
<bb 8> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterCheckErrorEvents (baseAddr, master);
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterGetReceivedData (const struct LPI2C_Type * baseAddr, struct Lpi2c_Ip_MasterStateType * master)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
_1 = master->dataBuffer;
|
|
_2 = LPI2C_Get_MasterRxData (baseAddr);
|
|
*_1 = _2;
|
|
# DEBUG BEGIN_STMT
|
|
_3 = master->dataBuffer;
|
|
_4 = _3 + 1;
|
|
master->dataBuffer = _4;
|
|
# DEBUG BEGIN_STMT
|
|
_5 = master->bufferSize;
|
|
_6 = _5 + 4294967295;
|
|
master->bufferSize = _6;
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
_7 = LPI2C_Get_MasterRxFIFOCount (baseAddr);
|
|
if (_7 != 0)
|
|
goto <bb 5>; [INV]
|
|
else
|
|
goto <bb 6>; [INV]
|
|
|
|
<bb 5> :
|
|
_8 = master->bufferSize;
|
|
if (_8 != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 6>; [INV]
|
|
|
|
<bb 6> :
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterSend (uint32 instance)
|
|
{
|
|
boolean masterCmdQueueEmpty;
|
|
struct Lpi2c_Ip_MasterStateType * master;
|
|
struct LPI2C_Type * baseAddr;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
masterCmdQueueEmpty = 0;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr = g_lpi2cBase[instance];
|
|
# DEBUG BEGIN_STMT
|
|
master = g_lpi2cMasterStatePtr[instance];
|
|
# DEBUG BEGIN_STMT
|
|
_1 = LPI2C_Get_MasterTransmitDataRequestEvent (baseAddr);
|
|
if (_1 != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 6>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
_2 = Lpi2c_Ip_MasterCmdQueueEmpty (master);
|
|
_3 = ~_2;
|
|
if (_3 != 0)
|
|
goto <bb 4>; [INV]
|
|
else
|
|
goto <bb 5>; [INV]
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterSendQueuedCmd (baseAddr, master);
|
|
goto <bb 6>; [INV]
|
|
|
|
<bb 5> :
|
|
# DEBUG BEGIN_STMT
|
|
masterCmdQueueEmpty = 1;
|
|
|
|
<bb 6> :
|
|
# DEBUG BEGIN_STMT
|
|
if (masterCmdQueueEmpty != 0)
|
|
goto <bb 7>; [INV]
|
|
else
|
|
goto <bb 12>; [INV]
|
|
|
|
<bb 7> :
|
|
# DEBUG BEGIN_STMT
|
|
_4 = master->dataBuffer;
|
|
if (_4 != 0B)
|
|
goto <bb 8>; [INV]
|
|
else
|
|
goto <bb 12>; [INV]
|
|
|
|
<bb 8> :
|
|
# DEBUG BEGIN_STMT
|
|
_5 = master->bufferSize;
|
|
if (_5 == 0)
|
|
goto <bb 9>; [INV]
|
|
else
|
|
goto <bb 11>; [INV]
|
|
|
|
<bb 9> :
|
|
# DEBUG BEGIN_STMT
|
|
_6 = master->sendStop;
|
|
Lpi2c_Ip_MasterEndTransfer (baseAddr, master, _6, 0);
|
|
# DEBUG BEGIN_STMT
|
|
master->status = 0;
|
|
# DEBUG BEGIN_STMT
|
|
_7 = master->masterCallback;
|
|
if (_7 != 0B)
|
|
goto <bb 10>; [INV]
|
|
else
|
|
goto <bb 12>; [INV]
|
|
|
|
<bb 10> :
|
|
# DEBUG BEGIN_STMT
|
|
_8 = master->masterCallback;
|
|
_9 = master->callbackParam;
|
|
_8 (11, _9);
|
|
goto <bb 12>; [INV]
|
|
|
|
<bb 11> :
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterQueueData (baseAddr, master);
|
|
|
|
<bb 12> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterCheckErrorEvents (baseAddr, master);
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterCheckErrorEvents (struct LPI2C_Type * baseAddr, struct Lpi2c_Ip_MasterStateType * master)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
_1 = LPI2C_Get_MasterFIFOErrorEvent (baseAddr);
|
|
if (_1 != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Get_MasterFIFOErrorEventHandler (baseAddr, master);
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
_2 = LPI2C_Get_MasterArbitrationLostEvent (baseAddr);
|
|
if (_2 != 0)
|
|
goto <bb 5>; [INV]
|
|
else
|
|
goto <bb 6>; [INV]
|
|
|
|
<bb 5> :
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Get_MasterArbitrationLostEventHandler (baseAddr, master);
|
|
|
|
<bb 6> :
|
|
# DEBUG BEGIN_STMT
|
|
_3 = LPI2C_Get_MasterNACKDetectEvent (baseAddr);
|
|
if (_3 != 0)
|
|
goto <bb 7>; [INV]
|
|
else
|
|
goto <bb 8>; [INV]
|
|
|
|
<bb 7> :
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Get_MasterNACKDetectEventHandler (baseAddr, master);
|
|
|
|
<bb 8> :
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Get_MasterArbitrationLostEventHandler (struct LPI2C_Type * baseAddr, struct Lpi2c_Ip_MasterStateType * master)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Clear_MasterArbitrationLostEvent (baseAddr);
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterEndTransfer (baseAddr, master, 0, 1);
|
|
# DEBUG BEGIN_STMT
|
|
master->status = 6;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = master->masterCallback;
|
|
if (_1 != 0B)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
_2 = master->masterCallback;
|
|
_3 = master->callbackParam;
|
|
_2 (11, _3);
|
|
|
|
<bb 4> :
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Get_MasterNACKDetectEventHandler (struct LPI2C_Type * baseAddr, struct Lpi2c_Ip_MasterStateType * master)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
master->highSpeedInProgress = 0;
|
|
# DEBUG BEGIN_STMT
|
|
master->status = 3;
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterEndTransfer (baseAddr, master, 0, 1);
|
|
# DEBUG BEGIN_STMT
|
|
_1 = master->masterCallback;
|
|
if (_1 != 0B)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
_2 = master->masterCallback;
|
|
_3 = master->callbackParam;
|
|
_2 (11, _3);
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Clear_MasterNACKDetectEvent (baseAddr);
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Get_MasterFIFOErrorEventHandler (struct LPI2C_Type * baseAddr, struct Lpi2c_Ip_MasterStateType * master)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Clear_MasterFIFOErrorEvent (baseAddr);
|
|
# DEBUG BEGIN_STMT
|
|
_1 = master->operatingMode;
|
|
if (_1 == 3)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
master->highSpeedInProgress = 0;
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
master->status = 1;
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterEndTransfer (baseAddr, master, 0, 1);
|
|
# DEBUG BEGIN_STMT
|
|
_2 = master->masterCallback;
|
|
if (_2 != 0B)
|
|
goto <bb 5>; [INV]
|
|
else
|
|
goto <bb 6>; [INV]
|
|
|
|
<bb 5> :
|
|
# DEBUG BEGIN_STMT
|
|
_3 = master->masterCallback;
|
|
_4 = master->callbackParam;
|
|
_3 (11, _4);
|
|
|
|
<bb 6> :
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_SlaveHandleReceiveDataEvent (const struct LPI2C_Type * baseAddr, struct Lpi2c_Ip_SlaveStateType * slave)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
_1 = slave->bufferSize;
|
|
if (_1 == 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 5>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
_2 = slave->slaveCallback;
|
|
if (_2 != 0B)
|
|
goto <bb 4>; [INV]
|
|
else
|
|
goto <bb 5>; [INV]
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
_3 = slave->slaveCallback;
|
|
_4 = slave->callbackParam;
|
|
_3 (3, _4);
|
|
|
|
<bb 5> :
|
|
# DEBUG BEGIN_STMT
|
|
_5 = slave->bufferSize;
|
|
if (_5 == 0)
|
|
goto <bb 6>; [INV]
|
|
else
|
|
goto <bb 7>; [INV]
|
|
|
|
<bb 6> :
|
|
# DEBUG BEGIN_STMT
|
|
slave->status = 5;
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Get_SlaveData (baseAddr);
|
|
goto <bb 8>; [INV]
|
|
|
|
<bb 7> :
|
|
# DEBUG BEGIN_STMT
|
|
_6 = slave->dataBuffer;
|
|
_7 = LPI2C_Get_SlaveData (baseAddr);
|
|
*_6 = _7;
|
|
# DEBUG BEGIN_STMT
|
|
_8 = slave->dataBuffer;
|
|
_9 = _8 + 1;
|
|
slave->dataBuffer = _9;
|
|
# DEBUG BEGIN_STMT
|
|
_10 = slave->bufferSize;
|
|
_11 = _10 + 4294967295;
|
|
slave->bufferSize = _11;
|
|
|
|
<bb 8> :
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_SlaveHandleTransmitDataEvent (struct LPI2C_Type * baseAddr, struct Lpi2c_Ip_SlaveStateType * slave)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
_1 = slave->txUnderrunWarning;
|
|
if (_1 != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
slave->status = 4;
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
_2 = slave->bufferSize;
|
|
if (_2 == 0)
|
|
goto <bb 5>; [INV]
|
|
else
|
|
goto <bb 7>; [INV]
|
|
|
|
<bb 5> :
|
|
# DEBUG BEGIN_STMT
|
|
_3 = slave->slaveCallback;
|
|
if (_3 != 0B)
|
|
goto <bb 6>; [INV]
|
|
else
|
|
goto <bb 7>; [INV]
|
|
|
|
<bb 6> :
|
|
# DEBUG BEGIN_STMT
|
|
_4 = slave->slaveCallback;
|
|
_5 = slave->callbackParam;
|
|
_4 (4, _5);
|
|
|
|
<bb 7> :
|
|
# DEBUG BEGIN_STMT
|
|
_6 = slave->bufferSize;
|
|
if (_6 == 0)
|
|
goto <bb 8>; [INV]
|
|
else
|
|
goto <bb 9>; [INV]
|
|
|
|
<bb 8> :
|
|
# DEBUG BEGIN_STMT
|
|
slave->txUnderrunWarning = 1;
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Transmit_SlaveData (baseAddr, 255);
|
|
goto <bb 10>; [INV]
|
|
|
|
<bb 9> :
|
|
# DEBUG BEGIN_STMT
|
|
_7 = slave->dataBuffer;
|
|
_8 = *_7;
|
|
LPI2C_Transmit_SlaveData (baseAddr, _8);
|
|
# DEBUG BEGIN_STMT
|
|
_9 = slave->dataBuffer;
|
|
_10 = _9 + 1;
|
|
slave->dataBuffer = _10;
|
|
# DEBUG BEGIN_STMT
|
|
_11 = slave->bufferSize;
|
|
_12 = _11 + 4294967295;
|
|
slave->bufferSize = _12;
|
|
|
|
<bb 10> :
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_SlaveHandleAddressValidEvent (uint32 instance, const struct LPI2C_Type * baseAddr, struct Lpi2c_Ip_SlaveStateType * slave)
|
|
{
|
|
uint16 receivedAddr;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
receivedAddr = LPI2C_Get_SlaveReceivedAddr (baseAddr);
|
|
# DEBUG BEGIN_STMT
|
|
_1 = (unsigned int) receivedAddr;
|
|
_2 = _1 & 1;
|
|
if (_2 != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 8>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
slave->direction = 0;
|
|
# DEBUG BEGIN_STMT
|
|
_3 = slave->slaveCallback;
|
|
if (_3 != 0B)
|
|
goto <bb 4>; [INV]
|
|
else
|
|
goto <bb 5>; [INV]
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
_4 = slave->slaveCallback;
|
|
_5 = slave->callbackParam;
|
|
_4 (5, _5);
|
|
|
|
<bb 5> :
|
|
# DEBUG BEGIN_STMT
|
|
_6 = slave->transferType;
|
|
if (_6 == 1)
|
|
goto <bb 6>; [INV]
|
|
else
|
|
goto <bb 7>; [INV]
|
|
|
|
<bb 6> :
|
|
# DEBUG BEGIN_STMT
|
|
_7 = g_lpi2cBase[instance];
|
|
LPI2C_Set_SlaveInt (_7, 1, 1);
|
|
|
|
<bb 7> :
|
|
# DEBUG BEGIN_STMT
|
|
slave->txUnderrunWarning = 0;
|
|
goto <bb 10>; [INV]
|
|
|
|
<bb 8> :
|
|
# DEBUG BEGIN_STMT
|
|
slave->direction = 1;
|
|
# DEBUG BEGIN_STMT
|
|
_8 = slave->slaveCallback;
|
|
if (_8 != 0B)
|
|
goto <bb 9>; [INV]
|
|
else
|
|
goto <bb 10>; [INV]
|
|
|
|
<bb 9> :
|
|
# DEBUG BEGIN_STMT
|
|
_9 = slave->slaveCallback;
|
|
_10 = slave->callbackParam;
|
|
_9 (6, _10);
|
|
|
|
<bb 10> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
slave->status = 2;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterHandleReceiveDataReadyEvent (struct LPI2C_Type * baseAddr, struct Lpi2c_Ip_MasterStateType * master)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
_1 = master->dataBuffer;
|
|
_2 = LPI2C_Get_MasterRxData (baseAddr);
|
|
*_1 = _2;
|
|
# DEBUG BEGIN_STMT
|
|
_3 = master->dataBuffer;
|
|
_4 = _3 + 1;
|
|
master->dataBuffer = _4;
|
|
# DEBUG BEGIN_STMT
|
|
_5 = master->bufferSize;
|
|
_6 = _5 + 4294967295;
|
|
master->bufferSize = _6;
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
_7 = LPI2C_Get_MasterRxFIFOCount (baseAddr);
|
|
if (_7 != 0)
|
|
goto <bb 5>; [INV]
|
|
else
|
|
goto <bb 6>; [INV]
|
|
|
|
<bb 5> :
|
|
_8 = master->bufferSize;
|
|
if (_8 != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 6>; [INV]
|
|
|
|
<bb 6> :
|
|
# DEBUG BEGIN_STMT
|
|
_9 = master->bufferSize;
|
|
if (_9 == 0)
|
|
goto <bb 7>; [INV]
|
|
else
|
|
goto <bb 9>; [INV]
|
|
|
|
<bb 7> :
|
|
# DEBUG BEGIN_STMT
|
|
_10 = master->sendStop;
|
|
Lpi2c_Ip_MasterEndTransfer (baseAddr, master, _10, 0);
|
|
# DEBUG BEGIN_STMT
|
|
master->status = 0;
|
|
# DEBUG BEGIN_STMT
|
|
_11 = master->masterCallback;
|
|
if (_11 != 0B)
|
|
goto <bb 8>; [INV]
|
|
else
|
|
goto <bb 11>; [INV]
|
|
|
|
<bb 8> :
|
|
# DEBUG BEGIN_STMT
|
|
_12 = master->masterCallback;
|
|
_13 = master->callbackParam;
|
|
_12 (11, _13);
|
|
goto <bb 11>; [INV]
|
|
|
|
<bb 9> :
|
|
# DEBUG BEGIN_STMT
|
|
_14 = master->bufferSize;
|
|
_15 = LPI2C_Get_MasterRxFIFOWatermark (baseAddr);
|
|
_16 = (long unsigned int) _15;
|
|
if (_14 <= _16)
|
|
goto <bb 10>; [INV]
|
|
else
|
|
goto <bb 11>; [INV]
|
|
|
|
<bb 10> :
|
|
# DEBUG BEGIN_STMT
|
|
_17 = master->bufferSize;
|
|
_18 = (short unsigned int) _17;
|
|
_19 = _18 + 65535;
|
|
LPI2C_Set_MasterRxFIFOWatermark (baseAddr, _19);
|
|
|
|
<bb 11> :
|
|
# DEBUG BEGIN_STMT
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterHandleTransmitDataRequest (struct LPI2C_Type * baseAddr, struct Lpi2c_Ip_MasterStateType * master)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
_1 = Lpi2c_Ip_MasterCmdQueueEmpty (master);
|
|
_2 = ~_1;
|
|
if (_2 != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterSendQueuedCmd (baseAddr, master);
|
|
goto <bb 11>; [INV]
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
_3 = master->dataBuffer;
|
|
if (_3 != 0B)
|
|
goto <bb 5>; [INV]
|
|
else
|
|
goto <bb 10>; [INV]
|
|
|
|
<bb 5> :
|
|
_4 = master->direction;
|
|
if (_4 == 0)
|
|
goto <bb 6>; [INV]
|
|
else
|
|
goto <bb 10>; [INV]
|
|
|
|
<bb 6> :
|
|
# DEBUG BEGIN_STMT
|
|
_5 = master->bufferSize;
|
|
if (_5 == 0)
|
|
goto <bb 7>; [INV]
|
|
else
|
|
goto <bb 9>; [INV]
|
|
|
|
<bb 7> :
|
|
# DEBUG BEGIN_STMT
|
|
_6 = master->sendStop;
|
|
Lpi2c_Ip_MasterEndTransfer (baseAddr, master, _6, 0);
|
|
# DEBUG BEGIN_STMT
|
|
master->status = 0;
|
|
# DEBUG BEGIN_STMT
|
|
_7 = master->masterCallback;
|
|
if (_7 != 0B)
|
|
goto <bb 8>; [INV]
|
|
else
|
|
goto <bb 11>; [INV]
|
|
|
|
<bb 8> :
|
|
# DEBUG BEGIN_STMT
|
|
_8 = master->masterCallback;
|
|
_9 = master->callbackParam;
|
|
_8 (11, _9);
|
|
goto <bb 11>; [INV]
|
|
|
|
<bb 9> :
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterQueueData (baseAddr, master);
|
|
goto <bb 11>; [INV]
|
|
|
|
<bb 10> :
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_MasterInt (baseAddr, 1, 0);
|
|
|
|
<bb 11> :
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_SlaveSetOperatingMode (uint32 instance, Lpi2c_Ip_ModeType operatingMode)
|
|
{
|
|
boolean bHighSpeedMode;
|
|
struct Lpi2c_Ip_SlaveStateType * slave;
|
|
struct LPI2C_Type * baseAddr;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
bHighSpeedMode = 0;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr = g_lpi2cBase[instance];
|
|
# DEBUG BEGIN_STMT
|
|
slave = g_lpi2cSlaveStatePtr[instance];
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_SlaveConfigureNormalMode (baseAddr);
|
|
# DEBUG BEGIN_STMT
|
|
if (operatingMode == 3)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
bHighSpeedMode = 1;
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_SlaveHighSpeedModeDetect (baseAddr, bHighSpeedMode);
|
|
# DEBUG BEGIN_STMT
|
|
slave->operatingMode = operatingMode;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_SlaveConfigureNormalMode (struct LPI2C_Type * baseAddr)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_SlaveIgnoreNACK (baseAddr, 0);
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_SlaveTransmitNACK (baseAddr, 0);
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_SlaveACKStall (baseAddr, 0);
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_SlaveTXDStall (baseAddr, 1);
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_SlaveRXStall (baseAddr, 1);
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_SlaveAddrStall (baseAddr, 1);
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterSetOperatingMode (uint32 instance, Lpi2c_Ip_ModeType operatingMode)
|
|
{
|
|
struct Lpi2c_Ip_MasterStateType * master;
|
|
struct LPI2C_Type * baseAddr;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr = g_lpi2cBase[instance];
|
|
# DEBUG BEGIN_STMT
|
|
master = g_lpi2cMasterStatePtr[instance];
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_MasterPinConfig (baseAddr, 0);
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_MasterNACKConfig (baseAddr, 0);
|
|
# DEBUG BEGIN_STMT
|
|
master->operatingMode = operatingMode;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterEndTransfer (struct LPI2C_Type * baseAddr, struct Lpi2c_Ip_MasterStateType * master, boolean sendStop, boolean resetFIFO)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Set_MasterInt (baseAddr, 15363, 0);
|
|
# DEBUG BEGIN_STMT
|
|
if (resetFIFO != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Reset_MasterTxFIFOCmd (baseAddr);
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Reset_MasterRxFIFOCmd (baseAddr);
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
if (sendStop != 0)
|
|
goto <bb 5>; [INV]
|
|
else
|
|
goto <bb 6>; [INV]
|
|
|
|
<bb 5> :
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Cmd_MasterTransmit (baseAddr, 2, 0);
|
|
# DEBUG BEGIN_STMT
|
|
master->highSpeedInProgress = 0;
|
|
|
|
<bb 6> :
|
|
# DEBUG BEGIN_STMT
|
|
master->dataBuffer = 0B;
|
|
# DEBUG BEGIN_STMT
|
|
master->bufferSize = 0;
|
|
# DEBUG BEGIN_STMT
|
|
master->i2cIdle = 1;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterQueueData (struct LPI2C_Type * baseAddr, struct Lpi2c_Ip_MasterStateType * master)
|
|
{
|
|
uint16 txFifoSize;
|
|
uint16 txFIFOCount;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
txFIFOCount = LPI2C_Get_MasterTxFIFOCount (baseAddr);
|
|
# DEBUG BEGIN_STMT
|
|
txFifoSize = LPI2C_Get_MasterTxFIFOSize (baseAddr);
|
|
# DEBUG BEGIN_STMT
|
|
_1 = Lpi2c_Ip_MasterCmdQueueEmpty (master);
|
|
if (_1 != 0)
|
|
goto <bb 4>; [INV]
|
|
else
|
|
goto <bb 6>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
_2 = master->dataBuffer;
|
|
_3 = *_2;
|
|
LPI2C_Cmd_MasterTransmit (baseAddr, 0, _3);
|
|
# DEBUG BEGIN_STMT
|
|
_4 = master->dataBuffer;
|
|
_5 = _4 + 1;
|
|
master->dataBuffer = _5;
|
|
# DEBUG BEGIN_STMT
|
|
_6 = master->bufferSize;
|
|
_7 = _6 + 4294967295;
|
|
master->bufferSize = _7;
|
|
# DEBUG BEGIN_STMT
|
|
txFIFOCount = LPI2C_Get_MasterTxFIFOCount (baseAddr);
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
_8 = master->bufferSize;
|
|
if (_8 != 0)
|
|
goto <bb 5>; [INV]
|
|
else
|
|
goto <bb 6>; [INV]
|
|
|
|
<bb 5> :
|
|
if (txFIFOCount < txFifoSize)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 6>; [INV]
|
|
|
|
<bb 6> :
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterSendAddress (struct LPI2C_Type * baseAddr, struct Lpi2c_Ip_MasterStateType * master, boolean receive)
|
|
{
|
|
Lpi2c_Ip_MasterCommandType startCommand;
|
|
uint8 addrByte;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
_1 = master->operatingMode;
|
|
if (_1 == 3)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 5>; [INV]
|
|
|
|
<bb 3> :
|
|
_2 = master->highSpeedInProgress;
|
|
_3 = ~_2;
|
|
if (_3 != 0)
|
|
goto <bb 4>; [INV]
|
|
else
|
|
goto <bb 5>; [INV]
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
_4 = master->masterCode;
|
|
Lpi2c_Ip_MasterQueueCmd (baseAddr, master, 5, _4);
|
|
# DEBUG BEGIN_STMT
|
|
master->highSpeedInProgress = 1;
|
|
|
|
<bb 5> :
|
|
# DEBUG BEGIN_STMT
|
|
_5 = master->highSpeedInProgress;
|
|
if (_5 != 0)
|
|
goto <bb 6>; [INV]
|
|
else
|
|
goto <bb 7>; [INV]
|
|
|
|
<bb 6> :
|
|
# DEBUG BEGIN_STMT
|
|
startCommand = 6;
|
|
goto <bb 8>; [INV]
|
|
|
|
<bb 7> :
|
|
# DEBUG BEGIN_STMT
|
|
startCommand = 4;
|
|
|
|
<bb 8> :
|
|
# DEBUG BEGIN_STMT
|
|
_6 = master->is10bitAddr;
|
|
if (_6 != 0)
|
|
goto <bb 9>; [INV]
|
|
else
|
|
goto <bb 11>; [INV]
|
|
|
|
<bb 9> :
|
|
# DEBUG BEGIN_STMT
|
|
_7 = master->slaveAddress;
|
|
_8 = _7 >> 7;
|
|
_9 = (unsigned char) _8;
|
|
_10 = _9 & 6;
|
|
addrByte = _10 + 240;
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterQueueCmd (baseAddr, master, startCommand, addrByte);
|
|
# DEBUG BEGIN_STMT
|
|
_11 = master->slaveAddress;
|
|
addrByte = (uint8) _11;
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterQueueCmd (baseAddr, master, 0, addrByte);
|
|
# DEBUG BEGIN_STMT
|
|
if (receive != 0)
|
|
goto <bb 10>; [INV]
|
|
else
|
|
goto <bb 12>; [INV]
|
|
|
|
<bb 10> :
|
|
# DEBUG BEGIN_STMT
|
|
_12 = master->slaveAddress;
|
|
_13 = _12 >> 7;
|
|
_14 = (unsigned char) _13;
|
|
_15 = _14 & 6;
|
|
addrByte = _15 + 241;
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterQueueCmd (baseAddr, master, startCommand, addrByte);
|
|
goto <bb 12>; [INV]
|
|
|
|
<bb 11> :
|
|
# DEBUG BEGIN_STMT
|
|
_16 = master->slaveAddress;
|
|
_17 = (unsigned char) _16;
|
|
_18 = _17 << 1;
|
|
_19 = (unsigned char) receive;
|
|
addrByte = _18 + _19;
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterQueueCmd (baseAddr, master, startCommand, addrByte);
|
|
|
|
<bb 12> :
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterSendQueuedCmd (struct LPI2C_Type * baseAddr, struct Lpi2c_Ip_MasterStateType * master)
|
|
{
|
|
uint16 txFifoSize;
|
|
uint16 txFIFOCount;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
txFIFOCount = LPI2C_Get_MasterTxFIFOCount (baseAddr);
|
|
# DEBUG BEGIN_STMT
|
|
txFifoSize = LPI2C_Get_MasterTxFIFOSize (baseAddr);
|
|
# DEBUG BEGIN_STMT
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
_1 = master->cmdQueue.readIdx;
|
|
_2 = (int) _1;
|
|
_3 = master->cmdQueue.cmd[_2];
|
|
_4 = master->cmdQueue.readIdx;
|
|
_5 = (int) _4;
|
|
_6 = master->cmdQueue.data[_5];
|
|
LPI2C_Cmd_MasterTransmit (baseAddr, _3, _6);
|
|
# DEBUG BEGIN_STMT
|
|
_7 = master->cmdQueue.readIdx;
|
|
_8 = _7;
|
|
_9 = _8 + 1;
|
|
master->cmdQueue.readIdx = _9;
|
|
# DEBUG BEGIN_STMT
|
|
txFIFOCount = LPI2C_Get_MasterTxFIFOCount (baseAddr);
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
_10 = Lpi2c_Ip_MasterCmdQueueEmpty (master);
|
|
_11 = ~_10;
|
|
if (_11 != 0)
|
|
goto <bb 5>; [INV]
|
|
else
|
|
goto <bb 6>; [INV]
|
|
|
|
<bb 5> :
|
|
if (txFIFOCount < txFifoSize)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 6>; [INV]
|
|
|
|
<bb 6> :
|
|
# DEBUG BEGIN_STMT
|
|
_12 = Lpi2c_Ip_MasterCmdQueueEmpty (master);
|
|
if (_12 != 0)
|
|
goto <bb 7>; [INV]
|
|
else
|
|
goto <bb 8>; [INV]
|
|
|
|
<bb 7> :
|
|
# DEBUG BEGIN_STMT
|
|
Lpi2c_Ip_MasterResetQueue (master);
|
|
|
|
<bb 8> :
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterQueueCmd (struct LPI2C_Type * baseAddr, struct Lpi2c_Ip_MasterStateType * master, Lpi2c_Ip_MasterCommandType cmd, uint8 data)
|
|
{
|
|
uint16 txFIFOSize;
|
|
uint16 txFIFOCount;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
txFIFOCount = LPI2C_Get_MasterTxFIFOCount (baseAddr);
|
|
# DEBUG BEGIN_STMT
|
|
txFIFOSize = LPI2C_Get_MasterTxFIFOSize (baseAddr);
|
|
# DEBUG BEGIN_STMT
|
|
if (txFIFOCount < txFIFOSize)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
LPI2C_Cmd_MasterTransmit (baseAddr, cmd, data);
|
|
goto <bb 5>; [INV]
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
_1 = master->cmdQueue.writeIdx;
|
|
_2 = (int) _1;
|
|
master->cmdQueue.cmd[_2] = cmd;
|
|
# DEBUG BEGIN_STMT
|
|
_3 = master->cmdQueue.writeIdx;
|
|
_4 = (int) _3;
|
|
master->cmdQueue.data[_4] = data;
|
|
# DEBUG BEGIN_STMT
|
|
_5 = master->cmdQueue.writeIdx;
|
|
_6 = _5;
|
|
_7 = _6 + 1;
|
|
master->cmdQueue.writeIdx = _7;
|
|
|
|
<bb 5> :
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterResetQueue (struct Lpi2c_Ip_MasterStateType * master)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
master->cmdQueue.readIdx = 0;
|
|
# DEBUG BEGIN_STMT
|
|
master->cmdQueue.writeIdx = 0;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
Lpi2c_Ip_MasterCmdQueueEmpty (const struct Lpi2c_Ip_MasterStateType * master)
|
|
{
|
|
boolean D.5329;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
_1 = master->cmdQueue.writeIdx;
|
|
_2 = master->cmdQueue.readIdx;
|
|
D.5329 = _1 == _2;
|
|
return D.5329;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Get_SlaveData (const struct LPI2C_Type * baseAddr)
|
|
{
|
|
uint32 tmp;
|
|
uint8 D.5581;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->SRDR;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp & 255;
|
|
# DEBUG BEGIN_STMT
|
|
D.5581 = (uint8) tmp;
|
|
return D.5581;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Transmit_SlaveData (struct LPI2C_Type * baseAddr, uint8 data)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
_1 = (long unsigned int) data;
|
|
baseAddr->STDR = _1;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_SlaveTransmitNACK (struct LPI2C_Type * baseAddr, Lpi2c_Ip_SlaveNackTransmitType nack)
|
|
{
|
|
uint32 regValue;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
regValue = baseAddr->STAR;
|
|
# DEBUG BEGIN_STMT
|
|
regValue = regValue & 4294967294;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = (long unsigned int) nack;
|
|
_2 = _1 & 1;
|
|
regValue = regValue | _2;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->STAR = regValue;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Get_SlaveReceivedAddr (const struct LPI2C_Type * baseAddr)
|
|
{
|
|
uint32 tmp;
|
|
uint16 D.5554;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->SASR;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp & 2047;
|
|
# DEBUG BEGIN_STMT
|
|
D.5554 = (uint16) tmp;
|
|
return D.5554;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_SlaveAddr0 (struct LPI2C_Type * baseAddr, uint16 addr)
|
|
{
|
|
uint32 tmp;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->SAMR;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp & 4294965249;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = (long unsigned int) addr;
|
|
_2 = _1 << 1;
|
|
_3 = _2 & 2046;
|
|
tmp = tmp | _3;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->SAMR = tmp;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_SlaveAddrStall (struct LPI2C_Type * baseAddr, boolean enable)
|
|
{
|
|
uint32 regValue;
|
|
long unsigned int iftmp.5;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
regValue = baseAddr->SCFGR1;
|
|
# DEBUG BEGIN_STMT
|
|
regValue = regValue & 4294967294;
|
|
# DEBUG BEGIN_STMT
|
|
if (enable != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
iftmp.5 = 1;
|
|
goto <bb 5>; [INV]
|
|
|
|
<bb 4> :
|
|
iftmp.5 = 0;
|
|
|
|
<bb 5> :
|
|
regValue = iftmp.5 | regValue;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->SCFGR1 = regValue;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_SlaveRXStall (struct LPI2C_Type * baseAddr, boolean enable)
|
|
{
|
|
uint32 regValue;
|
|
long unsigned int iftmp.4;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
regValue = baseAddr->SCFGR1;
|
|
# DEBUG BEGIN_STMT
|
|
regValue = regValue & 4294967293;
|
|
# DEBUG BEGIN_STMT
|
|
if (enable != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
iftmp.4 = 2;
|
|
goto <bb 5>; [INV]
|
|
|
|
<bb 4> :
|
|
iftmp.4 = 0;
|
|
|
|
<bb 5> :
|
|
regValue = iftmp.4 | regValue;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->SCFGR1 = regValue;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_SlaveTXDStall (struct LPI2C_Type * baseAddr, boolean enable)
|
|
{
|
|
uint32 regValue;
|
|
long unsigned int iftmp.3;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
regValue = baseAddr->SCFGR1;
|
|
# DEBUG BEGIN_STMT
|
|
regValue = regValue & 4294967291;
|
|
# DEBUG BEGIN_STMT
|
|
if (enable != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
iftmp.3 = 4;
|
|
goto <bb 5>; [INV]
|
|
|
|
<bb 4> :
|
|
iftmp.3 = 0;
|
|
|
|
<bb 5> :
|
|
regValue = iftmp.3 | regValue;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->SCFGR1 = regValue;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_SlaveACKStall (struct LPI2C_Type * baseAddr, boolean enable)
|
|
{
|
|
uint32 regValue;
|
|
long unsigned int iftmp.2;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
regValue = baseAddr->SCFGR1;
|
|
# DEBUG BEGIN_STMT
|
|
regValue = regValue & 4294967287;
|
|
# DEBUG BEGIN_STMT
|
|
if (enable != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
iftmp.2 = 8;
|
|
goto <bb 5>; [INV]
|
|
|
|
<bb 4> :
|
|
iftmp.2 = 0;
|
|
|
|
<bb 5> :
|
|
regValue = iftmp.2 | regValue;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->SCFGR1 = regValue;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_SlaveIgnoreNACK (struct LPI2C_Type * baseAddr, Lpi2c_Ip_SlaveNackConfigType nack_config)
|
|
{
|
|
uint32 regValue;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
regValue = baseAddr->SCFGR1;
|
|
# DEBUG BEGIN_STMT
|
|
regValue = regValue & 4294963199;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = (long unsigned int) nack_config;
|
|
_2 = _1 << 12;
|
|
_3 = _2 & 4096;
|
|
regValue = regValue | _3;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->SCFGR1 = regValue;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_SlaveHighSpeedModeDetect (struct LPI2C_Type * baseAddr, boolean enable)
|
|
{
|
|
uint32 regValue;
|
|
long unsigned int iftmp.6;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
regValue = baseAddr->SCFGR1;
|
|
# DEBUG BEGIN_STMT
|
|
regValue = regValue & 4294959103;
|
|
# DEBUG BEGIN_STMT
|
|
if (enable != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
iftmp.6 = 8192;
|
|
goto <bb 5>; [INV]
|
|
|
|
<bb 4> :
|
|
iftmp.6 = 0;
|
|
|
|
<bb 5> :
|
|
regValue = iftmp.6 | regValue;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->SCFGR1 = regValue;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_SlaveAddrConfig (struct LPI2C_Type * baseAddr, Lpi2c_Ip_SlaveAddressConfigType configuration)
|
|
{
|
|
uint32 tmp;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->SCFGR1;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp & 4294508543;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = (long unsigned int) configuration;
|
|
_2 = _1 << 16;
|
|
_3 = _2 & 458752;
|
|
tmp = tmp | _3;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->SCFGR1 = tmp;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_SlaveTxDMA (struct LPI2C_Type * baseAddr, boolean enable)
|
|
{
|
|
uint32 regValue;
|
|
long unsigned int iftmp.8;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
regValue = baseAddr->SDER;
|
|
# DEBUG BEGIN_STMT
|
|
regValue = regValue & 4294967294;
|
|
# DEBUG BEGIN_STMT
|
|
if (enable != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
iftmp.8 = 1;
|
|
goto <bb 5>; [INV]
|
|
|
|
<bb 4> :
|
|
iftmp.8 = 0;
|
|
|
|
<bb 5> :
|
|
regValue = iftmp.8 | regValue;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->SDER = regValue;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_SlaveRxDMA (struct LPI2C_Type * baseAddr, boolean enable)
|
|
{
|
|
uint32 regValue;
|
|
long unsigned int iftmp.7;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
regValue = baseAddr->SDER;
|
|
# DEBUG BEGIN_STMT
|
|
regValue = regValue & 4294967293;
|
|
# DEBUG BEGIN_STMT
|
|
if (enable != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
iftmp.7 = 2;
|
|
goto <bb 5>; [INV]
|
|
|
|
<bb 4> :
|
|
iftmp.7 = 0;
|
|
|
|
<bb 5> :
|
|
regValue = iftmp.7 | regValue;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->SDER = regValue;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Get_SlaveInt (const struct LPI2C_Type * baseAddr, uint32 interrupts)
|
|
{
|
|
boolean hasInterrupts;
|
|
uint32 tmp;
|
|
boolean D.5572;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->SIER;
|
|
# DEBUG BEGIN_STMT
|
|
# DEBUG BEGIN_STMT
|
|
_1 = tmp & interrupts;
|
|
if (_1 != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
hasInterrupts = 1;
|
|
goto <bb 5>; [INV]
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
hasInterrupts = 0;
|
|
|
|
<bb 5> :
|
|
# DEBUG BEGIN_STMT
|
|
D.5572 = hasInterrupts;
|
|
return D.5572;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_SlaveInt (struct LPI2C_Type * baseAddr, uint32 interrupts, boolean enable)
|
|
{
|
|
uint32 tmp;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->SIER;
|
|
# DEBUG BEGIN_STMT
|
|
if (enable != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp | interrupts;
|
|
goto <bb 5>; [INV]
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
_1 = ~interrupts;
|
|
tmp = tmp & _1;
|
|
|
|
<bb 5> :
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->SIER = tmp;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Clear_SlaveRepeatedStartEvent (struct LPI2C_Type * baseAddr)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->SSR = 256;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Clear_SlaveSTOPDetectEvent (struct LPI2C_Type * baseAddr)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->SSR = 512;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Clear_SlaveBitErrorEvent (struct LPI2C_Type * baseAddr)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->SSR = 1024;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Get_SlaveTransmitDataEvent (const struct LPI2C_Type * baseAddr)
|
|
{
|
|
uint32 regValue;
|
|
boolean D.5556;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
regValue = baseAddr->SSR;
|
|
# DEBUG BEGIN_STMT
|
|
regValue = regValue & 1;
|
|
# DEBUG BEGIN_STMT
|
|
D.5556 = regValue != 0;
|
|
return D.5556;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Get_SlaveReceiveDataEvent (const struct LPI2C_Type * baseAddr)
|
|
{
|
|
uint32 regValue;
|
|
boolean D.5567;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
regValue = baseAddr->SSR;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = regValue >> 1;
|
|
regValue = _1 & 1;
|
|
# DEBUG BEGIN_STMT
|
|
D.5567 = regValue != 0;
|
|
return D.5567;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Get_SlaveAddressValidEvent (const struct LPI2C_Type * baseAddr)
|
|
{
|
|
uint32 regValue;
|
|
boolean D.5543;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
regValue = baseAddr->SSR;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = regValue >> 2;
|
|
regValue = _1 & 1;
|
|
# DEBUG BEGIN_STMT
|
|
D.5543 = regValue != 0;
|
|
return D.5543;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Get_SlaveRepeatedStartEvent (const struct LPI2C_Type * baseAddr)
|
|
{
|
|
uint32 regValue;
|
|
boolean D.5585;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
regValue = baseAddr->SSR;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = regValue >> 8;
|
|
regValue = _1 & 1;
|
|
# DEBUG BEGIN_STMT
|
|
D.5585 = regValue != 0;
|
|
return D.5585;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Get_SlaveSTOPDetectEvent (const struct LPI2C_Type * baseAddr)
|
|
{
|
|
uint32 regValue;
|
|
boolean D.5583;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
regValue = baseAddr->SSR;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = regValue >> 9;
|
|
regValue = _1 & 1;
|
|
# DEBUG BEGIN_STMT
|
|
D.5583 = regValue != 0;
|
|
return D.5583;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Get_SlaveBitErrorEvent (const struct LPI2C_Type * baseAddr)
|
|
{
|
|
uint32 regValue;
|
|
boolean D.5595;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
regValue = baseAddr->SSR;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = regValue >> 10;
|
|
regValue = _1 & 1;
|
|
# DEBUG BEGIN_STMT
|
|
D.5595 = regValue != 0;
|
|
return D.5595;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_SlaveEnable (struct LPI2C_Type * baseAddr, boolean enable)
|
|
{
|
|
uint32 regValue;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
regValue = baseAddr->SCR;
|
|
# DEBUG BEGIN_STMT
|
|
regValue = regValue & 4294967294;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = (long unsigned int) enable;
|
|
regValue = regValue | _1;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->SCR = regValue;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Get_MasterRxData (const struct LPI2C_Type * baseAddr)
|
|
{
|
|
uint32 tmp;
|
|
uint8 D.5421;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->MRDR;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp & 255;
|
|
# DEBUG BEGIN_STMT
|
|
D.5421 = (uint8) tmp;
|
|
return D.5421;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Cmd_MasterTransmit (struct LPI2C_Type * baseAddr, Lpi2c_Ip_MasterCommandType cmd, uint8 data)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
_1 = (long unsigned int) cmd;
|
|
_2 = _1 << 8;
|
|
_3 = (long unsigned int) data;
|
|
_4 = _2 + _3;
|
|
baseAddr->MTDR = _4;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Get_MasterTxFIFOCount (const struct LPI2C_Type * baseAddr)
|
|
{
|
|
uint32 tmp;
|
|
uint16 D.5322;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->MFSR;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp & 7;
|
|
# DEBUG BEGIN_STMT
|
|
D.5322 = (uint16) tmp;
|
|
return D.5322;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Get_MasterRxFIFOCount (const struct LPI2C_Type * baseAddr)
|
|
{
|
|
uint32 tmp;
|
|
uint16 D.5423;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->MFSR;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = tmp >> 16;
|
|
tmp = _1 & 7;
|
|
# DEBUG BEGIN_STMT
|
|
D.5423 = (uint16) tmp;
|
|
return D.5423;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_MasterTxFIFOWatermark (struct LPI2C_Type * baseAddr, uint16 value)
|
|
{
|
|
uint32 tmp;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->MFCR;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp & 4294967292;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = (long unsigned int) value;
|
|
_2 = _1 & 3;
|
|
tmp = tmp | _2;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->MFCR = tmp;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Get_MasterRxFIFOWatermark (const struct LPI2C_Type * baseAddr)
|
|
{
|
|
uint32 tmp;
|
|
uint16 D.5425;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->MFCR;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = tmp >> 16;
|
|
tmp = _1 & 3;
|
|
# DEBUG BEGIN_STMT
|
|
D.5425 = (uint16) tmp;
|
|
return D.5425;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_MasterRxFIFOWatermark (struct LPI2C_Type * baseAddr, uint16 value)
|
|
{
|
|
uint32 tmp;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->MFCR;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp & 4294770687;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = (long unsigned int) value;
|
|
_2 = _1 << 16;
|
|
_3 = _2 & 196608;
|
|
tmp = tmp | _3;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->MFCR = tmp;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Get_MasterClockLowPeriodHS (const struct LPI2C_Type * baseAddr)
|
|
{
|
|
uint32 tmp;
|
|
uint8 D.5301;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->MCCR1;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp & 63;
|
|
# DEBUG BEGIN_STMT
|
|
D.5301 = (uint8) tmp;
|
|
return D.5301;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_MasterClockLowPeriodHS (struct LPI2C_Type * baseAddr, uint8 value)
|
|
{
|
|
uint32 tmp;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->MCCR1;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp & 4294967232;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = (long unsigned int) value;
|
|
_2 = _1 & 63;
|
|
tmp = tmp | _2;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->MCCR1 = tmp;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Get_MasterClockHighPeriodHS (const struct LPI2C_Type * baseAddr)
|
|
{
|
|
uint32 tmp;
|
|
uint8 D.5299;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->MCCR1;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = tmp >> 8;
|
|
tmp = _1 & 63;
|
|
# DEBUG BEGIN_STMT
|
|
D.5299 = (uint8) tmp;
|
|
return D.5299;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_MasterClockHighPeriodHS (struct LPI2C_Type * baseAddr, uint8 value)
|
|
{
|
|
uint32 tmp;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->MCCR1;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp & 4294951167;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = (long unsigned int) value;
|
|
_2 = _1 << 8;
|
|
_3 = _2 & 16128;
|
|
tmp = tmp | _3;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->MCCR1 = tmp;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_MasterSetupHoldDelayHS (struct LPI2C_Type * baseAddr, uint8 value)
|
|
{
|
|
uint32 tmp;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->MCCR1;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp & 4290838527;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = (long unsigned int) value;
|
|
_2 = _1 << 16;
|
|
_3 = _2 & 4128768;
|
|
tmp = tmp | _3;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->MCCR1 = tmp;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_MasterDataValidDelayHS (struct LPI2C_Type * baseAddr, uint8 value)
|
|
{
|
|
uint32 tmp;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->MCCR1;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp & 3238002687;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = (long unsigned int) value;
|
|
_2 = _1 << 24;
|
|
_3 = _2 & 1056964608;
|
|
tmp = tmp | _3;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->MCCR1 = tmp;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Get_MasterClockLowPeriod (const struct LPI2C_Type * baseAddr)
|
|
{
|
|
uint32 tmp;
|
|
uint8 D.5297;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->MCCR0;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp & 63;
|
|
# DEBUG BEGIN_STMT
|
|
D.5297 = (uint8) tmp;
|
|
return D.5297;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_MasterClockLowPeriod (struct LPI2C_Type * baseAddr, uint8 value)
|
|
{
|
|
uint32 tmp;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->MCCR0;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp & 4294967232;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = (long unsigned int) value;
|
|
_2 = _1 & 63;
|
|
tmp = tmp | _2;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->MCCR0 = tmp;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_MasterSetupHoldDelay (struct LPI2C_Type * baseAddr, uint8 value)
|
|
{
|
|
uint32 tmp;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->MCCR0;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp & 4290838527;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = (long unsigned int) value;
|
|
_2 = _1 << 16;
|
|
_3 = _2 & 4128768;
|
|
tmp = tmp | _3;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->MCCR0 = tmp;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_MasterDataValidDelay (struct LPI2C_Type * baseAddr, uint8 value)
|
|
{
|
|
uint32 tmp;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->MCCR0;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp & 3238002687;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = (long unsigned int) value;
|
|
_2 = _1 << 24;
|
|
_3 = _2 & 1056964608;
|
|
tmp = tmp | _3;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->MCCR0 = tmp;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_MasterClockHighPeriod (struct LPI2C_Type * baseAddr, uint8 value)
|
|
{
|
|
uint32 tmp;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->MCCR0;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp & 4294951167;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = (long unsigned int) value;
|
|
_2 = _1 << 8;
|
|
_3 = _2 & 16128;
|
|
tmp = tmp | _3;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->MCCR0 = tmp;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Get_MasterClockHighPeriod (const struct LPI2C_Type * baseAddr)
|
|
{
|
|
uint32 tmp;
|
|
uint8 D.5295;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->MCCR0;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = tmp >> 8;
|
|
tmp = _1 & 63;
|
|
# DEBUG BEGIN_STMT
|
|
D.5295 = (uint8) tmp;
|
|
return D.5295;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Get_MasterPrescaler (const struct LPI2C_Type * baseAddr)
|
|
{
|
|
uint32 tmp;
|
|
Lpi2c_Ip_MasterPrescalerType D.5293;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->MCFGR1;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp & 7;
|
|
# DEBUG BEGIN_STMT
|
|
D.5293 = (Lpi2c_Ip_MasterPrescalerType) tmp;
|
|
return D.5293;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_MasterPrescaler (struct LPI2C_Type * baseAddr, Lpi2c_Ip_MasterPrescalerType prescaler)
|
|
{
|
|
uint32 tmp;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->MCFGR1;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp & 4294967288;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = (long unsigned int) prescaler;
|
|
_2 = _1 & 7;
|
|
tmp = tmp | _2;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->MCFGR1 = tmp;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_MasterNACKConfig (struct LPI2C_Type * baseAddr, Lpi2c_Ip_NackConfigType configuration)
|
|
{
|
|
uint32 regValue;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
regValue = baseAddr->MCFGR1;
|
|
# DEBUG BEGIN_STMT
|
|
regValue = regValue & 4294966783;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = (long unsigned int) configuration;
|
|
_2 = _1 << 9;
|
|
_3 = _2 & 512;
|
|
regValue = regValue | _3;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->MCFGR1 = regValue;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_MasterBusIdleTimeout (struct LPI2C_Type * baseAddr, uint32 u32Timeout)
|
|
{
|
|
uint32 tmp;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->MCFGR2;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp & 4294963200;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = u32Timeout & 4095;
|
|
tmp = tmp | _1;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->MCFGR2 = tmp;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_MasterPinLowTimeoutConfiguration (struct LPI2C_Type * baseAddr, boolean configuration)
|
|
{
|
|
uint32 tmp;
|
|
long unsigned int iftmp.1;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->MCFGR1;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp & 4294966271;
|
|
# DEBUG BEGIN_STMT
|
|
if (configuration != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
iftmp.1 = 1024;
|
|
goto <bb 5>; [INV]
|
|
|
|
<bb 4> :
|
|
iftmp.1 = 0;
|
|
|
|
<bb 5> :
|
|
tmp = iftmp.1 | tmp;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->MCFGR1 = tmp;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_MasterPinLowTimeout (struct LPI2C_Type * baseAddr, uint32 u32Timeout)
|
|
{
|
|
uint32 tmp;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->MCFGR3;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp & 4293918975;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = u32Timeout << 8;
|
|
_2 = _1 & 1048320;
|
|
tmp = tmp | _2;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->MCFGR3 = tmp;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_SlaveGlitchFilterSCL (struct LPI2C_Type * baseAddr, uint32 cycles)
|
|
{
|
|
uint32 tmp;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->SCFGR2;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp & 4293984255;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = cycles << 16;
|
|
_2 = _1 & 983040;
|
|
tmp = tmp | _2;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->SCFGR2 = tmp;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_SlaveGlitchFilterSDA (struct LPI2C_Type * baseAddr, uint32 cycles)
|
|
{
|
|
uint32 tmp;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->SCFGR2;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp & 4043309055;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = cycles << 24;
|
|
_2 = _1 & 251658240;
|
|
tmp = tmp | _2;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->SCFGR2 = tmp;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_MasterGlitchFilterSCL (struct LPI2C_Type * baseAddr, uint32 cycles)
|
|
{
|
|
uint32 tmp;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->MCFGR2;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp & 4293984255;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = cycles << 16;
|
|
_2 = _1 & 983040;
|
|
tmp = tmp | _2;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->MCFGR2 = tmp;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_MasterGlitchFilterSDA (struct LPI2C_Type * baseAddr, uint32 cycles)
|
|
{
|
|
uint32 tmp;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->MCFGR2;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp & 4043309055;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = cycles << 24;
|
|
_2 = _1 & 251658240;
|
|
tmp = tmp | _2;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->MCFGR2 = tmp;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_MasterPinConfig (struct LPI2C_Type * baseAddr, Lpi2c_Ip_PinConfigType configuration)
|
|
{
|
|
uint32 tmp;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->MCFGR1;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp & 4177526783;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = (long unsigned int) configuration;
|
|
_2 = _1 << 24;
|
|
_3 = _2 & 117440512;
|
|
tmp = tmp | _3;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->MCFGR1 = tmp;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_MasterInt (struct LPI2C_Type * baseAddr, uint32 interrupts, boolean enable)
|
|
{
|
|
uint32 tmp;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->MIER;
|
|
# DEBUG BEGIN_STMT
|
|
if (enable != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp | interrupts;
|
|
goto <bb 5>; [INV]
|
|
|
|
<bb 4> :
|
|
# DEBUG BEGIN_STMT
|
|
_1 = ~interrupts;
|
|
tmp = tmp & _1;
|
|
|
|
<bb 5> :
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->MIER = tmp;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Clear_MasterPinLowTimeoutEvent (struct LPI2C_Type * baseAddr)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->MSR = 8192;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Clear_MasterNACKDetectEvent (struct LPI2C_Type * baseAddr)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->MSR = 1024;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Clear_MasterArbitrationLostEvent (struct LPI2C_Type * baseAddr)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->MSR = 2048;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Clear_MasterFIFOErrorEvent (struct LPI2C_Type * baseAddr)
|
|
{
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->MSR = 4096;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Get_MasterPinLowTimeoutEvent (const struct LPI2C_Type * baseAddr)
|
|
{
|
|
uint32 regValue;
|
|
boolean D.5462;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
regValue = baseAddr->MSR;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = regValue >> 13;
|
|
regValue = _1 & 1;
|
|
# DEBUG BEGIN_STMT
|
|
D.5462 = regValue != 0;
|
|
return D.5462;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Get_MasterNACKDetectEvent (const struct LPI2C_Type * baseAddr)
|
|
{
|
|
uint32 regValue;
|
|
boolean D.5383;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
regValue = baseAddr->MSR;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = regValue >> 10;
|
|
regValue = _1 & 1;
|
|
# DEBUG BEGIN_STMT
|
|
D.5383 = regValue != 0;
|
|
return D.5383;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Get_MasterArbitrationLostEvent (const struct LPI2C_Type * baseAddr)
|
|
{
|
|
uint32 regValue;
|
|
boolean D.5379;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
regValue = baseAddr->MSR;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = regValue >> 11;
|
|
regValue = _1 & 1;
|
|
# DEBUG BEGIN_STMT
|
|
D.5379 = regValue != 0;
|
|
return D.5379;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Get_MasterFIFOErrorEvent (const struct LPI2C_Type * baseAddr)
|
|
{
|
|
uint32 regValue;
|
|
boolean D.5373;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
regValue = baseAddr->MSR;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = regValue >> 12;
|
|
regValue = _1 & 1;
|
|
# DEBUG BEGIN_STMT
|
|
D.5373 = regValue != 0;
|
|
return D.5373;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Get_MasterTransmitDataRequestEvent (const struct LPI2C_Type * baseAddr)
|
|
{
|
|
uint32 regValue;
|
|
boolean D.5358;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
regValue = baseAddr->MSR;
|
|
# DEBUG BEGIN_STMT
|
|
regValue = regValue & 1;
|
|
# DEBUG BEGIN_STMT
|
|
D.5358 = regValue != 0;
|
|
return D.5358;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Get_MasterReceiveDataReadyEvent (const struct LPI2C_Type * baseAddr)
|
|
{
|
|
uint32 regValue;
|
|
boolean D.5418;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
regValue = baseAddr->MSR;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = regValue >> 1;
|
|
regValue = _1 & 1;
|
|
# DEBUG BEGIN_STMT
|
|
D.5418 = regValue != 0;
|
|
return D.5418;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Set_MasterEnable (struct LPI2C_Type * baseAddr, boolean enable)
|
|
{
|
|
uint32 regValue;
|
|
long unsigned int iftmp.0;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
regValue = baseAddr->MCR;
|
|
# DEBUG BEGIN_STMT
|
|
regValue = regValue & 4294967294;
|
|
# DEBUG BEGIN_STMT
|
|
if (enable != 0)
|
|
goto <bb 3>; [INV]
|
|
else
|
|
goto <bb 4>; [INV]
|
|
|
|
<bb 3> :
|
|
iftmp.0 = 1;
|
|
goto <bb 5>; [INV]
|
|
|
|
<bb 4> :
|
|
iftmp.0 = 0;
|
|
|
|
<bb 5> :
|
|
regValue = iftmp.0 | regValue;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->MCR = regValue;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Reset_MasterTxFIFOCmd (struct LPI2C_Type * baseAddr)
|
|
{
|
|
uint32 regValue;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
regValue = baseAddr->MCR;
|
|
# DEBUG BEGIN_STMT
|
|
regValue = regValue & 4294967039;
|
|
# DEBUG BEGIN_STMT
|
|
regValue = regValue | 256;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->MCR = regValue;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Reset_MasterRxFIFOCmd (struct LPI2C_Type * baseAddr)
|
|
{
|
|
uint32 regValue;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
regValue = baseAddr->MCR;
|
|
# DEBUG BEGIN_STMT
|
|
regValue = regValue & 4294966783;
|
|
# DEBUG BEGIN_STMT
|
|
regValue = regValue | 512;
|
|
# DEBUG BEGIN_STMT
|
|
baseAddr->MCR = regValue;
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Get_MasterTxFIFOSize (const struct LPI2C_Type * baseAddr)
|
|
{
|
|
uint32 tmp;
|
|
uint16 D.5324;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->PARAM;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = tmp & 15;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = 1 << tmp;
|
|
# DEBUG BEGIN_STMT
|
|
D.5324 = (uint16) tmp;
|
|
return D.5324;
|
|
|
|
}
|
|
|
|
|
|
LPI2C_Get_MasterRxFIFOSize (const struct LPI2C_Type * baseAddr)
|
|
{
|
|
uint32 tmp;
|
|
uint16 D.5397;
|
|
|
|
<bb 2> :
|
|
# DEBUG BEGIN_STMT
|
|
tmp = baseAddr->PARAM;
|
|
# DEBUG BEGIN_STMT
|
|
_1 = tmp >> 8;
|
|
tmp = _1 & 15;
|
|
# DEBUG BEGIN_STMT
|
|
tmp = 1 << tmp;
|
|
# DEBUG BEGIN_STMT
|
|
D.5397 = (uint16) tmp;
|
|
return D.5397;
|
|
|
|
}
|
|
|
|
|