|
@@ -51,7 +51,7 @@ enum I2cControllerStatus {
|
|
|
I2C_STATUS_RX_STARTED,
|
|
|
I2C_STATUS_RX_INPROGRESS,
|
|
|
I2C_STATUS_RX_COMPLETE,
|
|
|
- I2C_STATUS_ERROR,
|
|
|
+ I2C_STATUS_ERROR
|
|
|
} gI2cControllerStatus;
|
|
|
|
|
|
void I2C_0_INST_IRQHandler(void)
|
|
@@ -87,11 +87,9 @@ void I2C_0_INST_IRQHandler(void)
|
|
|
break;
|
|
|
case DL_I2C_IIDX_CONTROLLER_EVENT1_DMA_DONE:
|
|
|
/* I2C DMA Done on TX */
|
|
|
- /* Do nothing here */
|
|
|
break;
|
|
|
case DL_I2C_IIDX_CONTROLLER_EVENT2_DMA_DONE:
|
|
|
/* I2C DMA Done on RX */
|
|
|
- /* Do nothing here */
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
@@ -121,6 +119,8 @@ void TMAG5273_WriteReg(UBYTE regaddr, UBYTE num, UBYTE *regdata)
|
|
|
DL_DMA_setTransferSize(DMA, DMA_CH0_CHAN_ID, gTxLen);
|
|
|
DL_DMA_enableChannel(DMA, DMA_CH0_CHAN_ID);
|
|
|
|
|
|
+ delay_cycles(10);
|
|
|
+
|
|
|
gI2cControllerStatus = I2C_STATUS_TX_STARTED;
|
|
|
while (!(
|
|
|
DL_I2C_getControllerStatus(I2C_0_INST) & DL_I2C_CONTROLLER_STATUS_IDLE))
|
|
@@ -135,7 +135,6 @@ void TMAG5273_WriteReg(UBYTE regaddr, UBYTE num, UBYTE *regdata)
|
|
|
while (DL_I2C_getControllerStatus(I2C_0_INST) & DL_I2C_CONTROLLER_STATUS_BUSY_BUS);
|
|
|
|
|
|
while (!(DL_I2C_getControllerStatus(I2C_0_INST) & DL_I2C_CONTROLLER_STATUS_IDLE));
|
|
|
- delay_cycles(1000);
|
|
|
}
|
|
|
|
|
|
void TMAG5273_ReadData(UBYTE regaddr, UBYTE num, UBYTE* Read)
|
|
@@ -149,6 +148,8 @@ void TMAG5273_ReadData(UBYTE regaddr, UBYTE num, UBYTE* Read)
|
|
|
DL_DMA_setTransferSize(DMA, DMA_CH0_CHAN_ID, 1);
|
|
|
DL_DMA_enableChannel(DMA, DMA_CH0_CHAN_ID);
|
|
|
|
|
|
+ delay_cycles(10);
|
|
|
+
|
|
|
gI2cControllerStatus = I2C_STATUS_TX_STARTED;
|
|
|
while (!(
|
|
|
DL_I2C_getControllerStatus(I2C_0_INST) & DL_I2C_CONTROLLER_STATUS_IDLE))
|
|
@@ -166,13 +167,15 @@ void TMAG5273_ReadData(UBYTE regaddr, UBYTE num, UBYTE* Read)
|
|
|
|
|
|
gRxLen = num;
|
|
|
gRxCount = 0;
|
|
|
- gI2cControllerStatus = I2C_STATUS_RX_STARTED;
|
|
|
|
|
|
DL_DMA_setSrcAddr(DMA, DMA_CH1_CHAN_ID, (ULONG)(&I2C_0_INST->MASTER.MRXDATA));
|
|
|
DL_DMA_setDestAddr(DMA, DMA_CH1_CHAN_ID, (uint32_t)(&gRxPacket[0]));
|
|
|
DL_DMA_setTransferSize(DMA, DMA_CH1_CHAN_ID, gRxLen);
|
|
|
DL_DMA_enableChannel(DMA, DMA_CH1_CHAN_ID);
|
|
|
|
|
|
+ delay_cycles(10);
|
|
|
+
|
|
|
+ gI2cControllerStatus = I2C_STATUS_RX_STARTED;
|
|
|
DL_I2C_startControllerTransfer(I2C_0_INST, TMAG5273A1_ADDRESS, DL_I2C_CONTROLLER_DIRECTION_RX, gRxLen);
|
|
|
|
|
|
while (gI2cControllerStatus != I2C_STATUS_RX_COMPLETE)
|