i2c call back is not getting called

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

i2c call back is not getting called

813件の閲覧回数
sushmasan
Contributor II

Hello Team,

I am working with a DAC module (MCP47FEB21A0) that is interfaced with an LPC55S69 over I²C.

I observed that I2C_MasterTransferBlocking() works correctly, but when I use I2C_MasterTransferNonBlocking(), the I²C callback is never invoked.

I2C_MasterTransferNonBlocking() is returning kStatus_Success.

For reference, I2C_MasterTransferCreateHandle() is called once during I²C initialization.

Could someone please explain why the I²C callback is not getting called when using I2C_MasterTransferNonBlocking()?

Regards,
Santhosh

 

0 件の賞賛
返信
8 返答(返信)

622件の閲覧回数
sushmasan
Contributor II

Hi @Harry_Zhang ,

I even tried it,

uint8_t txData[3] = {0};

txData[0] = (uint8_t) (reg_addr << 3);

txData[1] = (uint8_t)(data >> 8); /* Data high byte */

txData[2] = (uint8_t)(data & 0xFFU); /* Data low byte */

 

masterXfer.data = txData;

masterXfer.dataSize = 3; /* 3 bytes total */

 

I have some data which is of 2 bytes, so after the adding reg addr it becomes 3 bytes.

Still I²C callback is not getting called when I use I2C_MasterTransferNonBlocking().

 

Regards,

San

 

0 件の賞賛
返信

775件の閲覧回数
Harry_Zhang
NXP Employee
NXP Employee

Hi @sushmasan 

I think you can refer to the  lpcxpresso55s69_lpc_i2c_interrupt_b2b_transfer_master_cm33_core0 SDK demo.

Harry_Zhang_0-1767855362914.png

BR

Harry

0 件の賞賛
返信

754件の閲覧回数
sushmasan
Contributor II

Hi @Harry_Zhang ,

Thanks for your response.

I have other sensor modules that are working with non-blocking calls.

I am using a BMP390 sensor, and the I²C communication works fine with non-blocking calls. For example, if one of the register addresses is 0x01, I assign the subaddress as shown below:

masterXfer.subaddress = (uint32_t)0x01;


However, for the DAC (MCP47FEB21A0) module, the subaddress is assigned differently:

uint8_t subAddress;
subAddress = (uint8_t)(reg_addr << 3); // Based on the MCP47FEB21A0 datasheet, the register address must be shifted left by 3
masterXfer.subaddress = (uint32_t)subAddress;

Is it going to make any difference?

Regards,
San

0 件の賞賛
返信

661件の閲覧回数
Harry_Zhang
NXP Employee
NXP Employee

Hi @sushmasan 

I think you can try to set subaddressSize = 0 and put the DAC’s command byte(s) and data bytes directly in masterXfer.data, then start a write transfer.

BR

Harry

0 件の賞賛
返信

583件の閲覧回数
sushmasan
Contributor II

Yesterday I replied to your message, but mistakenly I did a reply to the topic. I am not sure whether you have noticed it or not, that's why responding to your message again here.

 

Hi @Harry_Zhang ,

I even tried it,

uint8_t txData[3] = {0};

txData[0] = (uint8_t) (reg_addr << 3);

txData[1] = (uint8_t)(data >> 8); /* Data high byte */

txData[2] = (uint8_t)(data & 0xFFU); /* Data low byte */

 

masterXfer.data = txData;

masterXfer.dataSize = 3; /* 3 bytes total */

 

I have some data which is of 2 bytes, so after the adding reg addr it becomes 3 bytes.

Still I²C callback is not getting called when I use I2C_MasterTransferNonBlocking().

 

Regards,

San

0 件の賞賛
返信

310件の閲覧回数
Harry_Zhang
NXP Employee
NXP Employee

Hi  @sushmasan 

Can you share the your code so I can take a look?

BR

Harry

0 件の賞賛
返信

271件の閲覧回数
sushmasan
Contributor II

Hi @Harry_Zhang ,

Please find the code snippet for your reference,

#define I2C5_BASE                                (0x40096000u)
#define I2C5_MASTER_BASE    (I2C5_BASE)
#define I2C5_MASTER_CLOCK_FREQUENCY (12000000)
#define I2C5_MASTER ((I2C_Type *) I2C5_MASTER_BASE)

static void i2c_master_callback(I2C_Type *base, i2c_master_handle_t *handle, status_t status, void *userData)
{		
	/* Signal transfer success when received success status. */
	if (status == kStatus_Success)
	{
		// Successfully completed data transfer
		g_MasterCompletionFlag = true;
		g_i2cCallBackStatus = kStatus_Success;
	}
	/* Signal transfer failure when received failure status. */
	else
	{
		if(status == kStatus_I2C_Nak)
		{			
			g_i2cCallBackStatus = kStatus_I2C_Nak;
		}
		else if (status == kStatus_I2C_Addr_Nak)
		{		
			g_i2cCallBackStatus = kStatus_I2C_Addr_Nak;
		}
		else if (status == kStatus_I2C_ArbitrationLost)
		{		
			g_i2cCallBackStatus = kStatus_I2C_ArbitrationLost;
		}
		else
		{		
			g_i2cCallBackStatus = false;
		}
	}

	return;
}

bool i2c_readwrite(i2c_master_transfer_t *masterXfer)
{
	status_t status = kStatus_Fail;
	status_t finalStatus = kStatus_Fail;
	bool retVal = false;
	
	g_MasterCompletionFlag = false;
	g_i2cCallBackStatus = kStatus_Fail;

	/* Send master non-blocking data to slave (Performing the write operation) */
	/* Allowing the CPU to continue executing other tasks in parallel while the I2C transfer is being handled in the background. */
	status = I2C_MasterTransferNonBlocking(I2C5_MASTER, &g_m_handle, masterXfer);

	PRINTF("(%s() => Wait for the data transfer to slave completion. status:%d \r\n",__func__,status);

	/*  Wait for transfer completed. */
	while (!g_MasterCompletionFlag)
	{
	}
	g_MasterCompletionFlag = false;

	// Driver-level error (could not start transfer)
	if(status == kStatus_Success)
		retVal = true;
	// Transfer completed
	else
		retVal = false;
	
	g_i2cCallBackStatus = kStatus_Fail;

	return retVal;
}

// THIS IS WITH I2C NON BLOCKING CALL -> CALL BACK IS NOT GETTING INVOKED.
bool dac_write_reg(uint8_t reg_addr, uint16_t data)
{
	/* The DAC needs 1 address byte + 2 data bytes. */
	static i2c_master_transfer_t masterXfer = {0};
	static uint8_t txData[3] = {0};	
	bool retVal = false;
	bool write_status = false;

	memset(&masterXfer, 0, sizeof(masterXfer));
	
	txData[0] = (uint8_t) (reg_addr << 3); 
	txData[1] = (uint8_t)(data >> 8);     
	txData[2] = (uint8_t)(data & 0xFFU);  

	masterXfer.slaveAddress   = 0x60;     
	masterXfer.direction      = kI2C_Write;
	masterXfer.subaddress     = 0;
	masterXfer.subaddressSize = 0;                      
	masterXfer.data           = txData;
	masterXfer.dataSize       = 3;          
	masterXfer.flags          = kI2C_TransferDefaultFlag; 

	write_status = i2c_readwrite(&masterXfer);
	if(true == write_status)
	{
		PRINTF("(%s) -> I2C write PASS @line:%d \r\n",__func__,__LINE__);

		retVal = true;
	}
	else
	{
		PRINTF("(%s) -> I2C write failed with status %d \r\n",__func__,write_status);

		retVal = false;
	}
	
	return retVal;
}


// THIS IS WITH I2C BLOCKING CALL -> WORKING FINE
int8_t dac_write_reg(uint8_t reg_addr, uint16_t data)
{
	/* The DAC needs 1 address byte + 2 data bytes. */
	i2c_master_transfer_t masterXfer;
	uint8_t txData[2];
	uint8_t subAddress;
	
	memset(&masterXfer, 0, sizeof(masterXfer));

	subAddress = (uint8_t)(reg_addr << 3); /* DAC  reg  byte */
	txData[0] = (uint8_t)(data >> 8);     /* Data high byte */
	txData[1] = (uint8_t)(data & 0xFFU);  /* Data low  byte */

	masterXfer.slaveAddress   = 0x60;      
	masterXfer.direction      = kI2C_Write;
	masterXfer.subaddress     = (uint32_t) subAddress;
	masterXfer.subaddressSize = 1;                      
	masterXfer.data           = txData;
	masterXfer.dataSize       = 2;          
	masterXfer.flags          = kI2C_TransferDefaultFlag; 

	status_t status = I2C_MasterTransferBlocking(I2C5_MASTER, &masterXfer);
	if (status == kStatus_Success) {
		PRINTF("(%s) -> dac_write_reg PASS @line:%d \r\n",__func__,__LINE__);

		status = 1;
	}
	else
	{
		PRINTF("(%s) -> I2C_MasterTransferBlocking() failed with status %d \r\n",__func__,status);

		status = -1;
	}

	return status;
}


int main()
{
	I2C_MasterGetDefaultConfig(&masterConfig);
	
	I2C_MasterInit(I2C5_MASTER, &masterConfig, I2C5_MASTER_CLOCK_FREQUENCY);
	
	I2C_MasterTransferCreateHandle(I2C5_MASTER, &g_m_handle, i2c_master_callback, NULL);

	dac_write_reg(0x08, 0x0001);
}
0 件の賞賛
返信

93件の閲覧回数
Harry_Zhang
NXP Employee
NXP Employee

Hi @sushmasan 

i have reviewed your code. 

But I'm sorry, I couldn't find a clear error. I think you can also use an oscilloscope to check if the data transmission is correct and if the returned data is correct.

BR

Harry

0 件の賞賛
返信
%3CLINGO-SUB%20id%3D%22lingo-sub-2289725%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3Ei2c%E3%82%B3%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AF%E3%81%8C%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2289725%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%81%E3%83%81%E3%83%BC%E3%83%A0%E3%81%AE%E7%9A%86%E3%81%95%E3%82%93%3C%2FP%3E%3CP%3E%E7%A7%81%E3%81%AF%E3%80%81I%C2%B2C%20%E7%B5%8C%E7%94%B1%E3%81%A7%20LPC55S69%20%E3%81%A8%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9%E3%81%95%E3%82%8C%E3%81%9F%20DAC%20%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%20(MCP47FEB21A0)%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3EI2C_MasterTransferBlocking()%20%E3%81%AF%E6%AD%A3%E5%B8%B8%E3%81%AB%E5%8B%95%E4%BD%9C%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%81%8C%E3%80%81I2C_MasterTransferNonBlocking()%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E3%81%A8%E3%80%81I%C2%B2C%20%E3%82%B3%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AF%E3%81%8C%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%95%E3%82%8C%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%3C%2FP%3E%3CP%3EI2C_MasterTransferNonBlocking()%20%E3%81%AF%20kStatus_Success%20%E3%82%92%E8%BF%94%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%E5%8F%82%E8%80%83%E3%81%BE%E3%81%A7%E3%81%AB%E3%80%81I2C_MasterTransferCreateHandle()%20%E3%81%AF%20I%C2%B2C%20%E5%88%9D%E6%9C%9F%E5%8C%96%E4%B8%AD%E3%81%AB%201%20%E5%9B%9E%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3EI2C_MasterTransferNonBlocking()%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%A8%E3%81%8D%E3%81%AB%20I%C2%B2C%20%E3%82%B3%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AF%E3%81%8C%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%95%E3%82%8C%E3%81%AA%E3%81%84%E7%90%86%E7%94%B1%E3%82%92%E8%AA%AC%E6%98%8E%E3%81%97%E3%81%A6%E3%81%84%E3%81%9F%E3%81%A0%E3%81%91%E3%81%BE%E3%81%99%E3%81%8B%3F%3C%2FP%3E%3CP%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%84%E3%81%9F%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3CBR%20%2F%3E%E3%82%B5%E3%83%B3%E3%83%88%E3%82%B7%E3%83%A5%3C%2FP%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2289917%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20i2c%20call%20back%20is%20not%20getting%20called%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2289917%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F221349%22%20target%3D%22_blank%22%3E%40sushmasan%3C%2FA%3E%3C%2FP%3E%0A%3CP%3Elpcxpresso55s69_lpc_i2c_interrupt_b2b_transfer_master_cm33_core0%20SDK%20%E3%83%87%E3%83%A2%E3%82%92%E5%8F%82%E7%85%A7%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%A8%E6%80%9D%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Harry_Zhang_0-1767855362914.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Harry_Zhang_0-1767855362914.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Harry_Zhang_0-1767855362914.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Harry_Zhang_0-1767855362914.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Harry_Zhang_0-1767855362914.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Harry_Zhang_0-1767855362914.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Harry_Zhang_0-1767855362914.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Harry_Zhang_0-1767855362914.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Harry_Zhang_0-1767855362914.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F372099i81F6BE7811F21EFC%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22Harry_Zhang_0-1767855362914.png%22%20alt%3D%22Harry_Zhang_0-1767855362914.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3EBR%3C%2FP%3E%0A%3CP%3E%E3%83%8F%E3%83%AA%E3%83%BC%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2290313%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20i2c%20call%20back%20is%20not%20getting%20called%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2290313%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F229957%22%20target%3D%22_blank%22%3E%40Harry_Zhang%3C%2FA%3E%20%E3%80%81%3C%2FP%3E%3CP%3E%E3%81%94%E5%9B%9E%E7%AD%94%E3%81%82%E3%82%8A%E3%81%8C%E3%81%A8%E3%81%86%E3%81%94%E3%81%96%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%E9%9D%9E%E3%83%96%E3%83%AD%E3%83%83%E3%82%AD%E3%83%B3%E3%82%B0%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%97%E3%81%A7%E5%8B%95%E4%BD%9C%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E4%BB%96%E3%81%AE%E3%82%BB%E3%83%B3%E3%82%B5%20%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%E7%A7%81%E3%81%AF%20BMP390%20%E3%82%BB%E3%83%B3%E3%82%B5%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%8A%E3%82%8A%E3%80%81I%C2%B2C%20%E9%80%9A%E4%BF%A1%E3%81%AF%E9%9D%9E%E3%83%96%E3%83%AD%E3%83%83%E3%82%AD%E3%83%B3%E3%82%B0%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%97%E3%81%A7%E6%AD%A3%E5%B8%B8%E3%81%AB%E5%8B%95%E4%BD%9C%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%E3%81%9F%E3%81%A8%E3%81%88%E3%81%B0%E3%80%81%E3%83%AC%E3%82%B8%E3%82%B9%E3%82%BF%20%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%81%AE%201%20%E3%81%A4%E3%81%8C%200x01%20%E3%81%AE%E5%A0%B4%E5%90%88%E3%80%81%E3%82%B5%E3%83%96%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%82%92%E6%AC%A1%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E5%89%B2%E3%82%8A%E5%BD%93%E3%81%A6%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BCXfer.%E3%82%B5%E3%83%96%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%20%3D%20(uint32_t)0x01%3B%3C%2FP%3E%3CP%3E%3CBR%20%2F%3E%E3%81%9F%E3%81%A0%E3%81%97%E3%80%81DAC%20(MCP47FEB21A0)%20%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%81%AE%E5%A0%B4%E5%90%88%E3%80%81%E3%82%B5%E3%83%96%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%81%AE%E5%89%B2%E3%82%8A%E5%BD%93%E3%81%A6%E3%81%AF%E7%95%B0%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3Euint8_t%20%E3%82%B5%E3%83%96%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%3B%3CBR%20%2F%3E%20subAddress%20%3D%20(uint8_t)(reg_addr%20%26lt%3B%26lt%3B%203)%3B%20%2F%2F%20MCP47FEB21A0%E3%83%87%E3%83%BC%E3%82%BF%E3%82%B7%E3%83%BC%E3%83%88%E3%81%AB%E3%82%88%E3%82%8B%E3%81%A8%E3%80%81%E3%83%AC%E3%82%B8%E3%82%B9%E3%82%BF%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%81%AF3%E3%81%A0%E3%81%91%E5%B7%A6%E3%81%AB%E3%82%B7%E3%83%95%E3%83%88%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8B%E3%80%82%3CBR%20%2F%3E%20masterXfer.subaddress%20%3D%20(uint32_t)subAddress%3B%3CBR%20%2F%3E%3CBR%20%2F%3E%E4%BD%95%E3%81%8B%E9%81%95%E3%81%84%E3%81%AF%E3%81%82%E3%82%8B%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F%3C%2FP%3E%3CP%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%84%E3%81%9F%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3CBR%20%2F%3E%E3%82%B5%E3%83%B3%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2291427%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20i2c%20call%20back%20is%20not%20getting%20called%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2291427%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F221349%22%20target%3D%22_blank%22%3E%40sushmasan%3C%2FA%3E%3C%2FP%3E%0A%3CP%3EsubaddressSize%20%3D%200%20%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%97%E3%81%A6%E3%80%81DAC%E3%81%AE%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%90%E3%82%A4%E3%83%88%E3%81%A8%E3%83%87%E3%83%BC%E3%82%BF%E3%83%90%E3%82%A4%E3%83%88%E3%82%92masterXfer.data%E3%81%AB%E7%9B%B4%E6%8E%A5%E9%85%8D%E7%BD%AE%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B%E3%81%A8%E3%81%84%E3%81%84%E3%81%A8%E6%80%9D%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%E6%AC%A1%E3%81%AB%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%81%BF%E8%BB%A2%E9%80%81%E3%82%92%E9%96%8B%E5%A7%8B%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3EBR%3C%2FP%3E%0A%3CP%3E%E3%83%8F%E3%83%AA%E3%83%BC%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2291948%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20i2c%20call%20back%20is%20not%20getting%20called%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2291948%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F229957%22%20target%3D%22_blank%22%3E%40Harry_Zhang%3C%2FA%3E%20%E3%80%81%3C%2FP%3E%3CP%3E%E7%A7%81%E3%82%82%E8%A9%A6%E3%81%97%E3%81%A6%E3%81%BF%E3%81%BE%E3%81%97%E3%81%9F%E3%81%8C%E3%80%81%3C%2FP%3E%3CP%3E%3CSPAN%3Euint8_t%20txData%5B3%5D%20%3D%20%7B0%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3CDIV%3E%3CDIV%3E%3CP%3E%3CSPAN%3EtxData%5B0%5D%20%3D%20(%3C%2FSPAN%3E%20%3CSPAN%3Euint8_t%3C%2FSPAN%3E%20%3CSPAN%3E)%20(reg_addr%20%26lt%3B%26lt%3B%203)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3EtxData%5B1%5D%20%3D%20(%3C%2FSPAN%3E%20%3CSPAN%3Euint8_t%3C%2FSPAN%3E%20%3CSPAN%3E)(data%20%26gt%3B%26gt%3B%208)%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F*%20%E3%83%87%E3%83%BC%E3%82%BF%E4%B8%8A%E4%BD%8D%E3%83%90%E3%82%A4%E3%83%88%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3EtxData%5B2%5D%20%3D%20(%3C%2FSPAN%3E%20%3CSPAN%3Euint8_t%3C%2FSPAN%3E%20%3CSPAN%3E)(data%20%26amp%3B%200xFFU)%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F*%20%E3%83%87%E3%83%BC%E3%82%BF%E4%B8%8B%E4%BD%8D%E3%83%90%E3%82%A4%E3%83%88%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3C%2FDIV%3E%3C%2FDIV%3E%3CDIV%3E%3CDIV%3E%3CP%3E%3CSPAN%3E%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC%3C%2FSPAN%3E%3CSPAN%3EXfer.data%3C%2FSPAN%3E%20%3CSPAN%3E%3D%20txData%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3EmasterXfer.%3C%2FSPAN%3E%20%3CSPAN%3EdataSize%3C%2FSPAN%3E%20%3CSPAN%3E%3D%203%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F*%20%E5%90%88%E8%A8%883%E3%83%90%E3%82%A4%E3%83%88%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3E2%20%E3%83%90%E3%82%A4%E3%83%88%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%81%8C%E3%81%82%E3%82%8B%E3%81%9F%E3%82%81%E3%80%81reg%20addr%20%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B%E3%81%A8%203%20%E3%83%90%E3%82%A4%E3%83%88%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3EI2C_MasterTransferNonBlocking()%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E3%81%A8%E3%80%81%E4%BE%9D%E7%84%B6%E3%81%A8%E3%81%97%E3%81%A6%20I%C2%B2C%20%E3%82%B3%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AF%E3%81%8C%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%95%E3%82%8C%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%84%E3%81%9F%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%E3%82%B5%E3%83%B3%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2292690%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20i2c%20call%20back%20is%20not%20getting%20called%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2292690%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E6%98%A8%E6%97%A5%E3%81%82%E3%81%AA%E3%81%9F%E3%81%AE%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%81%AB%E8%BF%94%E4%BF%A1%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%81%8C%E3%80%81%E8%AA%A4%E3%81%A3%E3%81%A6%E3%83%88%E3%83%94%E3%83%83%E3%82%AF%E3%81%AB%E8%BF%94%E4%BF%A1%E3%81%97%E3%81%A6%E3%81%97%E3%81%BE%E3%81%84%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%E3%81%82%E3%81%AA%E3%81%9F%E3%81%8C%E6%B0%97%E3%81%A5%E3%81%84%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E3%82%8F%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%E3%81%8C%E3%80%81%E3%81%93%E3%81%93%E3%81%A7%E5%86%8D%E5%BA%A6%E3%81%82%E3%81%AA%E3%81%9F%E3%81%AE%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8%E3%81%AB%E8%BF%94%E4%BF%A1%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F229957%22%20target%3D%22_blank%22%3E%40Harry_Zhang%3C%2FA%3E%20%E3%80%81%3C%2FP%3E%3CP%3E%E7%A7%81%E3%82%82%E8%A9%A6%E3%81%97%E3%81%A6%E3%81%BF%E3%81%BE%E3%81%97%E3%81%9F%E3%81%8C%E3%80%81%3C%2FP%3E%3CP%3E%3CSPAN%3Euint8_t%20txData%5B3%5D%20%3D%20%7B0%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3CDIV%3E%3CDIV%3E%3CP%3E%3CSPAN%3EtxData%5B0%5D%20%3D%20(%3C%2FSPAN%3E%20%3CSPAN%3Euint8_t%3C%2FSPAN%3E%20%3CSPAN%3E)%20(reg_addr%20%26lt%3B%26lt%3B%203)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3EtxData%5B1%5D%20%3D%20(%3C%2FSPAN%3E%20%3CSPAN%3Euint8_t%3C%2FSPAN%3E%20%3CSPAN%3E)(data%20%26gt%3B%26gt%3B%208)%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F*%20%E3%83%87%E3%83%BC%E3%82%BF%E4%B8%8A%E4%BD%8D%E3%83%90%E3%82%A4%E3%83%88%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3EtxData%5B2%5D%20%3D%20(%3C%2FSPAN%3E%20%3CSPAN%3Euint8_t%3C%2FSPAN%3E%20%3CSPAN%3E)(data%20%26amp%3B%200xFFU)%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F*%20%E3%83%87%E3%83%BC%E3%82%BF%E4%B8%8B%E4%BD%8D%E3%83%90%E3%82%A4%E3%83%88%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3C%2FDIV%3E%3C%2FDIV%3E%3CDIV%3E%3CDIV%3E%3CP%3E%3CSPAN%3E%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC%3C%2FSPAN%3E%3CSPAN%3EXfer.data%3C%2FSPAN%3E%20%3CSPAN%3E%3D%20txData%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3EmasterXfer.%3C%2FSPAN%3E%20%3CSPAN%3EdataSize%3C%2FSPAN%3E%20%3CSPAN%3E%3D%203%3B%3C%2FSPAN%3E%20%3CSPAN%3E%2F*%20%E5%90%88%E8%A8%883%E3%83%90%E3%82%A4%E3%83%88%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3E2%20%E3%83%90%E3%82%A4%E3%83%88%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%81%8C%E3%81%82%E3%82%8B%E3%81%9F%E3%82%81%E3%80%81reg%20addr%20%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B%E3%81%A8%203%20%E3%83%90%E3%82%A4%E3%83%88%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3EI2C_MasterTransferNonBlocking()%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E3%81%A8%E3%80%81%E4%BE%9D%E7%84%B6%E3%81%A8%E3%81%97%E3%81%A6%20I%C2%B2C%20%E3%82%B3%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AF%E3%81%8C%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%95%E3%82%8C%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSPAN%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%84%E3%81%9F%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%3E%E3%82%B5%E3%83%B3%3C%2FSPAN%3E%3C%2FP%3E%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2295571%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20i2c%20call%20back%20is%20not%20getting%20called%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2295571%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F221349%22%20target%3D%22_blank%22%3E%40sushmasan%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%E7%A2%BA%E8%AA%8D%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E5%85%B1%E6%9C%89%E3%81%97%E3%81%A6%E3%81%84%E3%81%9F%E3%81%A0%E3%81%91%E3%81%BE%E3%81%99%E3%81%8B%3F%3C%2FP%3E%0A%3CP%3EBR%3C%2FP%3E%0A%3CP%3E%E3%83%8F%E3%83%AA%E3%83%BC%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2296081%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20i2c%20call%20back%20is%20not%20getting%20called%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2296081%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F229957%22%20target%3D%22_blank%22%3E%40Harry_Zhang%3C%2FA%3E%20%E3%80%81%3C%2FP%3E%3CP%3E%E5%8F%82%E8%80%83%E3%81%BE%E3%81%A7%E3%81%AB%E3%82%B3%E3%83%BC%E3%83%89%E3%82%B9%E3%83%8B%E3%83%9A%E3%83%83%E3%83%88%E3%82%92%E3%81%94%E8%A6%A7%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-cpp%22%3E%3CCODE%20translate%3D%22no%22%3E%23define%20I2C5_BASE%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20(0x40096000u)%0A%23define%20I2C5_MASTER_BASE%20%20%20%20(I2C5_BASE)%0A%23define%20I2C5_MASTER_CLOCK_FREQUENCY%20(12000000)%0A%23define%20I2C5_MASTER%20((I2C_Type%20*)%20I2C5_MASTER_BASE)%0A%0Astatic%20void%20i2c_master_callback(I2C_Type%20*base%2C%20i2c_master_handle_t%20*handle%2C%20status_t%20status%2C%20void%20*userData)%0A%7B%09%09%0A%09%2F*%20Signal%20transfer%20success%20when%20received%20success%20status.%20*%2F%0A%09if%20(status%20%3D%3D%20kStatus_Success)%0A%09%7B%0A%09%09%2F%2F%20Successfully%20completed%20data%20transfer%0A%09%09g_MasterCompletionFlag%20%3D%20true%3B%0A%09%09g_i2cCallBackStatus%20%3D%20kStatus_Success%3B%0A%09%7D%0A%09%2F*%20Signal%20transfer%20failure%20when%20received%20failure%20status.%20*%2F%0A%09else%0A%09%7B%0A%09%09if(status%20%3D%3D%20kStatus_I2C_Nak)%0A%09%09%7B%09%09%09%0A%09%09%09g_i2cCallBackStatus%20%3D%20kStatus_I2C_Nak%3B%0A%09%09%7D%0A%09%09else%20if%20(status%20%3D%3D%20kStatus_I2C_Addr_Nak)%0A%09%09%7B%09%09%0A%09%09%09g_i2cCallBackStatus%20%3D%20kStatus_I2C_Addr_Nak%3B%0A%09%09%7D%0A%09%09else%20if%20(status%20%3D%3D%20kStatus_I2C_ArbitrationLost)%0A%09%09%7B%09%09%0A%09%09%09g_i2cCallBackStatus%20%3D%20kStatus_I2C_ArbitrationLost%3B%0A%09%09%7D%0A%09%09else%0A%09%09%7B%09%09%0A%09%09%09g_i2cCallBackStatus%20%3D%20false%3B%0A%09%09%7D%0A%09%7D%0A%0A%09return%3B%0A%7D%0A%0Abool%20i2c_readwrite(i2c_master_transfer_t%20*masterXfer)%0A%7B%0A%09status_t%20status%20%3D%20kStatus_Fail%3B%0A%09status_t%20finalStatus%20%3D%20kStatus_Fail%3B%0A%09bool%20retVal%20%3D%20false%3B%0A%09%0A%09g_MasterCompletionFlag%20%3D%20false%3B%0A%09g_i2cCallBackStatus%20%3D%20kStatus_Fail%3B%0A%0A%09%2F*%20Send%20master%20non-blocking%20data%20to%20slave%20(Performing%20the%20write%20operation)%20*%2F%0A%09%2F*%20Allowing%20the%20CPU%20to%20continue%20executing%20other%20tasks%20in%20parallel%20while%20the%20I2C%20transfer%20is%20being%20handled%20in%20the%20background.%20*%2F%0A%09status%20%3D%20I2C_MasterTransferNonBlocking(I2C5_MASTER%2C%20%26amp%3Bg_m_handle%2C%20masterXfer)%3B%0A%0A%09PRINTF(%22(%25s()%20%3D%26gt%3B%20Wait%20for%20the%20data%20transfer%20to%20slave%20completion.%20status%3A%25d%20%5Cr%5Cn%22%2C__func__%2Cstatus)%3B%0A%0A%09%2F*%20%20Wait%20for%20transfer%20completed.%20*%2F%0A%09while%20(!g_MasterCompletionFlag)%0A%09%7B%0A%09%7D%0A%09g_MasterCompletionFlag%20%3D%20false%3B%0A%0A%09%2F%2F%20Driver-level%20error%20(could%20not%20start%20transfer)%0A%09if(status%20%3D%3D%20kStatus_Success)%0A%09%09retVal%20%3D%20true%3B%0A%09%2F%2F%20Transfer%20completed%0A%09else%0A%09%09retVal%20%3D%20false%3B%0A%09%0A%09g_i2cCallBackStatus%20%3D%20kStatus_Fail%3B%0A%0A%09return%20retVal%3B%0A%7D%0A%0A%2F%2F%20THIS%20IS%20WITH%20I2C%20NON%20BLOCKING%20CALL%20-%26gt%3B%20CALL%20BACK%20IS%20NOT%20GETTING%20INVOKED.%0Abool%20dac_write_reg(uint8_t%20reg_addr%2C%20uint16_t%20data)%0A%7B%0A%09%2F*%20The%20DAC%20needs%201%20address%20byte%20%2B%202%20data%20bytes.%20*%2F%0A%09static%20i2c_master_transfer_t%20masterXfer%20%3D%20%7B0%7D%3B%0A%09static%20uint8_t%20txData%5B3%5D%20%3D%20%7B0%7D%3B%09%0A%09bool%20retVal%20%3D%20false%3B%0A%09bool%20write_status%20%3D%20false%3B%0A%0A%09memset(%26amp%3BmasterXfer%2C%200%2C%20sizeof(masterXfer))%3B%0A%09%0A%09txData%5B0%5D%20%3D%20(uint8_t)%20(reg_addr%20%26lt%3B%26lt%3B%203)%3B%20%0A%09txData%5B1%5D%20%3D%20(uint8_t)(data%20%26gt%3B%26gt%3B%208)%3B%20%20%20%20%20%0A%09txData%5B2%5D%20%3D%20(uint8_t)(data%20%26amp%3B%200xFFU)%3B%20%20%0A%0A%09masterXfer.slaveAddress%20%20%20%3D%200x60%3B%20%20%20%20%20%0A%09masterXfer.direction%20%20%20%20%20%20%3D%20kI2C_Write%3B%0A%09masterXfer.subaddress%20%20%20%20%20%3D%200%3B%0A%09masterXfer.subaddressSize%20%3D%200%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%09masterXfer.data%20%20%20%20%20%20%20%20%20%20%20%3D%20txData%3B%0A%09masterXfer.dataSize%20%20%20%20%20%20%20%3D%203%3B%20%20%20%20%20%20%20%20%20%20%0A%09masterXfer.flags%20%20%20%20%20%20%20%20%20%20%3D%20kI2C_TransferDefaultFlag%3B%20%0A%0A%09write_status%20%3D%20i2c_readwrite(%26amp%3BmasterXfer)%3B%0A%09if(true%20%3D%3D%20write_status)%0A%09%7B%0A%09%09PRINTF(%22(%25s)%20-%26gt%3B%20I2C%20write%20PASS%20%40line%3A%25d%20%5Cr%5Cn%22%2C__func__%2C__LINE__)%3B%0A%0A%09%09retVal%20%3D%20true%3B%0A%09%7D%0A%09else%0A%09%7B%0A%09%09PRINTF(%22(%25s)%20-%26gt%3B%20I2C%20write%20failed%20with%20status%20%25d%20%5Cr%5Cn%22%2C__func__%2Cwrite_status)%3B%0A%0A%09%09retVal%20%3D%20false%3B%0A%09%7D%0A%09%0A%09return%20retVal%3B%0A%7D%0A%0A%0A%2F%2F%20THIS%20IS%20WITH%20I2C%20BLOCKING%20CALL%20-%26gt%3B%20WORKING%20FINE%0Aint8_t%20dac_write_reg(uint8_t%20reg_addr%2C%20uint16_t%20data)%0A%7B%0A%09%2F*%20The%20DAC%20needs%201%20address%20byte%20%2B%202%20data%20bytes.%20*%2F%0A%09i2c_master_transfer_t%20masterXfer%3B%0A%09uint8_t%20txData%5B2%5D%3B%0A%09uint8_t%20subAddress%3B%0A%09%0A%09memset(%26amp%3BmasterXfer%2C%200%2C%20sizeof(masterXfer))%3B%0A%0A%09subAddress%20%3D%20(uint8_t)(reg_addr%20%26lt%3B%26lt%3B%203)%3B%20%2F*%20DAC%20%20reg%20%20byte%20*%2F%0A%09txData%5B0%5D%20%3D%20(uint8_t)(data%20%26gt%3B%26gt%3B%208)%3B%20%20%20%20%20%2F*%20Data%20high%20byte%20*%2F%0A%09txData%5B1%5D%20%3D%20(uint8_t)(data%20%26amp%3B%200xFFU)%3B%20%20%2F*%20Data%20low%20%20byte%20*%2F%0A%0A%09masterXfer.slaveAddress%20%20%20%3D%200x60%3B%20%20%20%20%20%20%0A%09masterXfer.direction%20%20%20%20%20%20%3D%20kI2C_Write%3B%0A%09masterXfer.subaddress%20%20%20%20%20%3D%20(uint32_t)%20subAddress%3B%0A%09masterXfer.subaddressSize%20%3D%201%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%09masterXfer.data%20%20%20%20%20%20%20%20%20%20%20%3D%20txData%3B%0A%09masterXfer.dataSize%20%20%20%20%20%20%20%3D%202%3B%20%20%20%20%20%20%20%20%20%20%0A%09masterXfer.flags%20%20%20%20%20%20%20%20%20%20%3D%20kI2C_TransferDefaultFlag%3B%20%0A%0A%09status_t%20status%20%3D%20I2C_MasterTransferBlocking(I2C5_MASTER%2C%20%26amp%3BmasterXfer)%3B%0A%09if%20(status%20%3D%3D%20kStatus_Success)%20%7B%0A%09%09PRINTF(%22(%25s)%20-%26gt%3B%20dac_write_reg%20PASS%20%40line%3A%25d%20%5Cr%5Cn%22%2C__func__%2C__LINE__)%3B%0A%0A%09%09status%20%3D%201%3B%0A%09%7D%0A%09else%0A%09%7B%0A%09%09PRINTF(%22(%25s)%20-%26gt%3B%20I2C_MasterTransferBlocking()%20failed%20with%20status%20%25d%20%5Cr%5Cn%22%2C__func__%2Cstatus)%3B%0A%0A%09%09status%20%3D%20-1%3B%0A%09%7D%0A%0A%09return%20status%3B%0A%7D%0A%0A%0Aint%20main()%0A%7B%0A%09I2C_MasterGetDefaultConfig(%26amp%3BmasterConfig)%3B%0A%09%0A%09I2C_MasterInit(I2C5_MASTER%2C%20%26amp%3BmasterConfig%2C%20I2C5_MASTER_CLOCK_FREQUENCY)%3B%0A%09%0A%09I2C_MasterTransferCreateHandle(I2C5_MASTER%2C%20%26amp%3Bg_m_handle%2C%20i2c_master_callback%2C%20NULL)%3B%0A%0A%09dac_write_reg(0x08%2C%200x0001)%3B%0A%7D%3C%2FCODE%3E%3C%2FPRE%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2298132%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20i2c%20call%20back%20is%20not%20getting%20called%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2298132%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F221349%22%20target%3D%22_blank%22%3E%40sushmasan%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20data-slate-fragment%3D%22JTVCJTdCJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIyaWQlMjIlM0ElMjJ6bExZMU1Ea1h6JTIyJTJDJTIycGFyYUlkeCUyMiUzQTAlMkMlMjJzcmMlMjIlM0ElMjJpJTIwaGF2ZSUyMHJldmlld2VkJTIweW91ciUyMGNvZGUuJTIyJTJDJTIyZHN0JTIyJTNBJTIyJUU2JTg4JTkxJUU1JUI3JUIyJUU3JUJCJThGJUU1JUFFJUExJUU2JTlGJUE1JUU0JUJBJTg2JUU0JUJEJUEwJUU3JTlBJTg0JUU0JUJCJUEzJUU3JUEwJTgxJUUzJTgwJTgyJTIyJTJDJTIybWV0YWRhdGElMjIlM0ElMjIlMjIlMkMlMjJtYXRjaGVzJTIyJTNBbnVsbCUyQyUyMnRyYW5zbGF0ZWRCeSUyMiUzQW51bGwlMkMlMjJtZXRhRGF0YSUyMiUzQSU1QiU1RCUyQyUyMnRleHQlMjIlM0ElMjJpJTIwaGF2ZSUyMHJldmlld2VkJTIweW91ciUyMGNvZGUuJTIyJTdEJTVEJTdEJTVE%22%3E%E3%81%82%E3%81%AA%E3%81%9F%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20data-slate-fragment%3D%22JTVCJTdCJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIyaWQlMjIlM0ElMjJ6bExZMU1Ea1h6JTIyJTJDJTIycGFyYUlkeCUyMiUzQTAlMkMlMjJzcmMlMjIlM0ElMjJpJTIwaGF2ZSUyMHJldmlld2VkJTIweW91ciUyMGNvZGUuJTIyJTJDJTIyZHN0JTIyJTNBJTIyJUU2JTg4JTkxJUU1JUI3JUIyJUU3JUJCJThGJUU1JUFFJUExJUU2JTlGJUE1JUU0JUJBJTg2JUU0JUJEJUEwJUU3JTlBJTg0JUU0JUJCJUEzJUU3JUEwJTgxJUUzJTgwJTgyJTIyJTJDJTIybWV0YWRhdGElMjIlM0ElMjIlMjIlMkMlMjJtYXRjaGVzJTIyJTNBbnVsbCUyQyUyMnRyYW5zbGF0ZWRCeSUyMiUzQW51bGwlMkMlMjJtZXRhRGF0YSUyMiUzQSU1QiU1RCUyQyUyMnRleHQlMjIlM0ElMjJpJTIwaGF2ZSUyMHJldmlld2VkJTIweW91ciUyMGNvZGUuJTIyJTdEJTVEJTdEJTVE%22%3E%E3%81%97%E3%81%8B%E3%81%97%E3%80%81%E7%94%B3%E3%81%97%E8%A8%B3%E3%81%82%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%E3%81%8C%E3%80%81%E6%98%8E%E3%82%89%E3%81%8B%E3%81%AA%E8%AA%A4%E3%82%8A%E3%81%AF%E8%A6%8B%E3%81%A4%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%E3%81%A7%E3%81%97%E3%81%9F%E3%80%82%E3%82%AA%E3%82%B7%E3%83%AD%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%97%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%80%81%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E9%80%81%E4%BF%A1%E3%81%8C%E6%AD%A3%E3%81%97%E3%81%84%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E3%80%81%E8%BF%94%E3%81%95%E3%82%8C%E3%81%9F%E3%83%87%E3%83%BC%E3%82%BF%E3%81%8C%E6%AD%A3%E3%81%97%E3%81%84%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%82%82%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%A8%E6%80%9D%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20data-slate-fragment%3D%22JTVCJTdCJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIyaWQlMjIlM0ElMjJ6bExZMU1Ea1h6JTIyJTJDJTIycGFyYUlkeCUyMiUzQTAlMkMlMjJzcmMlMjIlM0ElMjJpJTIwaGF2ZSUyMHJldmlld2VkJTIweW91ciUyMGNvZGUuJTIyJTJDJTIyZHN0JTIyJTNBJTIyJUU2JTg4JTkxJUU1JUI3JUIyJUU3JUJCJThGJUU1JUFFJUExJUU2JTlGJUE1JUU0JUJBJTg2JUU0JUJEJUEwJUU3JTlBJTg0JUU0JUJCJUEzJUU3JUEwJTgxJUUzJTgwJTgyJTIyJTJDJTIybWV0YWRhdGElMjIlM0ElMjIlMjIlMkMlMjJtYXRjaGVzJTIyJTNBbnVsbCUyQyUyMnRyYW5zbGF0ZWRCeSUyMiUzQW51bGwlMkMlMjJtZXRhRGF0YSUyMiUzQSU1QiU1RCUyQyUyMnRleHQlMjIlM0ElMjJpJTIwaGF2ZSUyMHJldmlld2VkJTIweW91ciUyMGNvZGUuJTIyJTdEJTVEJTdEJTVE%22%3EBR%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CSPAN%20data-slate-fragment%3D%22JTVCJTdCJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMmNoaWxkcmVuJTIyJTNBJTVCJTdCJTIyaWQlMjIlM0ElMjJ6bExZMU1Ea1h6JTIyJTJDJTIycGFyYUlkeCUyMiUzQTAlMkMlMjJzcmMlMjIlM0ElMjJpJTIwaGF2ZSUyMHJldmlld2VkJTIweW91ciUyMGNvZGUuJTIyJTJDJTIyZHN0JTIyJTNBJTIyJUU2JTg4JTkxJUU1JUI3JUIyJUU3JUJCJThGJUU1JUFFJUExJUU2JTlGJUE1JUU0JUJBJTg2JUU0JUJEJUEwJUU3JTlBJTg0JUU0JUJCJUEzJUU3JUEwJTgxJUUzJTgwJTgyJTIyJTJDJTIybWV0YWRhdGElMjIlM0ElMjIlMjIlMkMlMjJtYXRjaGVzJTIyJTNBbnVsbCUyQyUyMnRyYW5zbGF0ZWRCeSUyMiUzQW51bGwlMkMlMjJtZXRhRGF0YSUyMiUzQSU1QiU1RCUyQyUyMnRleHQlMjIlM0ElMjJpJTIwaGF2ZSUyMHJldmlld2VkJTIweW91ciUyMGNvZGUuJTIyJTdEJTVEJTdEJTVE%22%3E%E3%83%8F%E3%83%AA%E3%83%BC%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E