|
@@ -60,7 +60,7 @@ char TMAG5273_WriteReg(UBYTE addr, UBYTE regaddr, UBYTE num, UBYTE *regdata)
|
|
|
{
|
|
|
UWORD i;
|
|
|
|
|
|
- gI2cControllerStatus = I2C_STATUS_IDLE;
|
|
|
+// gI2cControllerStatus = I2C_STATUS_IDLE;
|
|
|
gTxLen = num+1;
|
|
|
|
|
|
gTxPacket[0] = regaddr;
|
|
@@ -70,28 +70,30 @@ char TMAG5273_WriteReg(UBYTE addr, UBYTE regaddr, UBYTE num, UBYTE *regdata)
|
|
|
}
|
|
|
|
|
|
gTxCount = DL_I2C_fillControllerTXFIFO(I2C_0_INST, &gTxPacket[0], gTxLen);
|
|
|
-
|
|
|
- if (gTxCount < gTxLen)
|
|
|
- {
|
|
|
- DL_I2C_enableInterrupt(I2C_0_INST, DL_I2C_INTERRUPT_CONTROLLER_TXFIFO_TRIGGER);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- DL_I2C_disableInterrupt(I2C_0_INST, DL_I2C_INTERRUPT_CONTROLLER_TXFIFO_TRIGGER);
|
|
|
- }
|
|
|
-
|
|
|
- gI2cControllerStatus = I2C_STATUS_TX_STARTED;
|
|
|
+//
|
|
|
+// if (gTxCount < gTxLen)
|
|
|
+// {
|
|
|
+// DL_I2C_enableInterrupt(I2C_0_INST, DL_I2C_INTERRUPT_CONTROLLER_TXFIFO_TRIGGER);
|
|
|
+// }
|
|
|
+// else
|
|
|
+// {
|
|
|
+// DL_I2C_disableInterrupt(I2C_0_INST, DL_I2C_INTERRUPT_CONTROLLER_TXFIFO_TRIGGER);
|
|
|
+// }
|
|
|
+
|
|
|
+// gI2cControllerStatus = I2C_STATUS_TX_STARTED;
|
|
|
while (!(DL_I2C_getControllerStatus(I2C_0_INST) & DL_I2C_CONTROLLER_STATUS_IDLE));
|
|
|
DL_I2C_startControllerTransfer(I2C_0_INST, addr, DL_I2C_CONTROLLER_DIRECTION_TX, gTxLen);
|
|
|
|
|
|
- while ((gI2cControllerStatus != I2C_STATUS_TX_COMPLETE) && (gI2cControllerStatus != I2C_STATUS_ERROR))
|
|
|
- {
|
|
|
- __WFE();
|
|
|
- }
|
|
|
+// while ((gI2cControllerStatus != I2C_STATUS_TX_COMPLETE) && (gI2cControllerStatus != I2C_STATUS_ERROR))
|
|
|
+// {
|
|
|
+// __WFE();
|
|
|
+// }
|
|
|
|
|
|
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));
|
|
|
+
|
|
|
+ DL_I2C_flushControllerTXFIFO(I2C_0_INST);
|
|
|
delay_cycles(1000);
|
|
|
|
|
|
return 0;
|
|
@@ -102,34 +104,37 @@ char TMAG5273_ReadData(UBYTE addr, UBYTE regaddr, UBYTE num, UBYTE* Read)
|
|
|
UBYTE data[2], i;
|
|
|
data[0] = regaddr;
|
|
|
|
|
|
- gI2cControllerStatus = I2C_STATUS_IDLE;
|
|
|
+// gI2cControllerStatus = I2C_STATUS_IDLE;
|
|
|
DL_I2C_fillControllerTXFIFO(I2C_0_INST, &data[0], 1);
|
|
|
- DL_I2C_disableInterrupt(I2C_0_INST, DL_I2C_INTERRUPT_CONTROLLER_TXFIFO_TRIGGER);
|
|
|
- gI2cControllerStatus = I2C_STATUS_TX_STARTED;
|
|
|
+// DL_I2C_disableInterrupt(I2C_0_INST, DL_I2C_INTERRUPT_CONTROLLER_TXFIFO_TRIGGER);
|
|
|
+// gI2cControllerStatus = I2C_STATUS_TX_STARTED;
|
|
|
while (!(DL_I2C_getControllerStatus(I2C_0_INST) & DL_I2C_CONTROLLER_STATUS_IDLE));
|
|
|
DL_I2C_startControllerTransfer(I2C_0_INST, addr, DL_I2C_CONTROLLER_DIRECTION_TX, 1);
|
|
|
- while ((gI2cControllerStatus != I2C_STATUS_TX_COMPLETE) && (gI2cControllerStatus != I2C_STATUS_ERROR))
|
|
|
- {
|
|
|
- __WFE();
|
|
|
- }
|
|
|
+// while ((gI2cControllerStatus != I2C_STATUS_TX_COMPLETE) && (gI2cControllerStatus != I2C_STATUS_ERROR))
|
|
|
+// {
|
|
|
+// __WFE();
|
|
|
+// }
|
|
|
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);
|
|
|
+ DL_I2C_flushControllerTXFIFO(I2C_0_INST);
|
|
|
|
|
|
gRxLen = num;
|
|
|
gRxCount = 0;
|
|
|
- gI2cControllerStatus = I2C_STATUS_RX_STARTED;
|
|
|
+// gI2cControllerStatus = I2C_STATUS_RX_STARTED;
|
|
|
DL_I2C_startControllerTransfer(I2C_0_INST, addr, DL_I2C_CONTROLLER_DIRECTION_RX, gRxLen);
|
|
|
- while (gI2cControllerStatus != I2C_STATUS_RX_COMPLETE)
|
|
|
- {
|
|
|
- __WFE();
|
|
|
- }
|
|
|
- while (DL_I2C_getControllerStatus(I2C_0_INST) & DL_I2C_CONTROLLER_STATUS_BUSY_BUS);
|
|
|
+// while (gI2cControllerStatus != I2C_STATUS_RX_COMPLETE)
|
|
|
+// {
|
|
|
+// __WFE();
|
|
|
+// }
|
|
|
+// while (DL_I2C_getControllerStatus(I2C_0_INST) & DL_I2C_CONTROLLER_STATUS_BUSY_BUS);
|
|
|
|
|
|
for(i=0; i<num; i++)
|
|
|
{
|
|
|
- Read[i] = gRxPacket[i];
|
|
|
+ while (DL_I2C_isControllerRXFIFOEmpty(I2C_0_INST));
|
|
|
+// Read[i] = gRxPacket[i];
|
|
|
+ Read[i] = DL_I2C_receiveControllerData(I2C_0_INST);
|
|
|
}
|
|
|
|
|
|
return 0;
|