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.

DSP C6727 McBSP tri state is not happening eventhough it is configured for tristating

Other Parts Discussed in Thread: TMS320C6727B

Hello all,

 We are using C6727 based cutomized board for one of our project. There are two pheripherals DEVICE A and DEVICEB communicating with processor. McASP ports of C6727 are utilized for communicating with the DSP in following manner,

> McBSP 0 is used for sending the command to external peripheral connected to the board

> McBSP 1 for data collection from the pheripheral through dMax.

McASP 0 serializer 8 is used to send the command to DEVICE A  and McASP 0 serializer 0 is used to send the command to DEVICE B. When command is being sent to DEVICE A, serializer 0 is configured to tri-state.  But the problem is when we are sending data on the serializer 8, we are getting all ones(1's) on the serializer 0 even though it is tri-stated. This will eventualy disturb working of DEVICE B.  If any body have any inputs on these problem please share. I have copied the code snippet that is used configure serializer 8.

Following is the setting of register that are configured for sending command to DEVICE A,

========================================================================================================

dlbMode = 0x00 /* Loop back mode disabled */

 

pfunc = 0x00               /* All pins are configured for McASP*/

 

pdir = 0x1C000101;     /* AFSR AHCLKR ACLKR are input, AFSX AHCLKX ACLKX ouputs, serializer 8 and 0 are outputs*/

serSetup[8] = 0x01; /* Transmit*/

 

serSetup[0] = 0x00; /* In-active and tri-stated */

tx.mask = CSL_MCASP_XMASK_XMASK_MASK; /* All bits are transmitted out without mask */

 

tx.fmt = 0x80F8; /* 0 bit delay, MSB first, 32 bit slot size, peripheral bus control and no rotate */

 

tx.frSyncCtl = 0x02; /* Internally generated frame sync, frame sync is bit width, and rising edge */

 

 

tx.tdm = 0x01; /* Slot 0 is active*/

 

tx.clkSetupClk = 0x60; /* Bit clock: Rising edge, asyncronous, internally genareted and no divide */

 

mcaspHwCfg.emu = CSL_MCASP_PWRDEMU_FREE_ON; /* Free running */

 

tx.clkChk = 0x00FF0000; /* Maximum clock boundary */

 

tx.clkSetupHiClk = 0x8000; /* Internally generated, falling edge and no divide*/

========================================================================================================

Following is IDE information,

CCS version platinum 3.3

DSP: TMS320C6727B

Regards,

   Abhijit

 

  • Try putting a weak pull-down like 10KOhms on the two McASP0 serializer signals and see what value you get.

    What value were you expecting to get on these lines while tri-stated?

    It would appear that the value on these tri-stated lines is actually being used by the DEVICE A and DEVICE B. Why do you want to tri-state them? This is usually done when there is a second driving device that could be sourcing data, but that does not appear to be the case from your description.

  • Hi Randy,

       Thank you for your early reply.

    i)  The board is designed by our custom and it is difficult for us to connect the 10KOhm register. Connecting pull down will drive the pin state to low in tri-state. But we don't want any changes on the pin that is tri-stated.

    ii)  As I understand, Tri-state means to completely disconnect communication on the serializer. i.e whatever privious state we have, will be retained. Please correct me if I am   wrong.

    iii) Since DEVICE A  and DEVICE B are controlled independently, contorl word are sent independently to them. If sending control word to one device alters state of the control on the other device, then we need to change our design. Morever data on the serilizers are directly used by the devices without any chip select.

    iv) From DEVICE A we are capturing data, processing data in the processor and then sending to DEVICE B. Initialially we will send configuration word to DEVICE B informing data rate and to start device. But when we send command to DEVICE A in later part of code DEVICE B stops because of invalid configuration(All ones).

    Regards,

     Abhijit

     

     

  • Abhijit Naik said:
    i)  The board is designed by our custom and it is difficult for us to connect the 10KOhm register. Connecting pull down will drive the pin state to low in tri-state. But we don't want any changes on the pin that is tri-stated.

    This test is to confirm that you have correctly placed the pin into tri-state mode. If you can attach a test lead with a 10KOhm resistor to ground, and then see that the serializer pin is now changed to 0, then at least you will have confirmed that the pin is tri-stated.

    Abhijit Naik said:
    ii)  As I understand, Tri-state means to completely disconnect communication on the serializer. i.e whatever privious state we have, will be retained. Please correct me if I am   wrong.

    This is an overstatement of what tri-stating means. It only means that the output driver for this one pin will be set to a high-impedance state. Some I/Os are equiped with bus-hold features that continue to drive at the last state, but I do not believe that these pins have that feature; you can refer to the datasheet to see what drive features are available for these pins.

    "completely disconnect communication" implies a lot more than simply turning off the output driver. You may have assumed more than you will actually get. For example, the ACLKX0 and AFSX0 pins will still be driving their signals for the entire port. This means both target devices will still be receiving control signals, so whatever value is on the data line (serializer 0 or 8) will be shifted in.

    Abhijit Naik said:
    iii) Since DEVICE A  and DEVICE B are controlled independently, contorl word are sent independently to them. If sending control word to one device alters state of the control on the other device, then we need to change our design. Morever data on the serilizers are directly used by the devices without any chip select.

    If you are using McASP0 serializer 0 and McASP0 serializer 8, you are not controlling the two devices independently. If DEVICE A and DEVICE B cannot ignore the data line through some other means, then you will have a problem at those devices no matter what you do with the serializer pins.

  • Hi Andy,

       I understand that clocks of McASP 0 will be used by all the serializers of McASP0. But I misunderstood tri-stating fetaure.

    Thank you very much for your support.

    Regards,

       Abhijit

     

     

  • If we have answered your question, please mark the appropriate posting with the Verify Answer button for future reference.