@@ -454,17 +454,17 @@ void spiWrite(spi_t * spi, uint32_t *data, uint8_t len)
454
454
len = 16 ;
455
455
}
456
456
SPI_MUTEX_LOCK ();
457
- while (spi -> dev -> cmd .usr );
458
457
spi -> dev -> mosi_dlen .usr_mosi_dbitlen = (len * 32 ) - 1 ;
459
- spi -> dev -> miso_dlen .usr_miso_dbitlen = ( len * 32 ) - 1 ;
458
+ spi -> dev -> miso_dlen .usr_miso_dbitlen = 0 ;
460
459
for (i = 0 ; i < len ; i ++ ) {
461
460
spi -> dev -> data_buf [i ] = data [i ];
462
461
}
463
462
spi -> dev -> cmd .usr = 1 ;
463
+ while (spi -> dev -> cmd .usr );
464
464
SPI_MUTEX_UNLOCK ();
465
465
}
466
466
467
- void spiRead (spi_t * spi , uint32_t * data , uint8_t len )
467
+ void spiTransfer (spi_t * spi , uint32_t * data , uint8_t len )
468
468
{
469
469
if (!spi ) {
470
470
return ;
@@ -474,6 +474,12 @@ void spiRead(spi_t * spi, uint32_t *data, uint8_t len)
474
474
len = 16 ;
475
475
}
476
476
SPI_MUTEX_LOCK ();
477
+ spi -> dev -> mosi_dlen .usr_mosi_dbitlen = (len * 32 ) - 1 ;
478
+ spi -> dev -> miso_dlen .usr_miso_dbitlen = (len * 32 ) - 1 ;
479
+ for (i = 0 ; i < len ; i ++ ) {
480
+ spi -> dev -> data_buf [i ] = data [i ];
481
+ }
482
+ spi -> dev -> cmd .usr = 1 ;
477
483
while (spi -> dev -> cmd .usr );
478
484
for (i = 0 ; i < len ; i ++ ) {
479
485
data [i ] = spi -> dev -> data_buf [i ];
@@ -487,21 +493,24 @@ void spiWriteByte(spi_t * spi, uint8_t data)
487
493
return ;
488
494
}
489
495
SPI_MUTEX_LOCK ();
490
- while (spi -> dev -> cmd .usr );
491
496
spi -> dev -> mosi_dlen .usr_mosi_dbitlen = 7 ;
492
- spi -> dev -> miso_dlen .usr_miso_dbitlen = 7 ;
497
+ spi -> dev -> miso_dlen .usr_miso_dbitlen = 0 ;
493
498
spi -> dev -> data_buf [0 ] = data ;
494
499
spi -> dev -> cmd .usr = 1 ;
500
+ while (spi -> dev -> cmd .usr );
495
501
SPI_MUTEX_UNLOCK ();
496
502
}
497
503
498
- uint8_t spiReadByte (spi_t * spi )
504
+ uint8_t spiTransferByte (spi_t * spi , uint8_t data )
499
505
{
500
506
if (!spi ) {
501
507
return 0 ;
502
508
}
503
- uint8_t data ;
504
509
SPI_MUTEX_LOCK ();
510
+ spi -> dev -> mosi_dlen .usr_mosi_dbitlen = 7 ;
511
+ spi -> dev -> miso_dlen .usr_miso_dbitlen = 7 ;
512
+ spi -> dev -> data_buf [0 ] = data ;
513
+ spi -> dev -> cmd .usr = 1 ;
505
514
while (spi -> dev -> cmd .usr );
506
515
data = spi -> dev -> data_buf [0 ] & 0xFF ;
507
516
SPI_MUTEX_UNLOCK ();
@@ -551,21 +560,24 @@ void spiWriteWord(spi_t * spi, uint16_t data)
551
560
return ;
552
561
}
553
562
SPI_MUTEX_LOCK ();
554
- while (spi -> dev -> cmd .usr );
555
563
spi -> dev -> mosi_dlen .usr_mosi_dbitlen = 15 ;
556
- spi -> dev -> miso_dlen .usr_miso_dbitlen = 15 ;
564
+ spi -> dev -> miso_dlen .usr_miso_dbitlen = 0 ;
557
565
spi -> dev -> data_buf [0 ] = __spiTranslate16 (data , !spi -> dev -> ctrl .wr_bit_order );
558
566
spi -> dev -> cmd .usr = 1 ;
567
+ while (spi -> dev -> cmd .usr );
559
568
SPI_MUTEX_UNLOCK ();
560
569
}
561
570
562
- uint16_t spiReadWord (spi_t * spi )
571
+ uint16_t spiTransferWord (spi_t * spi , uint16_t data )
563
572
{
564
573
if (!spi ) {
565
574
return 0 ;
566
575
}
567
- uint16_t data ;
568
576
SPI_MUTEX_LOCK ();
577
+ spi -> dev -> mosi_dlen .usr_mosi_dbitlen = 15 ;
578
+ spi -> dev -> miso_dlen .usr_miso_dbitlen = 15 ;
579
+ spi -> dev -> data_buf [0 ] = __spiTranslate16 (data , !spi -> dev -> ctrl .wr_bit_order );
580
+ spi -> dev -> cmd .usr = 1 ;
569
581
while (spi -> dev -> cmd .usr );
570
582
data = __spiTranslate16 (spi -> dev -> data_buf [0 ] & 0xFFFF , !spi -> dev -> ctrl .rd_bit_order );
571
583
SPI_MUTEX_UNLOCK ();
@@ -578,21 +590,24 @@ void spiWriteLong(spi_t * spi, uint32_t data)
578
590
return ;
579
591
}
580
592
SPI_MUTEX_LOCK ();
581
- while (spi -> dev -> cmd .usr );
582
593
spi -> dev -> mosi_dlen .usr_mosi_dbitlen = 31 ;
583
- spi -> dev -> miso_dlen .usr_miso_dbitlen = 31 ;
594
+ spi -> dev -> miso_dlen .usr_miso_dbitlen = 0 ;
584
595
spi -> dev -> data_buf [0 ] = __spiTranslate32 (data , !spi -> dev -> ctrl .wr_bit_order );
585
596
spi -> dev -> cmd .usr = 1 ;
597
+ while (spi -> dev -> cmd .usr );
586
598
SPI_MUTEX_UNLOCK ();
587
599
}
588
600
589
- uint32_t spiReadLong (spi_t * spi )
601
+ uint32_t spiTransferLong (spi_t * spi , uint32_t data )
590
602
{
591
603
if (!spi ) {
592
604
return 0 ;
593
605
}
594
- uint32_t data ;
595
606
SPI_MUTEX_LOCK ();
607
+ spi -> dev -> mosi_dlen .usr_mosi_dbitlen = 31 ;
608
+ spi -> dev -> miso_dlen .usr_miso_dbitlen = 31 ;
609
+ spi -> dev -> data_buf [0 ] = __spiTranslate32 (data , !spi -> dev -> ctrl .wr_bit_order );
610
+ spi -> dev -> cmd .usr = 1 ;
596
611
while (spi -> dev -> cmd .usr );
597
612
data = __spiTranslate32 (spi -> dev -> data_buf [0 ], !spi -> dev -> ctrl .rd_bit_order );
598
613
SPI_MUTEX_UNLOCK ();
@@ -612,7 +627,6 @@ void spiTransferBits(spi_t * spi, uint32_t data, uint32_t * out, uint8_t bits)
612
627
uint32_t mask = (((uint64_t )1 << bits ) - 1 ) & 0xFFFFFFFF ;
613
628
614
629
SPI_MUTEX_LOCK ();
615
- while (spi -> dev -> cmd .usr );
616
630
spi -> dev -> mosi_dlen .usr_mosi_dbitlen = (bits - 1 );
617
631
spi -> dev -> miso_dlen .usr_miso_dbitlen = (bits - 1 );
618
632
if (bytes == 1 ) {
@@ -626,8 +640,9 @@ void spiTransferBits(spi_t * spi, uint32_t data, uint32_t * out, uint8_t bits)
626
640
}
627
641
spi -> dev -> cmd .usr = 1 ;
628
642
643
+ while (spi -> dev -> cmd .usr );
644
+
629
645
if (out ) {
630
- while (spi -> dev -> cmd .usr );
631
646
if (bytes == 1 ) {
632
647
* out = spi -> dev -> data_buf [0 ] & mask ;
633
648
} else if (bytes == 2 ) {
@@ -663,7 +678,6 @@ void __spiTransferBytes(spi_t * spi, uint8_t * data, uint8_t * out, uint32_t byt
663
678
memset (bytesBuf , 0xFF , bytes );
664
679
}
665
680
666
- while (spi -> dev -> cmd .usr );
667
681
spi -> dev -> mosi_dlen .usr_mosi_dbitlen = ((bytes * 8 ) - 1 );
668
682
spi -> dev -> miso_dlen .usr_miso_dbitlen = ((bytes * 8 ) - 1 );
669
683
@@ -673,8 +687,9 @@ void __spiTransferBytes(spi_t * spi, uint8_t * data, uint8_t * out, uint32_t byt
673
687
674
688
spi -> dev -> cmd .usr = 1 ;
675
689
690
+ while (spi -> dev -> cmd .usr );
691
+
676
692
if (out ) {
677
- while (spi -> dev -> cmd .usr );
678
693
for (i = 0 ; i < words ; i ++ ) {
679
694
wordsBuf [i ] = spi -> dev -> data_buf [i ];//copy spi fifo to buffer
680
695
}
0 commit comments