CPAL库本身就是源码,自带范例。我觉得除了例子之外,关键还要理解库的内部操作,才能用得好。简单的库调用是这样的:
BOOLEAN Chip_Read(CPAL_DevTypeDef I2Cx, INT8U byChipAddr, INT8U byPtr, INT8U *pbyData, INT8U byLen)
{
CPAL_InitTypeDef* pCPAL = I2C_DevStructures[I2Cx];
pCPAL->CPAL_ProgModel = CPAL_PROGMODEL_DMA;
pCPAL->pCPAL_TransferRx = &(I2C_RxTransfer[I2Cx]);
pCPAL->pCPAL_TransferRx->wNumData = (INT32U)byLen;
pCPAL->pCPAL_TransferRx->pbBuffer = pbyData;
pCPAL->pCPAL_TransferRx->wAddr1 = (INT32U)byChipAddr;
pCPAL->pCPAL_TransferRx->wAddr2 = (INT32U)byPtr;
if(CPAL_PASS != CPAL_I2C_Read(pCPAL)){
return FALSE;
}
WaitForI2CReady(pCPAL);
if(CPAL_STATE_ERROR == GetMyI2CState(I2Cx)){
return FALSE;
}
return TRUE;
}
|