@@ -195,7 +195,7 @@ void Adafruit_SSD1306::begin(uint8_t vccstate, uint8_t i2caddr, bool reset) {
195
195
dev_config.duty_cycle_pos = 0 ;
196
196
dev_config.cs_ena_posttrans = 0 ;
197
197
dev_config.cs_ena_pretrans = 0 ;
198
- dev_config.clock_speed_hz = 100000 ; // 100KHz
198
+ dev_config.clock_speed_hz = 1000000 ; // 1MHz
199
199
dev_config.spics_io_num = cs;
200
200
dev_config.flags = 0 ;
201
201
dev_config.queue_size = 1 ;
@@ -393,27 +393,33 @@ void Adafruit_SSD1306::dim(boolean dim) {
393
393
}
394
394
395
395
void Adafruit_SSD1306::display (void ) {
396
- ssd1306_command (SSD1306_COLUMNADDR);
397
- ssd1306_command (0 ); // Column start address (0 = reset)
398
- ssd1306_command (SSD1306_LCDWIDTH-1 ); // Column end address (127 = reset)
399
-
400
- ssd1306_command (SSD1306_PAGEADDR);
401
- ssd1306_command (0 ); // Page start address (0 = reset)
402
- #if SSD1306_LCDHEIGHT == 64
403
- ssd1306_command (7 ); // Page end address
404
- #endif
405
- #if SSD1306_LCDHEIGHT == 32
406
- ssd1306_command (3 ); // Page end address
407
- #endif
408
- #if SSD1306_LCDHEIGHT == 16
409
- ssd1306_command (1 ); // Page end address
410
- #endif
396
+
397
+ gpio_set_level ((gpio_num_t )dc, 0 );
398
+ uint8_t cmd_buffer[] = {SSD1306_COLUMNADDR, 0 , SSD1306_LCDWIDTH-1 , SSD1306_PAGEADDR, 0 , (SSD1306_LCDHEIGHT/8 -1 )};
399
+ spi_transaction_t trans_desc;
400
+ trans_desc.addr = 0 ;
401
+ trans_desc.cmd = 0 ;
402
+ trans_desc.flags = 0 ;
403
+ trans_desc.length = 6 * 8 ;
404
+ trans_desc.rxlength = 0 ;
405
+ trans_desc.tx_buffer = cmd_buffer;
406
+ trans_desc.rx_buffer = NULL ;
407
+
408
+ ESP_ERROR_CHECK (spi_device_transmit (spi_handle, &trans_desc));
411
409
412
410
gpio_set_level ((gpio_num_t )dc, 1 );
413
411
414
- for (uint16_t i=0 ; i<(SSD1306_LCDWIDTH * SSD1306_LCDHEIGHT/8 ); i++) {
415
- fastSPIwrite (buffer[i]);
416
- }
412
+ // spi_transaction_t trans_desc;
413
+ trans_desc.addr = 0 ;
414
+ trans_desc.cmd = 0 ;
415
+ trans_desc.flags = 0 ;
416
+ trans_desc.length = SSD1306_LCDHEIGHT * SSD1306_LCDWIDTH;
417
+ trans_desc.rxlength = 0 ;
418
+ trans_desc.tx_buffer = buffer;
419
+ trans_desc.rx_buffer = NULL ;
420
+
421
+ ESP_ERROR_CHECK (spi_device_transmit (spi_handle, &trans_desc));
422
+
417
423
}
418
424
419
425
// clear everything
@@ -424,8 +430,8 @@ void Adafruit_SSD1306::clearDisplay(void) {
424
430
425
431
inline void Adafruit_SSD1306::fastSPIwrite (uint8_t d) {
426
432
spi_transaction_t trans_desc;
427
- trans_desc.address = 0 ;
428
- trans_desc.command = 0 ;
433
+ trans_desc.addr = 0 ;
434
+ trans_desc.cmd = 0 ;
429
435
trans_desc.flags = 0 ;
430
436
trans_desc.length = 8 ;
431
437
trans_desc.rxlength = 0 ;
@@ -651,3 +657,15 @@ void Adafruit_SSD1306::drawFastVLineInternal(int16_t x, int16_t __y, int16_t __h
651
657
}
652
658
}
653
659
}
660
+ #ifndef ARDUINO
661
+ void Adafruit_SSD1306::println (char * text){
662
+ print (text);
663
+ print ((char *)" \n " );
664
+ }
665
+ void Adafruit_SSD1306::print (char * text){
666
+ while (*text != 0 ) {
667
+ write (*text);
668
+ text++;
669
+ }
670
+ }
671
+ #endif
0 commit comments