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?