This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

C6678 Master / Slave configuration

Other Parts Discussed in Thread: UCD9222, UCD90160

Hi,

My system has two separate DSP modules that communicate with each other across a backplane.

On each module, there is a C6678 which acts as the main processor on the module. This C6678 will be managing all the system ICs such as the UCD9222, UCD90160 power sequencer and other I2C devices.

I would like to designate one of these DSP modules to be my system controller that polls the other DSP module for system information such as voltage levels, temperature, etc. For this to happen, my system controller's C6678 can be a master device, while the other DSP can be a slave. However, on each individual board, the DSP will have to act as a master to poll information from all the local I2C devices.

Hence, am I able to achieve this set-up? This requires the DSP to be able to be configured as a multi-master set-up. The I2C documentation SPRUGV3, Section 3.2, says that the C6678 can specify its own slave address. However, I am unable to find the documentation that says that you are able to configure the device as a multi-master I2C device.

Is the C6678 that is in the system controller able to address the C6678 in the other DSP module? This might explain the ability to configure a slave address as mentioned in Section 3.2. Which part of the document explains this feature?

If my method is not feasible, is there any other implementation that allows two DSPs to communicate to each other through I2C? One being a master, the other slave, but both managing their own set of I2C devices?

Thanks and Regards,

Allan

  • Allan,

    You probably can do this, but be sure to study the I2C User Guide and the Phillips spec before committing to your design. The I2C User Guide lists under Features "Support for multiple master-transmitters and slave-receivers mode" and "Support for multiple slave-transmitters and master-receivers mode". Try searching the I2C User Guide for those terms, such as "master-transmitter" (no quotes) to find where it discusses this.

    This seems like a very slow bus to use for all of this activity on multiple modules. Could you try keeping the I2C bus local and using SPI to communicate between the two modules?

    Regards,
    RandyP

  • Allan,

    I think what you are trying to do is possible. According to the I2C User Guide, 

    Figure 1-1 on page 1-3 shows how the I2C module is connected to the I2C bus. The I2C
    bus is a multi-master bus that supports a multi-master mode. This allows more than
    one device capable of controlling the bus that is connected to it. Each I2C device is
    recognized by a unique address and can operate as either transmitter or receiver
    depending on the function of the device. In addition to being a transmitter or receiver,
    devices connected to the I2C bus also can be considered as master or slave when
    performing data transfers.
    Note that a master device is the device that initiates a data transfer on the bus and
    generates the clock signals to permit that transfer. During this transfer, any device
    addressed by this master is considered a slave. Figure 2-1 shows an example of multiple
    I2C modules connected for a two-way transfer from one device to other devices.

    Elush Shirazpour