Post Go back to editing

SPI Slave Configuration is not working in the ADUCM361, Can i get any sample code for SPI slave configuration in Interrupt mode

Category: Software
Product Number: ADuCM361

Hi,

I am using the ADUCM361 microcontroller as SPI Targetand STM board as the Bus Master. The data recieved sent by the bus mastercould not able to read from the target.

Below is the Configuration of the Target

.

void SPI_Slave_Init(ADI_SPI_TypeDef *pSPI)
{
	  SpiCfg(SPI1, SPICON_MOD_TX1RX1, SPICON_MASEN_DIS, SPICON_CON_EN
	                                                    | SPICON_SOEN_EN
																											| SPICON_RXOF_DIS 
																											| SPICON_ZEN_EN 
																											| SPICON_TIM_RXRD
																											| SPICON_LSB_DIS 
																											| SPICON_WOM_DIS
																											| SPICON_CPOL_LOW
																											| SPICON_CPHA_SAMPLELEADING
																											| SPICON_ENABLE_EN);
	
	//Clearing the TFLUSH and RFLUSH
	pSPI->SPICON &=~(SPICON_TFLUSH_MSK|SPICON_RFLUSH_MSK);  // Finish FIFOs flush
	
	if (pSPI == SPI0)
  {
    ucSPI0_TxActive = 0;        // Clear flag
    NVIC_EnableIRQ(SPI0_IRQn);  // Enable SPI0 interrupt
  }
  if (pSPI == SPI1)
  {
    ucSPI1_TxActive = 0;        // Clear flag
     NVIC_EnableIRQ(SPI1_IRQn);  // Enable SPI1 interrupt
  }
}

STM configuration for SPI Bus Master

static void MX_SPI1_Init(void)
{

  /* USER CODE BEGIN SPI1_Init 0 */

  /* USER CODE END SPI1_Init 0 */

  /* USER CODE BEGIN SPI1_Init 1 */

  /* USER CODE END SPI1_Init 1 */
  /* SPI1 parameter configuration*/
  hspi1.Instance = SPI1;
  hspi1.Init.Mode = SPI_MODE_MASTER;
  hspi1.Init.Direction = SPI_DIRECTION_2LINES;
  hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
  hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
  hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
  hspi1.Init.NSS = SPI_NSS_SOFT;
  hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256;
  hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
  hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
  hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
  hspi1.Init.CRCPolynomial = 7;
  hspi1.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE;
  hspi1.Init.NSSPMode = SPI_NSS_PULSE_DISABLE;
  if (HAL_SPI_Init(&hspi1) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN SPI1_Init 2 */

  /* USER CODE END SPI1_Init 2 */

}

One more question is that CS pin in the SPI Target is the GPIO pin not from the dedicated CS pin of SPI will it works?