@@ -82,7 +82,6 @@ void init_spi(spi_t *obj)
82
82
if (HAL_SPI_Init (handle ) != HAL_OK ) {
83
83
error ("Cannot initialize SPI" );
84
84
}
85
-
86
85
/* In case of standard 4 wires SPI,PI can be kept enabled all time
87
86
* and SCK will only be generated during the write operations. But in case
88
87
* of 3 wires, it should be only enabled during rd/wr unitary operations,
@@ -400,41 +399,7 @@ int spi_master_write(spi_t *obj, int value)
400
399
if (handle -> Init .Direction == SPI_DIRECTION_1LINE ) {
401
400
return HAL_SPI_Transmit (handle , (uint8_t * )& value , 1 , TIMEOUT_1_BYTE );
402
401
}
403
- #if TARGET_STM32H7
404
- else {
405
- int retval = 0 ;
406
- #if 0
407
- if (HAL_SPI_TransmitReceive (handle , (uint8_t * )& value , (uint8_t * )& retval , 1 , TIMEOUT_1_BYTE ) != HAL_OK ) {
408
- error ("spi transmit receive error\n" );
409
- }
410
- #endif
411
-
412
- /* Master transfer start */
413
- LL_SPI_StartMasterTransfer (SPI_INST (obj ));
414
-
415
- /* Wait for TXP flag, no timeout */
416
- while (!LL_SPI_IsActiveFlag_TXP (SPI_INST (obj )));
417
-
418
- /* Write data to transmit */
419
- if (handle -> Init .DataSize == SPI_DATASIZE_16BIT ) {
420
- LL_SPI_TransmitData16 (SPI_INST (obj ), (uint16_t )value );
421
- } else {
422
- LL_SPI_TransmitData8 (SPI_INST (obj ), (uint8_t )value );
423
- }
424
-
425
- /* Wait RXP or end of Transfer */
426
- while (!LL_SPI_IsActiveFlag_RXP (SPI_INST (obj )));
427
-
428
- /* Read received data */
429
- if (handle -> Init .DataSize == SPI_DATASIZE_16BIT ) {
430
- retval = LL_SPI_ReceiveData16 (SPI_INST (obj ));
431
- } else {
432
- retval = LL_SPI_ReceiveData8 (SPI_INST (obj ));
433
- }
434
402
435
- return retval ;
436
- }
437
- #else
438
403
#if defined(LL_SPI_RX_FIFO_TH_HALF )
439
404
/* Configure the default data size */
440
405
if (handle -> Init .DataSize == SPI_DATASIZE_16BIT ) {
@@ -450,32 +415,39 @@ int spi_master_write(spi_t *obj, int value)
450
415
* but this will increase performances significantly
451
416
*/
452
417
453
- /* Wait TXE flag to transmit data */
454
418
#if TARGET_STM32H7
455
- while (!LL_SPI_IsActiveFlag_TXC (SPI_INST (obj )));
456
- #else /* TARGET_STM32H7 */
419
+ /* Master transfer start */
420
+ LL_SPI_StartMasterTransfer (SPI_INST (obj ));
421
+
422
+ /* Wait TXP flag to transmit data */
423
+ while (!LL_SPI_IsActiveFlag_TXP (SPI_INST (obj )));
424
+ #else
425
+ /* Wait TXE flag to transmit data */
457
426
while (!LL_SPI_IsActiveFlag_TXE (SPI_INST (obj )));
427
+
458
428
#endif /* TARGET_STM32H7 */
459
429
430
+ /* Transmit data */
460
431
if (handle -> Init .DataSize == SPI_DATASIZE_16BIT ) {
461
- LL_SPI_TransmitData16 (SPI_INST (obj ), value );
432
+ LL_SPI_TransmitData16 (SPI_INST (obj ), ( uint16_t ) value );
462
433
} else {
463
- LL_SPI_TransmitData8 (SPI_INST (obj ), (uint8_t ) value );
434
+ LL_SPI_TransmitData8 (SPI_INST (obj ), (uint8_t )value );
464
435
}
465
436
466
- /* Then wait RXE flag before reading */
467
437
#if TARGET_STM32H7
468
- while (!LL_SPI_IsActiveFlag_RXWNE (SPI_INST (obj )));
438
+ /* Wait for RXP or end of Transfer */
439
+ while (!LL_SPI_IsActiveFlag_RXP (SPI_INST (obj )));
469
440
#else /* TARGET_STM32H7 */
441
+ /* Wait for RXNE flag before reading */
470
442
while (!LL_SPI_IsActiveFlag_RXNE (SPI_INST (obj )));
471
443
#endif /* TARGET_STM32H7 */
472
444
445
+ /* Read received data */
473
446
if (handle -> Init .DataSize == SPI_DATASIZE_16BIT ) {
474
447
return LL_SPI_ReceiveData16 (SPI_INST (obj ));
475
448
} else {
476
449
return LL_SPI_ReceiveData8 (SPI_INST (obj ));
477
450
}
478
- #endif
479
451
}
480
452
481
453
int spi_master_block_write (spi_t * obj , const char * tx_buffer , int tx_length ,
0 commit comments