33
33
*
34
34
*/
35
35
36
- #ifdef __AVR__
37
- #include < avr/pgmspace.h>
38
- #elif defined(ESP8266) || defined(ESP32)
39
- #include < pgmspace.h>
40
- #else
41
- #define pgm_read_byte (addr ) \
42
- (*(const unsigned char *)(addr)) // /< read bytes from program memory
43
- #endif
44
-
45
- #if !defined(__ARM_ARCH) && !defined(ENERGIA) && !defined(ESP8266) && \
46
- !defined(ESP32) && !defined(__arc__)
47
- #include < util/delay.h>
48
- #endif
49
-
50
- #include < stdlib.h>
51
-
52
36
#include " Adafruit_EPD.h"
37
+ #include < stdlib.h>
53
38
54
39
bool Adafruit_EPD::_isInTransaction = false ;
55
40
@@ -75,21 +60,18 @@ Adafruit_EPD::Adafruit_EPD(int width, int height, int8_t spi_mosi,
75
60
_cs_pin = CS;
76
61
_reset_pin = RST;
77
62
_dc_pin = DC;
78
- _sclk_pin = spi_clock;
79
- _sid_pin = spi_mosi;
80
63
_busy_pin = BUSY;
81
64
if (SRCS >= 0 ) {
82
65
use_sram = true ;
83
66
} else {
84
67
use_sram = false ;
85
68
}
86
- hwSPI = false ;
87
69
88
70
spi_dev = new Adafruit_SPIDevice (CS, spi_clock, spi_miso, spi_mosi,
89
- 1000000 , // frequency
71
+ 4000000 , // frequency
90
72
SPI_BITORDER_MSBFIRST, // bit order
91
- SPI_MODE0 // data mode
92
- );
73
+ SPI_MODE0 // data mode
74
+ );
93
75
94
76
singleByteTxns = false ;
95
77
buffer1_size = buffer2_size = 0 ;
@@ -125,13 +107,12 @@ Adafruit_EPD::Adafruit_EPD(int width, int height, int8_t DC, int8_t RST,
125
107
} else {
126
108
use_sram = false ;
127
109
}
128
- hwSPI = true ;
129
110
130
111
spi_dev = new Adafruit_SPIDevice (CS,
131
- 1000000 , // frequency
112
+ 4000000 , // frequency
132
113
SPI_BITORDER_MSBFIRST, // bit order
133
- SPI_MODE0 // data mode
134
- );
114
+ SPI_MODE0, // data mode
115
+ _spi );
135
116
136
117
singleByteTxns = false ;
137
118
buffer1_size = buffer2_size = 0 ;
@@ -577,35 +558,14 @@ void Adafruit_EPD::EPD_data(uint8_t data) {
577
558
uint8_t Adafruit_EPD::SPItransfer (uint8_t d) {
578
559
// Serial.print("-> 0x"); Serial.println((byte)d, HEX);
579
560
580
- if (hwSPI) {
581
- if (singleByteTxns) {
582
- uint8_t b;
583
- csLow ();
584
- b = _spi->transfer (d);
585
- csHigh ();
586
- return b;
587
- } else
588
- return _spi->transfer (d);
561
+ if (singleByteTxns) {
562
+ uint8_t b;
563
+ csLow ();
564
+ b = spi_dev->transfer (d);
565
+ csHigh ();
566
+ return b;
589
567
} else {
590
- // TODO: return read data for software SPI
591
- for (uint8_t bit = 0x80 ; bit; bit >>= 1 ) {
592
- #ifdef HAVE_PORTREG
593
- *clkport &= ~clkpinmask;
594
- if (d & bit)
595
- *mosiport |= mosipinmask;
596
- else
597
- *mosiport &= ~mosipinmask;
598
- *clkport |= clkpinmask;
599
- #else
600
- digitalWrite (_sclk_pin, LOW);
601
- if (d & bit)
602
- digitalWrite (_sid_pin, HIGH);
603
- else
604
- digitalWrite (_sid_pin, LOW);
605
- digitalWrite (_sclk_pin, HIGH);
606
- #endif
607
- }
608
- return 0 ;
568
+ return spi_dev->transfer (d);
609
569
}
610
570
}
611
571
@@ -622,11 +582,8 @@ void Adafruit_EPD::csHigh() {
622
582
digitalWrite (_cs_pin, HIGH);
623
583
#endif
624
584
625
- #ifdef SPI_HAS_TRANSACTION
626
- _spi->endTransaction ();
585
+ spi_dev->endTransaction ();
627
586
_isInTransaction = false ;
628
- #endif
629
-
630
587
}
631
588
632
589
/* *************************************************************************/
@@ -635,20 +592,14 @@ void Adafruit_EPD::csHigh() {
635
592
*/
636
593
/* *************************************************************************/
637
594
void Adafruit_EPD::csLow () {
638
-
639
- #ifdef SPI_HAS_TRANSACTION
640
- if (!_isInTransaction) {
641
- _spi->beginTransaction (SPISettings (4000000 , MSBFIRST, SPI_MODE0));
642
- _isInTransaction = true ;
643
- }
644
- #endif
595
+ spi_dev->beginTransaction ();
596
+ _isInTransaction = true ;
645
597
646
598
#ifdef BUSIO_USE_FAST_PINIO
647
599
*csPort &= ~csPinMask;
648
600
#else
649
601
digitalWrite (_cs_pin, LOW);
650
602
#endif
651
-
652
603
}
653
604
654
605
/* *************************************************************************/
0 commit comments