TMS320F280025: How to send two 16-bit address continuously in I2C

Part Number: TMS320F280025

Hi Experts,

How to send two 16-bit address continuously like the following using I2C?

I got the following bt setting I2CCNT = 2, but there is still some gap

Regards,

Hang.

  • Hello Hang,

    How to send two 16-bit address continuously like the following using I2C?

    The I2C module supports 7-bit addressing or 10-bit addressing modes, 16-bit addresses are not supported. Is the customer just transmitting 16-bit values using I2C?

    I got the following bt setting I2CCNT = 2, but there is still some gap

    What code are they using to transmit for the second screenshot? How does this code differ from the first screenshot? If they're using the same sort of transmission configuration then the behavior should be the same. Are they using each address (i.e. 0xA0, 0xA1, 0xA2, etc.) as a separate transmission or are they using repeat mode?

  • Hi Omer,

    Thanks for answering.

    Is the customer just transmitting 16-bit values using I2C?

    Yes they are trying to send 16-bit values as the 16-bit address. 

    How does this code differ from the first screenshot?

    The first screenshot is generated by other device just for reference. So far C2000 can only transmit like the second screenshot.

    Are they using each address (i.e. 0xA0, 0xA1, 0xA2, etc.) as a separate transmission or are they using repeat mode?

    No, they are not using repeat mode in the screen shot. But they also tried using repeat mode, there is still gaps between transfers.

    Regards,

    Hang.

  • Hello Hang,

    Yes they are trying to send 16-bit values as the 16-bit address. 

    The device only supports 7-bit and 10-bit addressing modes, so if they want to use 16-bit addressing mode they will either have to use some device which can use 16-bit addressing mode or bit-bang all I2C transmission. To my knowledge there's no plan to support 16-bit addressing modes on C2000 devices.

  • Hi Omer,

    Sorry for the confusion. Transmitting 16-bit value is also OK. 

    Is the customer just transmitting 16-bit values using I2C?

    Is there a way to transmit 16-bit value without any gap?

    Thanks,

    Hang.

  • Hello Hang,

    Is there a way to transmit 16-bit value without any gap?

    If the customer is trying to transmit a single data frame that's 16 bits, then no. The I2C peripheral has a maximum of 8-bits per data byte (see below). However, based on the first screenshot it doesn't look like the example provided transmits 16-bit data, it's still just transmitting an address and 8-bit data. Why is the I2CCNT set to 2? This is the reason there's an extra 8 bits transmitted, but you highlighted this in the screenshot indicating this as a 'gap'. I'm not sure I fully understand what the customer is trying to achieve.