mirror of https://github.com/ARMmbed/mbed-os.git
				
				
				
			TARGET_STM: SPI: add pulse on master transmissions
Add a pulse when using hardware chip select for SPI transmissions. CS is at low level when a transmission is on-going. Be careful, this is not compatible with all modes. It will work only if PHA is 0, ie spi mode is 0 or 2. See stm32xx reference manual, chapter "NSS pulse mode" for more details. Fix #10671 Signed-off-by: Vincent Veron <vincent.veron@st.com>pull/10708/head
							parent
							
								
									19e762298f
								
							
						
					
					
						commit
						16475829f1
					
				| 
						 | 
					@ -182,8 +182,14 @@ void spi_init(spi_t *obj, PinName mosi, PinName miso, PinName sclk, PinName ssel
 | 
				
			||||||
    if (ssel != NC) {
 | 
					    if (ssel != NC) {
 | 
				
			||||||
        pinmap_pinout(ssel, PinMap_SPI_SSEL);
 | 
					        pinmap_pinout(ssel, PinMap_SPI_SSEL);
 | 
				
			||||||
        handle->Init.NSS = SPI_NSS_HARD_OUTPUT;
 | 
					        handle->Init.NSS = SPI_NSS_HARD_OUTPUT;
 | 
				
			||||||
 | 
					#if defined(SPI_NSS_PULSE_ENABLE)
 | 
				
			||||||
 | 
					        handle->Init.NSSPMode = SPI_NSS_PULSE_ENABLE;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        handle->Init.NSS = SPI_NSS_SOFT;
 | 
					        handle->Init.NSS = SPI_NSS_SOFT;
 | 
				
			||||||
 | 
					#if defined(SPI_NSS_PULSE_DISABLE)
 | 
				
			||||||
 | 
					        handle->Init.NSSPMode = SPI_NSS_PULSE_DISABLE;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* Fill default value */
 | 
					    /* Fill default value */
 | 
				
			||||||
| 
						 | 
					@ -206,7 +212,6 @@ void spi_init(spi_t *obj, PinName mosi, PinName miso, PinName sclk, PinName ssel
 | 
				
			||||||
    handle->Init.TIMode            = SPI_TIMODE_DISABLE;
 | 
					    handle->Init.TIMode            = SPI_TIMODE_DISABLE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if TARGET_STM32H7
 | 
					#if TARGET_STM32H7
 | 
				
			||||||
    handle->Init.NSSPMode          = SPI_NSS_PULSE_DISABLE;
 | 
					 | 
				
			||||||
    handle->Init.MasterKeepIOState = SPI_MASTER_KEEP_IO_STATE_ENABLE;
 | 
					    handle->Init.MasterKeepIOState = SPI_MASTER_KEEP_IO_STATE_ENABLE;
 | 
				
			||||||
    handle->Init.FifoThreshold     = SPI_FIFO_THRESHOLD_01DATA;
 | 
					    handle->Init.FifoThreshold     = SPI_FIFO_THRESHOLD_01DATA;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue