STM32 SPI Clock no estará inactivo

1

Usando el chip STM32F103RBT6 (específicamente la placa STM32-H103 de Olimex), Keil u5. Comunicación con el sensor magnético AS5311

El periférico SPI se configura en modo maestro solo unidireccional rx. CPHA = 1 y CPOL = 1. El pin del reloj se configura como función alternativa push pull. La inicialización de SPI está abajo:

  hspi1.Instance = SPI1;
  hspi1.Init.Mode = SPI_MODE_MASTER;
  hspi1.Init.Direction = SPI_DIRECTION_2LINES_RXONLY;
  hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
  hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH;
  hspi1.Init.CLKPhase = SPI_PHASE_2EDGE;
  hspi1.Init.NSS = SPI_NSS_SOFT;
  hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256;
  hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
  hspi1.Init.TIMode = SPI_TIMODE_DISABLED;
  hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLED;
  hspi1.Init.CRCPolynomial = 10;
  HAL_SPI_Init(&hspi1);

Luego, entro en un bucle con el siguiente código simplemente en un modo de recepción constante

while (1)
{
  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_RESET);
  HAL_SPI_Receive(&hspi1, (uint8_t *)Rx_Buffer, 3, HAL_MAX_DELAY);
  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, GPIO_PIN_SET);
  HAL_Delay(1);
}

He comprobado la polaridad y la fase en el visor perihperal y puedo ver que los registros están configurados como 1 para CPOL y CPHA. Sin embargo, al usar un analizador lógico de saleae, puedo ver que después de la transferencia de datos el reloj no está inactivo.

En términos de hardware, el reloj está conectado directamente sin resistencias de subida / bajada.

¿Alguna idea de por qué el reloj no está inactivo?

    
pregunta Pop24

0 respuestas

Lea otras preguntas en las etiquetas