1906787_en-US

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

1906787_en-US

1906787_en-US

I2C MPC5478G

Hi, I want to communicate with an amplifier using the MPC5748G. I'm using the i2c_transfer_mpc5748g sample code from the Power Architecture. The amplifier's address is 0x70. What modifications do I need to make to achieve this? also i2c driver sends
adress->data  but i want to make it adress of amplifier(adress) ->amplifier register(subadress)-> data.

Re: I2C MPC5478G

Hi,

the Slave device address is set within Component inspector and it is automatically sent as first byte after START is issued.
The Slave’s register/memory address, must be stored into first byte(s) of the “txBuffer” depending on address size.
 
So assuming 16bit address is used and you want to write 8 bytes (1,2,3,..,8) to Slave address 0x000C, then prepare txBuffer as
 
txBuffer = {0x00, 0x0C, 1, 2, 3, 4, 5, 6, 7, 8};
 
and use I2C_DRV_MasterSendDataBlocking(instance, txBuffer, 10, true, timeout);
 
If you want to read 8 bytes from the same memory address then use this
 
I2C_DRV_MasterSendDataBlocking(instance, txBuffer, 2, false, timeout); // just memory/register address will be sent after Slave address so total 3 bytes, STOP is not generated
I2C_DRV_MasterReceiveDataBlocking(instance, rxBuffer, 8, true, timeout); // Repeat Start is issued following Slave address and waiting reading for 8 bytes

Hope it helps.

BR, Petr

Tags (1)
No ratings
Version history
Last update:
‎11-21-2025 09:30 PM
Updated by: