Chat here about code rewrites, mods, etc... with respect to the github project https://github.com/esp8266/Arduino

Moderator: igrr

User avatar
By cosmok82
#16739 In this report, I'm going to show the sequences in HSPI of this simple test code:
Code: Select all#include <SPI.h>

uint8_t data;

void setup() {

  SPI.begin(HSPI); // selected HSPI
  data = 0x04;
}

void loop() {
  SPI.spi_tx8(data);
}


The picture below represents digital signals of data 0x4.
Image

The picture below represents a data manipulation of same logging data sequences (for a better resolution).
Image

As you can see, the SPI driver works properly (with a bit of noice on data MOSI). My only doubt is for the delay after clock stop, just at the ending. There is a CS delay of about 625ns at 4Mhz. I don't know if it can be a problem or not, but it seems that the HSPI works like this.
I posted original logging files directly on my github.

Some your considerations (about working) would be useful.
User avatar
By cosmok82
#16826 With some modifications on multipliers and some oscilloscope tests, I achieved up to 21 Mhz of clock. Really to much for my personal DSO :D , but enough to show me some data ;) .
You can see the results below.

2Mhz of CLK
Image

Over 11.6Mhz of CLK
Image

Over 21Mhz of CLK
Image
User avatar
By cosmok82
#17333 I tested some updates applied to my previous code and now it works perfectly. I leave you below some screenshots of my logic analyzer to show SPI signal correspondence to source code.

The source code tested:
Code: Select all#include <SPI.h>

void setup() {

  SPI.begin(HSPI); // selected HSPI
}

void loop() {
  SPI.spi_tx8(0x04);
  SPI.spi_tx8(0x0A);
  SPI.spi_tx8(0x0B);
 
  SPI.spi_tx16(0x44);
  SPI.spi_tx16(0xAB);
  SPI.spi_tx16(0xAC);
 
  SPI.spi_tx32(0x4444);
  SPI.spi_tx32(0xAAAA);
  SPI.spi_tx32(0xBBBB);
}


The corresponding screenshots for a 4 Mhz signal...
Image
Image
Image

This is the list of samples:
Code: Select alllibsigrok 0.3.0
Acquisition with 8/8 channels at 8 MHz
0:10011001 10011001 10011001 10000000 00000000 00000000 00000000 00000000
1:00000000 00000000 00000000 00000111 11111111 11111111 11111111 11100000
2:10101010 10101010 10101010 10100000 00000000 00000000 00000000 00000000
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
0:00000000 00000000 00000000 00000001 10011111 10011111 10011111 10011110
1:00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
2:10101010 10101010 10101010 10101010 10101010 10101010 10101010 10101010
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
0:00000000 00000000 00000000 00000000 00000000 00001100 00000000 00000000
1:01111111 11111111 11111111 11111100 00000000 00000000 00001111 11111111
2:00000000 00000000 00000000 00000000 00010101 01010101 01000000 00000000
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
0:00000000 00000000 00000000 00000110 01100000 00000000 00000000 00000000
1:11111111 11111111 10000000 00000000 00000000 11111111 11111111 11111111
2:00000000 00000000 00000010 10101010 10101000 00000000 00000000 00000000
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
0:00000000 00000000 01100111 10000000 00000000 00000000 00000000 00000000
1:11111000 00000000 00000000 00011111 11111111 11111111 11111111 10000000
2:00000000 00101010 10101010 10000000 00000000 00000000 00000000 00000010
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
0:00000000 00000001 10000001 10000000 00000000 00000000 00000000 00000000
1:00000000 00000000 00000000 00000001 11111111 11111111 11111111 11100000
2:10101010 10101010 10101010 10101000 00000000 00000000 00000000 00000000
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
0:00000000 00000001 10011001 10011110 00000000 00000000 00000000 00000000
1:00000000 00000000 00000000 00000000 00111111 11111111 11111111 11111100
2:10101010 10101010 10101010 10101010 00000000 00000000 00000000 00000000
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
0:00000000 00000000 00110011 00111100 00000000 00000000 00000000 00000000
1:00000000 00000000 00000000 00000000 00000111 11111111 11111111 11111111
2:00010101 01010101 01010101 01010101 01000000 00000000 00000000 00000000
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
0:00000000 00000000 00000000 00000000 00000000 11000000 11000000 11000000
1:11000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
2:00000001 01010101 01010101 01010101 01010101 01010101 01010101 01010101
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
0:11000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
1:00000000 11111111 11111111 11111111 11111100 00000000 00000000 00000000
2:01010100 00000000 00000000 00000000 00000000 00010101 01010101 01010101
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
0:00000000 00110011 00110011 00110011 00110011 00000000 00000000 00000000
1:00000000 00000000 00000000 00000000 00000000 00001111 11111111 11111111
2:01010101 01010101 01010101 01010101 01010101 01000000 00000000 00000000
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
0:00000000 00000000 00000000 00000000 00000000 00000110 01111110 01111110
1:11111111 10000000 00000000 00000000 00000000 00000000 00000000 00000000
2:00000000 00000010 10101010 10101010 10101010 10101010 10101010 10101010
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
0:01111110 01111000 00000000 00000000 00000000 00000000 00000000 00110000
1:00000000 00000000 11111111 11111111 11111111 11110000 00000000 00000000
2:10101010 10101000 00000000 00000000 00000000 00000000 01010101 01010101
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
0:00000000 00000000 00000000 00000000 00000000 00001100 11000000 00000000
1:00111111 11111111 11111111 11111111 00000000 00000000 00000011 11111111
2:00000000 00000000 00000000 00000000 00000101 01010101 01010000 00000000
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
0:00000000 00000000 00000000 00000001 10011110 00000000 00000000 00000000
1:11111111 11111111 11100000 00000000 00000000 01111111 11111111 11111111
2:00000000 00000000 00000000 10101010 10101010 00000000 00000000 00000000
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
0:00000000 00000000 00000000 00000110 00000110 00000000 00000000 00000000
1:11111110 00000000 00000000 00000000 00000000 00000111 11111111 11111111
2:00000000 00001010 10101010 10101010 10101010 10100000 00000000 00000000
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
0:00000000 00000000 00000000 00000011 00110011 00111100 00000000 00000000
1:11111111 11000000 00000000 00000000 00000000 00000000 11111111 11111111
2:00000000 00000001 01010101 01010101 01010101 01010100 00000000 00000000
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
0:00000000 00000000 00000000 00000000 01100110 01111000 00000000 00000000
1:11111111 11111000 00000000 00000000 00000000 00000000 00011111 11111111
2:00000000 00000000 00101010 10101010 10101010 10101010 10000000 00000000
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
0:00000000 00000000 00000000 00000000 00000000 00000000 00000011 00000011
1:11111111 11111111 00000000 00000000 00000000 00000000 00000000 00000000
2:00000000 00000000 00000101 01010101 01010101 01010101 01010101 01010101
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
0:00000011 00000011 00000000 00000000 00000000 00000000 00000000 00000000
1:00000000 00000000 00000011 11111111 11111111 11111111 11110000 00000000
2:01010101 01010101 01010000 00000000 00000000 00000000 00000000 01010101
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
0:00000000 00000000 00000000 11001100 11001100 11001100 11001100 00000000
1:00000000 00000000 00000000 00000000 00000000 00000000 00000000 00111111
2:01010101 01010101 01010101 01010101 01010101 01010101 01010101 00000000
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
0:00000000 00000000 00000000 00000000 00000000 00000000 00000000 00001100
1:11111111 11111111 11111111 00000000 00000000 00000000 00000000 00000000
2:00000000 00000000 00000000 00000101 01010101 01010101 01010101 01010101
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
0:11111100 11111100 11111100 11110000 00000000 00000000 00000000 00000000
1:00000000 00000000 00000000 00000011 11111111 11111111 11111111 11100000
2:01010101 01010101 01010101 01010000 00000000 00000000 00000000 00000000
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
0:00000000 01100000 00000000 00000000 00000000 00000000 00000000 00110011
1:00000000 00000000 01111111 11111111 11111111 11111100 00000000 00000000
2:10101010 10101010 00000000 00000000 00000000 00000000 00010101 01010101
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
0:00000000 00000000 00000000 00000000 00000000 00000011 00111100 00000000
1:00001111 11111111 11111111 11111111 11000000 00000000 00000000 11111111
2:01000000 00000000 00000000 00000000 00000001 01010101 01010100 00000000
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
0:00000000 00000000 00000000 00000000 00000000 00011000 00011000 00000000
1:11111111 11111111 11111000 00000000 00000000 00000000 00000000 00011111
2:00000000 00000000 00000000 00101010 10101010 10101010 10101010 10000000
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
0:00000000 00000000 00000000 00000000 00000000 00001100 11001100 11110000
1:11111111 11111111 11111111 00000000 00000000 00000000 00000000 00000011
2:00000000 00000000 00000000 00000101 01010101 01010101 01010101 01010000
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
0:00000000 00000000 00000000 00000000 00000000 00000001 10011001 11100000
1:11111111 11111111 11111111 11100000 00000000 00000000 00000000 00000000
2:00000000 00000000 00000000 00000000 10101010 10101010 10101010 10101010
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
0:00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
1:01111111 11111111 11111111 11111110 00000000 00000000 00000000 00000000
2:00000000 00000000 00000000 00000000 00001010 10101010 10101010 10101010
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
0:00000110 00000110 00000110 00000110 00000000 00000000 00000000 00000000
1:00000000 00000000 00000000 00000000 00000111 11111111 11111111 11111111
2:10101010 10101010 10101010 10101010 10100000 00000000 00000000 00000000
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
0:00000000 00000000 00000000 00000000 00000001 10011001 10011001 10011001
1:11100000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
2:00000000 10101010 10101010 10101010 10101010 10101010 10101010 10101010
3:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
4:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
5:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
6:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111
7:11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111


I hope to integrate all bug fixes and reading features into my code within the weekend.
I wish to solve all problems even for the display library, but I don't know if the time is enough.