infineon4engineers Facebook

infineon@google+ Google+

infineon@linkedin linkedin

infineon4engi@twitter twitter

infineon@youtube youtube

+ Reply to Thread
Results 1 to 4 of 4

Thread: SPI slave MISO line issue (XMC4500 + XMC1201)

  1. #1
    Sebastian is on a distinguished road
    Join Date
    Aug 2014
    Location
    Austria
    Posts
    5
    Points
    38.125

    SPI slave MISO line issue (XMC4500 + XMC1201)

    Hello everyone,

    I got a strange communication issue between a master (XMC 4500) and more than one slave (XMC1201 + port expander card which communicates via SPI).
    On my board it's possible to plug in 2 different cards on the same SPI-port (every card gets an chip select and the master toggles between them).

    When the master communicates with one slave (MCP23S17 -> port expander card), the waveform of the MISO looks like expected (image below).
    Click image for larger version

Name:	1_slave_portexp.png
Views:	0
Size:	1.99 MB
ID:	1600

    The problem starts when the master communicates with both cards -> port expander card and an additional XMC1201 in slave mode (SPI003-app was used).
    This looks like the slave is pulling up the MISO-line very strong and the MCP23S17 can't pull the line to ground when it gets the /CS. So the master thinks, due to the wrong voltage level, that the slave sends 0xFF instead of 0x00.
    Click image for larger version

Name:	2_slaves_XMC1201.png
Views:	0
Size:	2.19 MB
ID:	1601


    I'm not sure what I can do to prevent this behaviour. In a workaround I could configure the MISO-line to tristate when the end-of-message interrupt occures and reconfigure it at the start of the message (not really smart imho). This could prevent data corruption for other cards.

    Thanks in advance for any help !

    best regards
    Sebastian

  2. #2

    Infineon Employee
    Infineon Employee
    Expert
    chismo is on a distinguished road
    Join Date
    Apr 2013
    Posts
    267
    Hi Sebastian,

    When the USIC SSC slave in the XMC devices is inactive, it outputs the passive level defined by the register bit field SCTR.PDL.

    In the multi-slave setup that you have, I would suggest either:
    1) the workaround you mentioned to enable the slave MISO line only when it is required to transmit
    2) or if possible, to have the MISO line in an open drain configuration with an external pull-up.

    Regards,
    Min Wei
    The views expressed here are my personal opinions, have not been reviewed or authorized by Infineon and do not necessarily represent the views of Infineon.

  3. #3
    New Member New Member Juergen1769 is on a distinguished road
    Join Date
    Nov 2014
    Posts
    2
    Points
    30
    Hi Sebastian, hi Min Wei,

    I have the same problem with a XMC1402. How did you solve this?

    1) How can you enable/disable the slave MISO line?
    2) PDL can only be set to 0 (the passive data level is 0) or 1(the passive data level is 1) but you can't set it to open drain...

    Regards,

    Juergen

  4. #4

    Infineon Employee
    Infineon Employee
    jferreira will become famous soon enough
    Join Date
    Oct 2012
    Posts
    402
    Hi Juergen,

    1. You enable/disable the MISO pin at the slave by configuring the pin as input/alternate ouput.
    Code:
    // enable MISO
    XMC_GPIO_SetMode(MISO, XMC_GPIO_MODE_OUTPUT_PUSH_PULL | XMC_GPIO_MODE_OUTPUT_ALTx);
    
    // disable MISO
    XMC_GPIO_SetMode(MISO, XMC_GPIO_MODE_INPUT_TRISTATE);
    or 
    XMC_GPIO_SetMode(MISO, XMC_GPIO_MODE_INPUT_PULL_UP);
    2. To configure the MISO as alternate output open drain instead of push pull
    Code:
    XMC_GPIO_SetMode(MISO, XMC_GPIO_MODE_OUTPUT_OPEN_DRAIN | XMC_GPIO_MODE_OUTPUT_ALTx);
    Are you using APPs? If so, in the Pin Settings tab you can change the mode from push pull to open drain easily.


    Regards,
    Jesus
    The views expressed here are my personal opinions, have not been reviewed or authorized by Infineon and do not necessarily represent the views of Infineon.

+ Reply to Thread
Disclaimer

All content and materials on this site are provided “as is“. Infineon makes no warranties or representations with regard to this content and these materials of any kind, whether express or implied, including without limitation, warranties or representations of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. No license, whether express or implied, is granted by Infineon. Use of the information on this site may require a license from a third party, or a license from Infineon.


Infineon accepts no liability for the content and materials on this site being accurate, complete or up- to-date or for the contents of external links. Infineon distances itself expressly from the contents of the linked pages, over the structure of which Infineon has no control.


Content on this site may contain or be subject to specific guidelines or limitations on use. All postings and use of the content on this site are subject to the Usage Terms of the site; third parties using this content agree to abide by any limitations or guidelines and to comply with the Usage Terms of this site. Infineon reserves the right to make corrections, deletions, modifications, enhancements, improvements and other changes to the content and materials, its products, programs and services at any time or to move or discontinue any content, products, programs, or services without notice.