55 lines
1.5 KiB
C
55 lines
1.5 KiB
C
#include "fsl_i2c.h"
|
|
#include "pixart_pah8001ei.h"
|
|
|
|
#define PAH8001_SLAVE_ADDRESS 0x33
|
|
#define PAH8001_I2C_INSTANCE I2C0
|
|
|
|
pah_ret_t pah8001_impl_init(void *pdev) {
|
|
/* I2C initialization by tool. */
|
|
|
|
return PAH_RET_OK;
|
|
}
|
|
|
|
pah_ret_t pah8001_impl_write(void *pdev, uint8_t reg, uint8_t *value, uint16_t len) {
|
|
i2c_master_transfer_t xfer = {
|
|
.slaveAddress = PAH8001_SLAVE_ADDRESS,
|
|
.subaddress = reg,
|
|
.subaddressSize = 1U,
|
|
.direction = kI2C_Write,
|
|
.data = value,
|
|
.dataSize = len,
|
|
.flags = kI2C_TransferDefaultFlag,
|
|
};
|
|
|
|
if (I2C_MasterTransferBlocking(PAH8001_I2C_INSTANCE, &xfer) != kStatus_Success) {
|
|
return PAH_RET_FAIL;
|
|
}
|
|
|
|
if(I2C_MasterStop(PAH8001_I2C_INSTANCE) != kStatus_Success) {
|
|
return PAH_RET_FAIL;
|
|
}
|
|
|
|
return PAH_RET_OK;
|
|
}
|
|
|
|
pah_ret_t pah8001_impl_read(void *pdev, uint8_t reg, uint8_t *value, uint16_t len) {
|
|
i2c_master_transfer_t xfer = {
|
|
.slaveAddress = PAH8001_SLAVE_ADDRESS,
|
|
.subaddress = reg,
|
|
.subaddressSize = 1U,
|
|
.direction = kI2C_Read,
|
|
.data = value,
|
|
.dataSize = len,
|
|
.flags = kI2C_TransferDefaultFlag,
|
|
};
|
|
|
|
if (I2C_MasterTransferBlocking(I2C0, &xfer) != kStatus_Success) {
|
|
return PAH_RET_FAIL;
|
|
}
|
|
|
|
if(I2C_MasterStop(PAH8001_I2C_INSTANCE) != kStatus_Success) {
|
|
return PAH_RET_FAIL;
|
|
}
|
|
|
|
return PAH_RET_OK;
|
|
} |