STM32 HAL SPI reasignación de un solo pin

Me gustaría saber si es posible reasignar un solo pin de un periférico multi-pin (SPI).

Por ejemplo, tengo un STM32F107 y quiero usar UART4, SPI3 y Ethernet.

PC10 = UART4_TX - Función de reasignación = SPI3_SCK

PC11 = UART4_RX - Función de reasignación = SPI3_MISO

PC12 = UART5_TX - Función de reasignación = SPI3_MOSI

PB3 = SPI3_SCK

PB4 = SPI3_MISO

PB5 = Ethernet o SPI3_MOSI - Tengo que usar ethernet.

Lo que quiero hacer es usar PC12, PB3 y PB4 para SPI3 y luego usar PC10 y PC11 para UART4.

¿Está permitido reasignar solo un pin y no todo el periférico?

Me gustaría usar las bibliotecas HAL para configurar, si es posible.

No estoy lo suficientemente familiarizado con la serie F1 para responder definitivamente a su pregunta, pero puedo verificar que esto es posible (incluso a través de las bibliotecas HAL) en un STM32F3 y STM32F4. Puede encontrar útil la herramienta STM32CubeMX para identificar piezas STM32Fx: st.com/content/ccc/resource/technical/document/data_brief/7a/81/…
Algunos micros son más configurables que otros, desafortunadamente para saberlo con certeza, tendría que revisar la sección SPi del manual completo con un peine de dientes finos para ver si tiene ese tipo de funcionalidad.

Respuestas (1)

En general: consulte el manual de referencia. Algunos periféricos se pueden reasignar parcialmente de varias maneras diferentes; otros no pueden.

En este caso específico: no. La reasignación del periférico SPI3 se controla mediante un solo bit en el registro de asignación AFIO ( SPI3_REMAPin AFIO_MAPR); no hay manera de hacerlo parcialmente. Si es posible, puede considerar usar diferentes periféricos SPI y/o UART, o usar un expansor de E/S para reducir la cantidad de periféricos que necesita. Otra opción puede ser reasignar el periférico Ethernet.

Gracias por corregirme, no sabía este dato hasta ahora.
Gracias, no sabía sobre el manual de referencia, ¡la próxima vez sabré revisarlo primero! El siguiente extracto es del manual de referencia: Bit 28 SPI3_REMAP: reasignación de SPI3 Este bit lo establece y borra el software. Controla el mapeo de funciones alternativas SPI3 NSS, SCK, MISO, MOSI en los puertos GPIO. 0: Sin reasignación (NSS/PA15, SCK/PB3, MISO/PB4, MOSI/PB5) 1: Reasignación (NSS/PA4, SCK/PC10, MISO/PC11, MOSI/PC12) Nota: Este bit solo está disponible en conectividad dispositivos de línea y está reservado en caso contrario.