AnsweredAssumed Answered

Issue with SPORT0 Receive Logic

Question asked by KWM on Dec 1, 2010
Latest reply on Dec 7, 2010 by KWM


  I'm new to BlackFin, and with using the SPORT Serial Interface.  Currently using the BF506F processor on the EZ-Kit.  Was able to configure the SPORT0 and jumper the Transmit and receive Sections together on the EZ-DSP to get simple loopback working.  This was a first test for functionality prior to connecting the receive section to to an Analog Devices 9864 IF Digitizer, which will serve as the source of the high speed data.  I've written a simple routine which under core control simply polls the SPORT Status register to see if data has come in, fills a buffer and then stops.  The AD9864 is continuously transimitting.  There is a  scope probe on the SPORT0 Receive Clock  ( RSCLK0 ) line.  After reset I can clearly see this pin swing 0-3v, as the AD9864 is transmitting.  I configure the SPORT with the code below, and during core driven receives, the clock looks undistorted, but after filling the buffer and with the SPORT section still active, this pin gets distorted - as if the BF506F is driving of terminating this line.  I disconnected the AD9864, and trued to pull it down with a 1k pull down - and the RSCLK0 line appears to be driven.  There is a 10K pull-up on the BF506 EZ-KIT because this is the LED0 signal,  but there appears to be some other source.

  The receive data is good, so it appears that the SPORT0 Receive logic is working, just a mystery as to why the RSCK0 line gets distorted after the SPORT is configured, and after the buffer is filled.  I checked  the FER and MUX register settings,  with the VDSP++ Tools.  I have also tried clearing both the TSPEN and RSPEN bits after filling the buffer, which should turn off the SPORT logic - this had no effect.


Here is my setup of the SPORT0:


void SPORT0_Init(void)
*pPORTF_MUX         = 0x0000;                                   /* Force SPORT0 Function ( 1st Alternate ) for PF10 - PF14 */                                     
*pPORTF_FER     |= (PF0 | PF1 | PF2 |PF3 |PF4 | PF5 |PF8 | PF9 |PF10 | PF12 | PF13 | PF14 | PF15);     

   /* Set up PortF_FER for use as SPI0 and SPORT0 */

*pSPORT0_TCR1       &= ~( TSPEN );   // Disable Transmitter
*pSPORT0_TCR1         = ( LATFS         | TFSR | ITFS /* |DTYPE_NORM */ |ITCLK          );  // TCKE Polarity

*pSPORT0_TCR2        = ( SLEN(31) );          
*pSPORT0_TCLKDIV     = ( 1);
*pSPORT0_TCR1       |= ( TSPEN );      // Need to enable Enable Transmitter



*pSPORT0_RCR1       &= ~( RSPEN );   // Disable Receiver
*pSPORT0_RCR1        = ( LARFS        | RFSR         );

*pSPORT0_RCR2        = ( SLEN(31) );            // temp receive 16 bits
*pSPORT0_RCLKDIV     = ( 1);            
*pSPORT0_RCR1       |= ( RSPEN );   // Need to enable Enable Receiver




Any help on this is greatly appreciated.