Loading...
 

SW4STM32 and SW4Linux fully supports the STM32MP1 asymmetric multicore Cortex/A7+M4 MPUs

   With System Workbench for Linux, Embedded Linux on the STM32MP1 family of MPUs from ST was never as simple to build and maintain, even for newcomers in the Linux world. And, if you install System Workbench for Linux in System Workbench for STM32 you can seamlessly develop and debug asymmetric applications running partly on Linux, partly on the Cortex-M4.
You can get more information from the ac6-tools website and download (registration required) various documents highlighting:

System Workbench for STM32


HAL equivalent for "SPI_NSSInternalSoftwareConfig" and/or "SPI_NSSInternalSoft_Set"

Without HAL I used to:
SPI_NSSInternalSoftwareConfig(SPI2, SPI_NSSInternalSoft_Set);
SPI_NSSInternalSoftwareConfig(SPI2, SPI_NSSInternalSoft_Reset);

Furthermore, “SPI_NSSInternalSoft_Reset” has a value of “0xFEFF” so I thought I would find the equivalent if I search everywhere for “FEFF” but no luck.

If I don’t need it, how do I make the SPI slave receive/stop data?

Thanks,

Cat

I notice that the strange 0xFEFF is in fact ~(0x100) which is ~(SPI_NSSInternalSoft_Set) so I get why I can’t find it but still what’s its HAL name?

I now think it’s “SPI_CR1_SSI” but how am I supposed to use it with HAL?

For now I’ll just:
SPI2->CR1 &= ~SPI_CR1_SSI;
SPI2->CR1 |= SPI_CR1_SSI;

but I’m not liking it.


The SPI_InitTypeDef structure has a Mode field and NSS field. Before initializing the SPI you can set the Mode to SPI_MODE_MASTER or SPI_MODE_SLAVE and NSS field to SPI_NSS_SOFT, or SPI_NSS_HARD_INPUT, or SPI_NSS_HARD_OUTPUT. I can’t find any other functions for dinamically changing them using HAL.

SPI_HandleTypeDef SpiHandle;
...
SpiHandle.Init.Mode = SPI_MODE_MASTER; // SPI_MODE_MASTER is defined as (SPI_CR1_MSTR | SPI_CR1_SSI)
SpiHandle.Init.NSS = SPI_NSS_SOFT;
...
if(HAL_SPI_Init(&SpiHandle) != HAL_OK)
Error_Handler();