void I2C_READ(){
/*等待 I2C 进入空闲状态*/
while (!(
DL_I2C_getControllerStatus (I2C_INST)和 DL_I2C_CONTROL_STATUS_IDLE)
;
/*增加传输之间的延迟*/
delay_cycles (1000);
/*发送读取请求至目标方*/
DL_I2C_startControllerTransfer (I2C_INST、I2C_TARGET_ADDRESS、
DL_I2C_CONTROLLER_DIRECTION_RX、I2C_RX_packet_SIZE);
/*
*接收来自目标的所有字节。 如果不是所有字节、LED 将保持高电平
*已收到
*/
for (uint8_t i = 0;I < I2C_RX_packet_size;I++){
while (DL_I2C_isControllerRXFIFOEMty (I2C_INST))
;
gRxPacket[i]= DL_I2C_receiveControllerData (I2C_INST);
}
}
/*
*用数据填充 FIFO。 本示例发送的最大值为4个字节、因为
*不处理 FIFO 已满的情况
*/
DL_I2C_fillControllerTXFIFO (I2C_INST、&gTxPacket [0]、I2C_TX_packet_size);
/*等待 I2C 进入空闲状态*/
while (!(
DL_I2C_getControllerStatus (I2C_INST)和 DL_I2C_CONTROL_STATUS_IDLE)
;
/*将数据包发送到控制器。
*此功能将自动发送"开始+停止"。
*/
DL_I2C_startControllerTransfer (I2C_INST、I2C_TARGET_ADDRESS、
DL_I2C_CONTROL_DIRECTION_TX、I2C_TX_packet_size);
/*轮询直到控制器写入所有字节*/
while (DL_I2C_getControllerStatus (I2C_INST)和
DL_I2C_CONTROL_STATUS_BUS_BUS)
;
/*存在错误时的陷阱*/
如果(DL_I2C_getControllerStatus (I2C_INST)和
DL_I2C_CONTROL_STATUS_ERROR){
/*如果出现错误,LED 将保持高电平*/
__BKPT (0);
}
}