OK, so the things are getting more clearly: you have one master and two slaves.
What is still unclear is whether the SPI master can also read data from MM or only transmits to MM?
In my case, I only transmit data from one master to one slave, that’s why I can use RXONLY (output disabled).
Btw, the functionality of NSS pin in slave mode is detailed in RM0008 pages 697 and 694.
Page 697:
4. In Hardware mode (refer to Slave select (NSS) pin management on page 694), the
NSS pin must be connected to a low level signal during the complete byte transmit
sequence. In NSS software mode, set the SSM bit and clear the SSI bit in the SPI_CR1
register.
This actually is explaining that what you are doing is software mode (SSM=1, SSI=0), and is also supposed to work as expected.
I was previously wrong, because I suggested SSI to be set to 1, but this would mean “unselect”. So correctly SSI should be 0 for permanent active selection. This also explains why your MM is always active on the bus…
And on page 697:
• Software NSS management (SSM = 1)
The slave select information is driven internally by the value of the SSI bit in the
SPI_CR1 register. The external NSS pin remains free for other application uses.
• Hardware NSS management (SSM = 0)
Two configurations are possible depending on the NSS output configuration (SSOE bit
in register SPI_CR2).
– NSS output enabled (SSM = 0, SSOE = 1)
This configuration is used only when the device operates in master mode. The
NSS signal is driven low when the master starts the communication and is kept
low until the SPI is disabled.
– NSS output disabled (SSM = 0, SSOE = 0)
This configuration allows multimaster capability for devices operating in master
mode. For devices set as slave, the NSS pin acts as a classical NSS input: the
slave is selected when NSS is low and deselected when NSS high.
This is what I am using, hardware management (SSM = 0, [SSI=X], SSOE = 0): when input SS pin is low, then my slave is selected and receives the transmitted data.