在线时间3 小时
UID3684670
注册时间2020-11-18
NXP金币0
该用户从未签到
新手上路
- 积分
- 34
- 最后登录
- 2021-1-22
|
楼主 |
发表于 2020-12-1 09:30:16
|
显示全部楼层
void I2CWriteData(uint16_t start_e2paddr, uint16_t start_paraddr, uint8_t num)
{
uint8_t read_val;
uint8_t i;
uint16_t chktmp = 0xFFFF;
//先对结构体清零操作
memset(&masterXfer, 0, sizeof(masterXfer));
/* subAddress = 0x01, data = g_master_txBuff - write to slave.
start + slaveaddress(w) + subAddress + length of data buffer + data buffer + stop*/
uint8_t deviceAddress = 0x01U;
masterXfer.slaveAddress = I2C_MASTER_SLAVE_ADDR_7BIT;
masterXfer.direction = kI2C_Write;
masterXfer.subaddress = (uint32_t)deviceAddress; //start_e2paddr
masterXfer.subaddressSize = 1;
masterXfer.data = g_master_txBuff; //
masterXfer.dataSize = I2C_DATA_LENGTH;
masterXfer.flags = kI2C_TransferDefaultFlag;
I2C_MasterTransferBlocking(I2C0, &masterXfer);
}
/* FUNCTION ************************************************************************************************************
*
* Function Name : I2CWriteData
* Description :
*
* END ****************************************************************************************************************/
uint8_t I2CReadData(uint16_t start_e2paddr, uint16_t start_paraddr, uint8_t num)
{
uint8_t read_val;
uint8_t i;
uint16_t chktmp = 0xFFFF;
/* Wait until the slave is ready for transmit, wait time depend on user's case.
Slave devices that need some time to process received byte or are not ready yet to
send the next byte, can pull the clock low to signal to the master that it should wait.*/
for (uint32_t i = 0U; i < WAIT_TIME; i++)
{
__NOP();
}
/* subAddress = 0x01, data = g_master_rxBuff - read from slave.
start + slaveaddress(w) + subAddress + repeated start + slaveaddress(r) + rx data buffer + stop */
masterXfer.slaveAddress = I2C_MASTER_SLAVE_ADDR_7BIT;
masterXfer.direction = kI2C_Read;
masterXfer.subaddress = 0x01U;
masterXfer.subaddressSize = 1;
masterXfer.data = g_master_rxBuff;
masterXfer.dataSize = I2C_DATA_LENGTH - 1U;
masterXfer.flags = kI2C_TransferDefaultFlag;
I2C_MasterTransferBlocking(I2C0, &masterXfer);
//I2C_MasterReadBlocking(I2C0, g_master_rxBuff, num, read_iic_flag);
retrun(0);
}
|
|