RudolphRiedel / FT800-FT813

Multi-Platform C code Library for EVE graphics controllers from FTDI / Bridgetek (FT810, FT811, FT812, FT813, BT815, BT816, BT817, BT818)
MIT License
133 stars 58 forks source link

cmd_text does not display text #47

Closed SirVer closed 1 year ago

SirVer commented 2 years ago

I am playing with a BT815 device and everything seems to be going great. Except for cmd_font which has peculiar issues. I tried V 4.0 of this library and also the latest that does not keep track of the cmd_offset anymore, instead writing into REG_CMDB_WRITE.

What I observe is that strings of certain length are not rendered, but the device continues. In my true application, later commands then sometimes report ominous errors like invalid padding for cmd_flashread - even though I do not intend to run cmd_flashread anyways. It feels like an alignment error, but I cannot pin it down.

Most lengths string work fine. If I run this python program as outside trigger:

for i in range(1, 100):
    print i
    subprocess.check_call(["./tester", "a" * i])
    time.sleep(0.5)

And here is the full C program tester, without #includes:

int main(int argc, char** argv)
{
        if(platform_spi_init() != 1){
                printf("spi init failed");
                return -1;
        }
        if (EVE_init() == 0) {
                printf("eve init failed");
                return -1;
        }

        EVE_cmd_dl(CMD_SYNC);
        EVE_cmd_dl(CMD_DLSTART);

        EVE_cmd_dl(DL_COLOR_RGB | 0xffffff);

        EVE_cmd_dl(DL_CLEAR | CLR_COL | CLR_STN | CLR_TAG);
        EVE_cmd_dl(DL_CLEAR_RGB | 0x000000);

        EVE_cmd_text(100, 150, 23, 0, argv[1]);

        EVE_cmd_dl(DL_DISPLAY);
        EVE_cmd_dl(CMD_SWAP);
        EVE_cmd_execute();

        return 0;
}

All strings render, except for length

12, 13, 14, 15
44, 45, 46, 47
76, 77, 78, 79, 

However when I start with i=44 instead of i=1, then the first string will render, but the next one will not. Can you reproduce this issue? Any idea what it might be?

RudolphRiedel commented 2 years ago

This looks like the padding for the strings fails, strings need to be filled with zeroes at the end to full 32 bits. But this really should not happen and the way it fails is really strange. What target are you compiling for?

SirVer commented 2 years ago

The host is an armv7l GNU/Linux, it is specifically a Linux industrial computer for charging stations for electric vehicles, 1GB Ram and it most closely resembles a raspberry pi.

$ cat /proc/cpuinfo
processor   : 0
model name  : ARMv7 Processor rev 5 (v7l)
BogoMIPS    : 12.00
Features    : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part    : 0xc07
CPU revision    : 5

Hardware    : Freescale i.MX6 UltraLite (Device Tree)
Revision    : 0000
Serial      : 52222
RudolphRiedel commented 2 years ago

Ok, mit einer APU habe ich bisher noch gar nicht gespielt, das Ding hat ja schließlich auch eine eingebaute Grafik-Einheit und ist damit so ein wenig ausserhalb der Ziel-Gruppe. :-) Aber eigentlich ist das auch "nur" ein ARMv7 und 32 bit, damit ist der dem Cortex M4 nicht ganz unähnlich. Und Cortex M4 benutze ich ja hauptsächlich, damit kann das erstmal nicht was grundsätzlich inkompatibles sein. Kannst Du einen Trace von den CMD_TEXT ziehen? Oder alles für ein Kommando irgendwie speichern?

SirVer commented 2 years ago

@RudolphRiedel Danke für deine Unterstützung! Sehr gerne liefer ich alles, aber was genau meinst du mit "Trace"? Einen strace? Oder soll ich alles was über in spi_transmit_with_len über den SPI bus geschickt wird als hexcode dumpen? Kann ich heute abend liefern.

SirVer commented 2 years ago

Hier ist ein strace mit 11 buchstaben (die angezeigt werden) und einer mit 12 buchstaben (die nicht angezeigt werden).

RudolphRiedel commented 2 years ago

Moin, ich musste erstmal Google fragen was ein strace ist. :-) Linux und ich sind noch keine Freunde. Und da war ich etwas langsam beim Tippen, dann schaue ich mir gleich mal die beiden strace an.

Was ich zum Debuggen normalerweise mache ist mir den Datenstrom auf dem SPI mit einem Logic-Analyzer anzusehen. Ich mache eine Aufzeichnung / Trace von so 2s ab Reset und schaue mir damit sozusagen das Endergebnis an, das muss zum einen für alle Platformen gleich sein, zum anderen kann ich daran das konkrete Timing Verhalten bewerten. Also wenn die Funktion spi_transmit_with_len() mit einem CMD_TEXT gefüttert wird dann könnte der Hex-Dump davon schon interessant sein, wobei die ja nicht von mir ist, da ist die Frage woher der Puffer und die Länge kommen mir der die gefüttert wird und was die Funktion wirklich macht.

Dann habe ich gerade mal ein Diff gemacht. Benutzt Du den aktuellen Stand, oder den 5.0.4 Release? Im aktuellen Stand habe ich die Funktion private_string_write() noch mal überarbeitet. In der V4 ist die entscheidende Funktion EVE_write_string(), die sieht da noch mal anders aus. Getestet sind eigentlich alle Varianten, aber ich glaube ich setze noch mal einen umfangreicheren Test dafür auf.

RudolphRiedel commented 2 years ago

Also was hier drin steht wäre interessant: ioctl(3, SPI_IOC_MESSAGE(32), 0x7edb3b00) = 32

Wobei, wenn 32 die Länge ist, dann ist das ja schon mal durch 4 teilbar. Was mich aber wundert, das sollten 28 sein mit einem String von 12. Und 24 mit einem String von 11.

Das Kommando selber braucht 12 Bytes und bei 11+ Null-Byte sind es eben 24, bei einer Länger von 12 kommen 4 Null-Bytes dazu. Sind das einzelne Kommandos mit jeweills Chip-Select? Das würde die zusätzlichen Bytes erklären. Dann müssten die Längen aber alle ungerade sein, weil die Adresse ja nur 3 Byte lang ist.

SirVer commented 2 years ago

Was ich zum Debuggen normalerweise mache ist mir den Datenstrom auf dem SPI mit einem Logic-Analyzer anzusehen.

Uh, das übersteigt meine Fähigkeiten. Auf der Arbeit haben wir aber so ein Ding, vll kann ein Kollege helfen. Das braucht dann aber sicher ein paar Wochen.

Dann habe ich gerade mal ein Diff gemacht. Benutzt Du den aktuellen Stand, oder den 5.0.4 Release? Das ist ein älterer stand, von Version 4. Ich hatte auch den 5.x mal am laufen, sah aber das gleiche verhalten.

Sind das einzelne Kommandos mit jeweills Chip-Select? Das würde die zusätzlichen Bytes erklären. Ich verstehe die Frage leider nicht - ich weiss nicht was ein Chip select ist.

So wie ich den code verstehe schreibt er 3 bytes für die adresse auf dem chip, dann das CMD_TEXT commando (4 bytes), 8 bytes für die argumente, dann den string mit nem nullbyte (12 + 1 bzw 11 + 1). Dann wird der content auf 4 bytes gepadded für den command buffer im device (der will ja 4 bytes alignment), dann wird der ganze buffer noch für SPI transfer gepadded (auf 4 bytes), ergo

string länge 11: `padded(3 (addr) + padded(4 (CMD_TEXT) + 8 (args) + 12 (str mit null))) = 28 bytes`
string länge 12: `padded(3 (addr) + padded(4 (CMD_TEXT) + 8 (args) + 13 (str mit null))) = 32 bytes` 

Oder ist da was falsch?

RudolphRiedel commented 2 years ago

So wie ich den code verstehe schreibt er 3 bytes für die adresse auf dem chip, dann das CMD_TEXT commando (4 bytes), 8 bytes für die argumente, dann den string mit nem nullbyte (12 + 1 bzw 11 + 1). Dann wird der content auf 4 bytes gepadded für den command buffer im device (der will ja 4 bytes alignment), dann wird der ganze buffer noch für SPI transfer gepadded (auf 4 bytes), ergo

string länge 11: `padded(3 (addr) + padded(4 (CMD_TEXT) + 8 (args) + 12 (str mit null))) = 28 bytes`
string länge 12: `padded(3 (addr) + padded(4 (CMD_TEXT) + 8 (args) + 13 (str mit null))) = 32 bytes` 

Oder ist da was falsch?

Das Nullbyte für das Ende des Strings ist Teil des Paddings, es werden 1 bis 4 Nullbytes angehängt um auf volle 32 Bit für das Kommando zu kommen. Ein einzelnes Kommando oder auch im Burst-Modes eine Folge von Kommandos muss leider immer eine ungerade Anzahl an Bytes haben. Ich mache das so das ich von dem DMA Puffer das Nullte Byte nicht schicke, damit sind dann die ganzen Kommandos wieder auf 32 Bit aligned.

RudolphRiedel commented 2 years ago

So sieht das im Logic-Analyzer aus, 11 Zeichen: grafik

12 Zeichen: grafik

Also 27 und 31 Bytes, oder eben 3+24 und 3+28.

SirVer commented 2 years ago

Mmh.. wenn ich so die commands schicke, dann kommt gar nichts bei meinem device an. Das sehe ich daran, dass cmd_write nicht erhöht wird. Ich hab mein program noch mal so verändert, dass ich das padding über die kommandozeile anhängen kann. Also ich push x y font opts text \x00 and dann noch mal so viele null-bytes, wie ich über die Kommandozeile bestellt habe. Dann habe ich experimentiert und aufgeschrieben, wie viele manuelle nullbytes ich pushen muss, dass text angezeigt wird.

Ausserdem rufe ich cmd_font nun zweimal auf, weil mir aufgefallen ist, dass es Situationen gibt indem einmal aufrufen geht, aber das zweit mal im gleichen program nicht - da wird dann kein text angezeigt, aber cmd_write erhöht sich wie beim ersten Aufruf.

Dabei kam das raus:

stringlänge anzahl nullbytes
1  3
2  2
3  1
4  4   0 geht einmal, sieht komisch aus
5  3
6  2
7  1
8  4   0 geht einmal, sieht komisch aus
9  3
10 2
11 1
12     0 geth einmal (falsches zeichen), 8 geht einmal (ohne falsches zeichen), 12, 16, 20, 24 geht einmal (ohne falsches Zeichen)
13     7 geht einmal, 11 geht einmal, 15 geht einmal, jeweils ohne falsches Zeichen
14     6, 10, ... gehen einmal, jeweils ohne falsches Zeichen
15     5, 9, 13, ... gehen einmal, jeweils ohne falsches Zeichen
16 4 
17 3   
18 2
19 1
20 0

Mit komisch meine ich, dass nach dem letzten buchstabe noch kuddelmuddel angezeigt wird. Als ob das nullbyte des textes es nicht in den command buffer geschafft hat.

IMG_9375

Hier sind einige hexdumps der geschriebenen bytes:

extra zeichen:
 8 pad 0: b0 25 78     0c ff ff ff     64 00 64 00     1c 00 00 00     30 31 32 33     34 35 36 37     00
12 pad 0: b0 25 78     0c ff ff ff     64 00 96 00     1c 00 00 00     30 31 32 33     34 35 36 37     38 39 61 62     00

funktioniert:
 8 pad 4: b0 25 78     0c ff ff ff     64 00 64 00     1c 00 00 00     30 31 32 33     34 35 36 37     00 00 00 00     00
16 pad 4: b0 25 78     0c ff ff ff     64 00 96 00     1c 00 00 00     30 31 32 33     34 35 36 37     38 39 61 62     65 66 67 68     00 00 00 00     00

# Geht nicht
12 pad 4: b0 25 78     0c ff ff ff     64 00 64 00     1c 00 00 00     30 31 32 33     34 35 36 37     38 39 61 62     00 00 00 00     00

# Geht einmal ohne falsches Zeichen, aber nicht zweimal
12 pad 8: b0 25 78     0c ff ff ff     64 00 96 00     1c 00 00 00     30 31 32 33     34 35 36 37     38 39 61 62     00 00 00 00     00 00 00 00 00

Hast Du noch irgendeine Idee?

RudolphRiedel commented 2 years ago

Nun, die Hex-Dumps sind alle falsch, das kann ich hier so nicht beobachten. Also selbst die wo es erstmal zu funktionieren scheint sind falsch.

8 Zeichen: b0 25 78 0c ff ff ff 64 00 64 00 1c 00 00 00 31 32 33 34 35 36 37 38 00 00 00 00 12 Zeichen: b0 25 78 0c ff ff ff 64 00 64 00 1c 00 00 00 31 32 33 34 35 36 37 38 39 30 61 62 00 00 00 00 16 Zeichen: b0 25 78 0c ff ff ff 64 00 64 00 1c 00 00 00 31 32 33 34 35 36 37 38 39 30 61 62 63 64 64 66 00 00 00 00

Die werden alle am Ende mit 4 Null-Bytes aufgefüllt und das ist auch richtig so. Der Hintergrund ist das die Kommandos alle auf 4-Bytes aligned im Speicher anfangen müssen.

Bleibt die Frage, welcher Code ist das genau, poste doch mal bitte die EVE_cmd_text() function und die dazugehörige Hilfs-Funktion die Du konkret verwendest.

SirVer commented 2 years ago

Alles klar, ich versuche ein fully contained C file zu posten, brauche aber ein paar Tage.

Vielen Dank schonmal für deine viele Hilfe!

RudolphRrr commented 2 years ago

Na, "fully contained" geht wahrscheinlich zu weit, mir war schon klar, dass Du meine Library nicht einfach nur benutzt, sondern da was eigenes daraus gemacht hast. Da ist ja auch nichts gegen einzuwenden, das macht nur die Analyse praktisch unmöglich. Bei allem was ich bisher getestet habe funktioniert mein EVE_cmd_text() so wie es soll - ich erhöhe gerade die Test-Tiefe.

Die Variante die Du gewählt hast, so mit Chip-Select und Adresse für jedes Kommando, ist übrigens die langsamste überhaupt. Und das EVE_cmd_dl(CMD_SYNC); am Anfang bewirkt in dem Kontext gar nichts.

SirVer commented 2 years ago

Na, "fully contained" geht wahrscheinlich zu weit, mir war schon klar, dass Du meine Library nicht einfach nur benutzt, sondern da was eigenes daraus gemacht hast.

ne, eigentlich haben wir nur einen workaround für dieses alignment problem zwischen 12 und 16 zeichen gemacht. Ich glaube, sonst haben wir nicht viel verändert.

Bei allem was ich bisher getestet habe funktioniert mein EVE_cmd_text() so wie es soll - ich erhöhe gerade die Test-Tiefe.

Mein bauchgefühl sagt mir, dass es ein SPI kernel bug oder ein problem mit unserem spezifischen setup hier ist - ist ja schon speziell mit diesem charge controller als computer. Mein team meinte auch, dass mit dem logic analyzer könne wir hinkriegen.

Die Variante die Du gewählt hast, so mit Chip-Select und Adresse für jedes Kommando, ist übrigens die langsamste überhaupt.

Geschwindigkeit ist mir im moment nicht so wichtig... Aber es gibt noch den burst modus, richtig?

Und das EVE_cmd_dl(CMD_SYNC); am Anfang bewirkt in dem Kontext gar nichts.

ja, ich glaube das habe ich jetzt auch verstanden. Das braucht man nur, wenn man zum beispiel den RAM mit anderen bildern updaten will und das nicht flickern soll, oder? Für display list commands sorgt ja CMD_SWAP schon dafür, dass die liste sauber ausgetauscht wird.

RudolphRrr commented 2 years ago

So, ich habe mal ein EVE3-50G mit Pins für den Logic-Analyzer ausgestattet und ein vorhandenes Projekt mit dem aktuellen Stand aus Github gefüttert, sowie die Display-Liste angepasst.

Das hier wird ohne zu Murren gerade 50 Mal die Sekunde angezeigt: grafik

EVE_cmd_dl(CMD_DLSTART); /* start the display list */ EVE_cmd_dl(DL_CLEAR_RGB | WHITE); /* set the default clear color to white */ EVE_cmd_dl(DL_CLEAR | CLR_COL | CLR_STN | CLR_TAG); EVE_cmd_dl(TAG(0)); EVE_cmd_append(MEM_DL_STATIC, num_dl_static); EVE_color_rgb(BLACK); EVE_cmd_text(20, 100, 29, 0, "1234567"); EVE_cmd_text(20, 130, 29, 0, "12345678"); EVE_cmd_text(20, 160, 29, 0, "123456789"); EVE_cmd_text(20, 190, 29, 0, "1234567890"); EVE_cmd_text(20, 220, 29, 0, "1234567890a"); EVE_cmd_text(20, 250, 29, 0, "1234567890ab"); EVE_cmd_text(20, 280, 29, 0, "1234567890abc"); EVE_cmd_text(20, 310, 29, 0, "1234567890abcd"); EVE_cmd_text(20, 340, 29, 0, "1234567890abcde"); EVE_cmd_text(20, 370, 29, 0, "1234567890abcdef"); EVE_cmd_text(20, 400, 29, 0, "1234567890abcdefg"); EVE_cmd_number(60, EVE_VSIZE - 15, 26, EVE_OPT_RIGHTX|4, display_list_size); /* number of bytes written to the display-list by the command co-pro */ EVE_cmd_number(130, EVE_VSIZE - 15, 26, EVE_OPT_RIGHTX|4, cmd_fifo_size); /* number of bytes written to the cmd-fifo over the spi without adressing overhead */ EVE_cmd_number(220, EVE_VSIZE - 15, 26, EVE_OPT_RIGHTX|4, num_profile_a); /* duration in us of TFT_loop() for the touch-event part */ EVE_cmd_number(320, EVE_VSIZE - 15, 26, EVE_OPT_RIGHTX|4, num_profile_b); /* duration in us of TFT_loop() for the display-list part */ EVE_execute_cmd();

Und aus dem SPI kommt laut Logic-Analyzer gerade das hier: name type start_time duration mosi miso SPI enable 8.53623192e-08 1.99999999e-08
SPI result 8.25362319e-07 6.4e-07 0x30 0x00 SPI result 2.12536232e-06 6.4e-07 0x25 0x4A SPI result 3.46536232e-06 6.4e-07 0x74 0x43 SPI result 4.82536232e-06 6.4e-07 0x00 0x42 SPI result 6.10536232e-06 6.4e-07 0x00 0xFC SPI result 7.44536232e-06 6.4e-07 0x00 0x0F SPI disable 8.70536232e-06 1.99999999e-08
SPI enable 1.03053623e-05 1.99999999e-08
SPI result 1.10453623e-05 6.6e-07 0x30 0x00 SPI result 1.23453623e-05 6.4e-07 0x21 0x4A SPI result 1.37053623e-05 6.4e-07 0x00 0x43 SPI result 1.50653623e-05 6.4e-07 0x00 0x42 SPI result 1.63253623e-05 6.4e-07 0x00 0xB4 SPI result 1.76853623e-05 6.4e-07 0x00 0x04 SPI disable 1.89453623e-05 1.99999995e-08
SPI enable 2.00653623e-05 1.99999999e-08
SPI result 2.04453623e-05 6.4e-07 0xB0 0x00 SPI result 2.17253623e-05 6.4e-07 0x25 0x4A SPI result 2.30853623e-05 6.4e-07 0x78 0x43 SPI result 2.44853623e-05 6.4e-07 0x00 0x42 SPI result 2.58253623e-05 6.4e-07 0xFF 0x00 SPI result 2.72053623e-05 6.4e-07 0xFF 0x00 SPI result 2.85053623e-05 6.6e-07 0xFF 0x00 SPI disable 2.97853623e-05 1.99999999e-08
SPI enable 3.07853623e-05 1.99999999e-08
SPI result 3.11853623e-05 6.4e-07 0xB0 0x00 SPI result 3.24453623e-05 6.4e-07 0x25 0x4A SPI result 3.38053623e-05 6.4e-07 0x78 0x43 SPI result 3.52253623e-05 6.4e-07 0xFF 0x42 SPI result 3.65653623e-05 6.4e-07 0xFF 0x00 SPI result 3.79253623e-05 6.4e-07 0xFF 0x00 SPI result 3.92453623e-05 6.4e-07 0x02 0x00 SPI disable 4.05053623e-05 1.99999999e-08
SPI enable 4.15253623e-05 1.99999999e-08
SPI result 4.19053623e-05 6.4e-07 0xB0 0x00 SPI result 4.31853623e-05 6.4e-07 0x25 0x4A SPI result 4.45453623e-05 6.4e-07 0x78 0x43 SPI result 4.59453623e-05 6.4e-07 0x07 0x42 SPI result 4.72853623e-05 6.4e-07 0x00 0x00 SPI result 4.86653623e-05 6.4e-07 0x00 0x00 SPI result 4.99653623e-05 6.4e-07 0x26 0x00 SPI disable 5.12453623e-05 1.99999999e-08
SPI enable 5.23453623e-05 1.99999999e-08
SPI result 5.27253623e-05 6.4e-07 0xB0 0x00 SPI result 5.39853623e-05 6.6e-07 0x25 0x4A SPI result 5.53453623e-05 6.4e-07 0x78 0x43 SPI result 5.67653623e-05 6.4e-07 0x00 0x42 SPI result 5.81053623e-05 6.4e-07 0x00 0x00 SPI result 5.94653623e-05 6.4e-07 0x00 0x00 SPI result 6.07853623e-05 6.4e-07 0x03 0x00 SPI disable 6.20453623e-05 1.99999999e-08
SPI enable 6.35253623e-05 1.99999999e-08
SPI result 6.39053623e-05 6.4e-07 0xB0 0x00 SPI result 6.51853623e-05 6.4e-07 0x25 0x4A SPI result 6.65453623e-05 6.4e-07 0x78 0x43 SPI result 6.79453623e-05 6.4e-07 0x1E 0x42 SPI result 6.92853623e-05 6.4e-07 0xFF 0x00 SPI result 7.06653623e-05 6.4e-07 0xFF 0x00 SPI result 7.19653623e-05 6.6e-07 0xFF 0x00 SPI result 7.37053623e-05 6.4e-07 0x00 0x00 SPI result 7.50853623e-05 6.4e-07 0xF0 0x00 SPI result 7.64853623e-05 6.6e-07 0x0F 0x00 SPI result 7.77653623e-05 6.4e-07 0x00 0x00 SPI result 7.94053623e-05 6.4e-07 0x24 0x00 SPI result 8.07053623e-05 6.4e-07 0x01 0x00 SPI result 8.20453623e-05 6.4e-07 0x00 0x00 SPI result 8.33053623e-05 6.4e-07 0x00 0x00 SPI disable 8.45253623e-05 2.00000004e-08
SPI enable 8.58453623e-05 2.00000004e-08
SPI result 8.62253623e-05 6.4e-07 0xB0 0x00 SPI result 8.74853623e-05 6.6e-07 0x25 0x4A SPI result 8.88453623e-05 6.4e-07 0x78 0x43 SPI result 9.02653623e-05 6.4e-07 0x00 0x42 SPI result 9.16053623e-05 6.4e-07 0x00 0x00 SPI result 9.29653623e-05 6.6e-07 0x00 0x00 SPI result 9.42853623e-05 6.4e-07 0x04 0x00 SPI disable 9.55453623e-05 1.99999995e-08
SPI enable 9.72453623e-05 2.00000004e-08
SPI result 9.76453623e-05 6.4e-07 0xB0 0x00 SPI result 9.89053623e-05 6.4e-07 0x25 0x4A SPI result 0.000100265362 6.4e-07 0x78 0x43 SPI result 0.000101685362 6.4e-07 0x0C 0x42 SPI result 0.000103025362 6.4e-07 0xFF 0x00 SPI result 0.000104385362 6.4e-07 0xFF 0x00 SPI result 0.000105705362 6.4e-07 0xFF 0x00 SPI result 0.000107185362 6.4e-07 0x14 0x00 SPI result 0.000108565362 6.4e-07 0x00 0x00 SPI result 0.000109865362 6.4e-07 0x64 0x00 SPI result 0.000111205362 6.4e-07 0x00 0x00 SPI result 0.000112565362 6.4e-07 0x1D 0x00 SPI result 0.000113845362 6.4e-07 0x00 0x00 SPI result 0.000115205362 6.4e-07 0x00 0x00 SPI result 0.000116565362 6.39999999e-07 0x00 0x00 SPI result 0.000118865362 6.4e-07 0x31 0x00 SPI result 0.000120385362 6.4e-07 0x32 0x00 SPI result 0.000121785362 6.4e-07 0x33 0x00 SPI result 0.000123145362 6.4e-07 0x34 0x00 SPI result 0.000124545362 6.4e-07 0x35 0x00 SPI result 0.000125885362 6.4e-07 0x36 0x00 SPI result 0.000127245362 6.4e-07 0x37 0x00 SPI result 0.000128885362 6.4e-07 0x00 0x00 SPI disable 0.000130585362 1.99999995e-08
SPI enable 0.000132165362 1.99999999e-08
SPI result 0.000132565362 6.4e-07 0xB0 0x00 SPI result 0.000133825362 6.4e-07 0x25 0x4A SPI result 0.000135185362 6.4e-07 0x78 0x43 SPI result 0.000136605362 6.4e-07 0x0C 0x42 SPI result 0.000137925362 6.6e-07 0xFF 0x00 SPI result 0.000139305362 6.4e-07 0xFF 0x00 SPI result 0.000140625362 6.4e-07 0xFF 0x00 SPI result 0.000142105362 6.4e-07 0x14 0x00 SPI result 0.000143485362 6.4e-07 0x00 0x00 SPI result 0.000144785362 6.4e-07 0x82 0x00 SPI result 0.000146125362 6.4e-07 0x00 0x00 SPI result 0.000147485362 6.4e-07 0x1D 0x00 SPI result 0.000148765362 6.4e-07 0x00 0x00 SPI result 0.000150125362 6.4e-07 0x00 0x00 SPI result 0.000151485362 6.39999999e-07 0x00 0x00 SPI result 0.000153785362 6.4e-07 0x31 0x00 SPI result 0.000155305362 6.4e-07 0x32 0x00 SPI result 0.000156705362 6.4e-07 0x33 0x00 SPI result 0.000158065362 6.4e-07 0x34 0x00 SPI result 0.000159465362 6.4e-07 0x35 0x00 SPI result 0.000160805362 6.4e-07 0x36 0x00 SPI result 0.000162165362 6.4e-07 0x37 0x00 SPI result 0.000163525362 6.4e-07 0x38 0x00 SPI result 0.000165165362 6.4e-07 0x00 0x00 SPI result 0.000166505362 6.4e-07 0x00 0x00 SPI result 0.000167745362 6.4e-07 0x00 0x00 SPI result 0.000169005362 6.4e-07 0x00 0x00 SPI disable 0.000170625362 1.99999999e-08
SPI enable 0.000172105362 1.99999999e-08
SPI result 0.000172505362 6.4e-07 0xB0 0x00 SPI result 0.000173765362 6.4e-07 0x25 0x4A SPI result 0.000175125362 6.4e-07 0x78 0x43 SPI result 0.000176545362 6.4e-07 0x0C 0x42 SPI result 0.000177865362 6.6e-07 0xFF 0x00 SPI result 0.000179245362 6.4e-07 0xFF 0x00 SPI result 0.000180565362 6.4e-07 0xFF 0x00 SPI result 0.000182045362 6.4e-07 0x14 0x00 SPI result 0.000183425362 6.4e-07 0x00 0x00 SPI result 0.000184725362 6.4e-07 0xA0 0x00 SPI result 0.000186065362 6.4e-07 0x00 0x00 SPI result 0.000187425362 6.4e-07 0x1D 0x00 SPI result 0.000188705362 6.4e-07 0x00 0x00 SPI result 0.000190065362 6.4e-07 0x00 0x00 SPI result 0.000191405362 6.6e-07 0x00 0x00 SPI result 0.000193725362 6.4e-07 0x31 0x00 SPI result 0.000195245362 6.4e-07 0x32 0x00 SPI result 0.000196645362 6.4e-07 0x33 0x00 SPI result 0.000198005362 6.4e-07 0x34 0x00 SPI result 0.000199345362 6.4e-07 0x35 0x00 SPI result 0.000200705362 6.4e-07 0x36 0x00 SPI result 0.000202065362 6.4e-07 0x37 0x00 SPI result 0.000203425362 6.4e-07 0x38 0x00 SPI result 0.000204845362 6.6e-07 0x39 0x00 SPI result 0.000206545362 6.4e-07 0x00 0x00 SPI result 0.000207865362 6.6e-07 0x00 0x00 SPI result 0.000209125362 6.4e-07 0x00 0x00 SPI disable 0.000210745362 1.99999995e-08
SPI enable 0.000212285362 1.99999999e-08
SPI result 0.000212665362 6.4e-07 0xB0 0x00 SPI result 0.000213945362 6.4e-07 0x25 0x4A SPI result 0.000215285362 6.39999999e-07 0x78 0x43 SPI result 0.000216705362 6.4e-07 0x0C 0x42 SPI result 0.000218045362 6.4e-07 0xFF 0x00 SPI result 0.000219425362 6.4e-07 0xFF 0x00 SPI result 0.000220725362 6.4e-07 0xFF 0x00 SPI result 0.000222205362 6.4e-07 0x14 0x00 SPI result 0.000223585362 6.4e-07 0x00 0x00 SPI result 0.000224905362 6.4e-07 0xBE 0x00 SPI result 0.000226225362 6.4e-07 0x00 0x00 SPI result 0.000227585362 6.4e-07 0x1D 0x00 SPI result 0.000228865362 6.6e-07 0x00 0x00 SPI result 0.000230225362 6.4e-07 0x00 0x00 SPI result 0.000231585362 6.4e-07 0x00 0x00 SPI result 0.000233905362 6.4e-07 0x31 0x00 SPI result 0.000235425362 6.4e-07 0x32 0x00 SPI result 0.000236845362 6.6e-07 0x33 0x00 SPI result 0.000238285362 6.4e-07 0x34 0x00 SPI result 0.000239685362 6.4e-07 0x35 0x00 SPI result 0.000241125362 6.4e-07 0x36 0x00 SPI result 0.000242565362 6.4e-07 0x37 0x00 SPI result 0.000244005362 6.4e-07 0x38 0x00 SPI result 0.000245445362 6.4e-07 0x39 0x00 SPI result 0.000246885362 6.4e-07 0x30 0x00 SPI result 0.000248605362 6.39999999e-07 0x00 0x00 SPI result 0.000249945362 6.4e-07 0x00 0x00 SPI disable 0.000251565362 1.99999995e-08
SPI enable 0.000253125362 1.99999999e-08
SPI result 0.000253525362 6.4e-07 0xB0 0x00 SPI result 0.000254785362 6.4e-07 0x25 0x4A SPI result 0.000256145362 6.4e-07 0x78 0x43 SPI result 0.000257565362 6.4e-07 0x0C 0x42 SPI result 0.000258905362 6.4e-07 0xFF 0x00 SPI result 0.000260265362 6.4e-07 0xFF 0x00 SPI result 0.000261585362 6.4e-07 0xFF 0x00 SPI result 0.000263065362 6.4e-07 0x14 0x00 SPI result 0.000264445362 6.4e-07 0x00 0x00 SPI result 0.000265745362 6.4e-07 0xDC 0x00 SPI result 0.000267085362 6.4e-07 0x00 0x00 SPI result 0.000268445362 6.4e-07 0x1D 0x00 SPI result 0.000269725362 6.4e-07 0x00 0x00 SPI result 0.000271085362 6.4e-07 0x00 0x00 SPI result 0.000272445362 6.4e-07 0x00 0x00 SPI result 0.000274745362 6.4e-07 0x31 0x00 SPI result 0.000276265362 6.4e-07 0x32 0x00 SPI result 0.000277705362 6.4e-07 0x33 0x00 SPI result 0.000279145362 6.4e-07 0x34 0x00 SPI result 0.000280585362 6.4e-07 0x35 0x00 SPI result 0.000282025362 6.4e-07 0x36 0x00 SPI result 0.000283465362 6.4e-07 0x37 0x00 SPI result 0.000284905362 6.4e-07 0x38 0x00 SPI result 0.000286325362 6.6e-07 0x39 0x00 SPI result 0.000287765362 6.4e-07 0x30 0x00 SPI result 0.000289205362 6.4e-07 0x61 0x00 SPI result 0.000290945362 6.4e-07 0x00 0x00 SPI disable 0.000292645362 2.00000004e-08
SPI enable 0.000294225362 1.99999995e-08
SPI result 0.000294605362 6.4e-07 0xB0 0x00 SPI result 0.000295885362 6.4e-07 0x25 0x4A SPI result 0.000297225362 6.4e-07 0x78 0x43 SPI result 0.000298645362 6.39999999e-07 0x0C 0x42 SPI result 0.000299985362 6.4e-07 0xFF 0x00 SPI result 0.000301365362 6.39999999e-07 0xFF 0x00 SPI result 0.000302665362 6.4e-07 0xFF 0x00 SPI result 0.000304145362 6.4e-07 0x14 0x00 SPI result 0.000305525362 6.4e-07 0x00 0x00 SPI result 0.000306845362 6.4e-07 0xFA 0x00 SPI result 0.000308165362 6.4e-07 0x00 0x00 SPI result 0.000309525362 6.4e-07 0x1D 0x00 SPI result 0.000310825362 6.4e-07 0x00 0x00 SPI result 0.000312165362 6.4e-07 0x00 0x00 SPI result 0.000313525362 6.4e-07 0x00 0x00 SPI result 0.000315845362 6.4e-07 0x31 0x00 SPI result 0.000317365362 6.4e-07 0x32 0x00 SPI result 0.000318785362 6.6e-07 0x33 0x00 SPI result 0.000320225362 6.4e-07 0x34 0x00 SPI result 0.000321625362 6.4e-07 0x35 0x00 SPI result 0.000322985362 6.4e-07 0x36 0x00 SPI result 0.000324345362 6.4e-07 0x37 0x00 SPI result 0.000325685362 6.4e-07 0x38 0x00 SPI result 0.000327045362 6.4e-07 0x39 0x00 SPI result 0.000328405362 6.4e-07 0x30 0x00 SPI result 0.000329745362 6.4e-07 0x61 0x00 SPI result 0.000331105362 6.39999999e-07 0x62 0x00 SPI result 0.000332805362 6.4e-07 0x00 0x00 SPI result 0.000334125362 6.4e-07 0x00 0x00 SPI result 0.000335385362 6.4e-07 0x00 0x00 SPI result 0.000336625362 6.4e-07 0x00 0x00 SPI disable 0.000338245362 1.99999999e-08
SPI enable 0.000339845362 1.99999999e-08
SPI result 0.000340225362 6.6e-07 0xB0 0x00 SPI result 0.000341505362 6.4e-07 0x25 0x4A SPI result 0.000342865362 6.4e-07 0x78 0x43 SPI result 0.000344285362 6.4e-07 0x0C 0x42 SPI result 0.000345605362 6.4e-07 0xFF 0x00 SPI result 0.000346985362 6.4e-07 0xFF 0x00 SPI result 0.000348285362 6.6e-07 0xFF 0x00 SPI result 0.000349765362 6.6e-07 0x14 0x00 SPI result 0.000351145362 6.4e-07 0x00 0x00 SPI result 0.000352465362 6.4e-07 0x18 0x00 SPI result 0.000353805362 6.4e-07 0x01 0x00 SPI result 0.000355145362 6.4e-07 0x1D 0x00 SPI result 0.000356445362 6.39999999e-07 0x00 0x00 SPI result 0.000357785362 6.6e-07 0x00 0x00 SPI result 0.000359145362 6.4e-07 0x00 0x00 SPI result 0.000361465362 6.4e-07 0x31 0x00 SPI result 0.000362985362 6.4e-07 0x32 0x00 SPI result 0.000364385362 6.4e-07 0x33 0x00 SPI result 0.000365725362 6.6e-07 0x34 0x00 SPI result 0.000367125362 6.4e-07 0x35 0x00 SPI result 0.000368485362 6.4e-07 0x36 0x00 SPI result 0.000369845362 6.4e-07 0x37 0x00 SPI result 0.000371185362 6.4e-07 0x38 0x00 SPI result 0.000372545362 6.4e-07 0x39 0x00 SPI result 0.000373905362 6.4e-07 0x30 0x00 SPI result 0.000375245362 6.6e-07 0x61 0x00 SPI result 0.000376605362 6.4e-07 0x62 0x00 SPI result 0.000378005362 6.4e-07 0x63 0x00 SPI result 0.000379645362 6.4e-07 0x00 0x00 SPI result 0.000380985362 6.4e-07 0x00 0x00 SPI result 0.000382225362 6.6e-07 0x00 0x00 SPI disable 0.000383845362 1.99999999e-08
SPI enable 0.000385445362 2.00000004e-08
SPI result 0.000385845362 6.4e-07 0xB0 0x00 SPI result 0.000387105362 6.4e-07 0x25 0x4A SPI result 0.000388465362 6.4e-07 0x78 0x43 SPI result 0.000389885362 6.4e-07 0x0C 0x42 SPI result 0.000391205362 6.6e-07 0xFF 0x00 SPI result 0.000392585362 6.4e-07 0xFF 0x00 SPI result 0.000393905362 6.4e-07 0xFF 0x00 SPI result 0.000395385362 6.4e-07 0x14 0x00 SPI result 0.000396765362 6.4e-07 0x00 0x00 SPI result 0.000398065362 6.4e-07 0x36 0x00 SPI result 0.000399405362 6.4e-07 0x01 0x00 SPI result 0.000400765362 6.4e-07 0x1D 0x00 SPI result 0.000402045362 6.39999999e-07 0x00 0x00 SPI result 0.000403405362 6.4e-07 0x00 0x00 SPI result 0.000404765362 6.4e-07 0x00 0x00 SPI result 0.000407065362 6.4e-07 0x31 0x00 SPI result 0.000408585362 6.4e-07 0x32 0x00 SPI result 0.000409985362 6.4e-07 0x33 0x00 SPI result 0.000411345362 6.4e-07 0x34 0x00 SPI result 0.000412785362 6.4e-07 0x35 0x00 SPI result 0.000414205362 6.6e-07 0x36 0x00 SPI result 0.000415645362 6.4e-07 0x37 0x00 SPI result 0.000417085362 6.4e-07 0x38 0x00 SPI result 0.000418525362 6.4e-07 0x39 0x00 SPI result 0.000419965362 6.4e-07 0x30 0x00 SPI result 0.000421405362 6.4e-07 0x61 0x00 SPI result 0.000422845362 6.4e-07 0x62 0x00 SPI result 0.000424245362 6.4e-07 0x63 0x00 SPI result 0.000425665362 6.4e-07 0x64 0x00 SPI result 0.000427405362 6.4e-07 0x00 0x00 SPI result 0.000428745362 6.4e-07 0x00 0x00 SPI disable 0.000430345362 1.99999995e-08
SPI enable 0.000431945362 1.99999995e-08
SPI result 0.000432345362 6.4e-07 0xB0 0x00 SPI result 0.000433605362 6.4e-07 0x25 0x4A SPI result 0.000434965362 6.4e-07 0x78 0x43 SPI result 0.000436385362 6.4e-07 0x0C 0x42 SPI result 0.000437725362 6.4e-07 0xFF 0x00 SPI result 0.000439085362 6.4e-07 0xFF 0x00 SPI result 0.000440405362 6.4e-07 0xFF 0x00 SPI result 0.000441885362 6.4e-07 0x14 0x00 SPI result 0.000443265362 6.4e-07 0x00 0x00 SPI result 0.000444565362 6.4e-07 0x54 0x00 SPI result 0.000445905362 6.4e-07 0x01 0x00 SPI result 0.000447265362 6.4e-07 0x1D 0x00 SPI result 0.000448545362 6.4e-07 0x00 0x00 SPI result 0.000449905362 6.4e-07 0x00 0x00 SPI result 0.000451265362 6.4e-07 0x00 0x00 SPI result 0.000453565362 6.39999999e-07 0x31 0x00 SPI result 0.000455085362 6.4e-07 0x32 0x00 SPI result 0.000456485362 6.4e-07 0x33 0x00 SPI result 0.000457925362 6.4e-07 0x34 0x00 SPI result 0.000459405362 6.4e-07 0x35 0x00 SPI result 0.000460845362 6.4e-07 0x36 0x00 SPI result 0.000462285362 6.4e-07 0x37 0x00 SPI result 0.000463725362 6.4e-07 0x38 0x00 SPI result 0.000465145362 6.6e-07 0x39 0x00 SPI result 0.000466585362 6.4e-07 0x30 0x00 SPI result 0.000468025362 6.4e-07 0x61 0x00 SPI result 0.000469465362 6.4e-07 0x62 0x00 SPI result 0.000470905362 6.4e-07 0x63 0x00 SPI result 0.000472345362 6.4e-07 0x64 0x00 SPI result 0.000473785362 6.4e-07 0x65 0x00 SPI result 0.000475505362 6.4e-07 0x00 0x00 SPI disable 0.000477205362 1.99999999e-08
SPI enable 0.000478805362 1.99999999e-08
SPI result 0.000479205362 6.4e-07 0xB0 0x00 SPI result 0.000480465362 6.4e-07 0x25 0x4A SPI result 0.000481825362 6.4e-07 0x78 0x43 SPI result 0.000483245362 6.4e-07 0x0C 0x42 SPI result 0.000484565362 6.4e-07 0xFF 0x00 SPI result 0.000485945362 6.4e-07 0xFF 0x00 SPI result 0.000487265362 6.4e-07 0xFF 0x00 SPI result 0.000488745362 6.4e-07 0x14 0x00 SPI result 0.000490105362 6.4e-07 0x00 0x00 SPI result 0.000491425362 6.4e-07 0x72 0x00 SPI result 0.000492765362 6.4e-07 0x01 0x00 SPI result 0.000494105362 6.4e-07 0x1D 0x00 SPI result 0.000495405362 6.4e-07 0x00 0x00 SPI result 0.000496765362 6.4e-07 0x00 0x00 SPI result 0.000498105362 6.4e-07 0x00 0x00 SPI result 0.000500425362 6.4e-07 0x31 0x00 SPI result 0.000501945362 6.4e-07 0x32 0x00 SPI result 0.000503385362 6.4e-07 0x33 0x00 SPI result 0.000504825362 6.4e-07 0x34 0x00 SPI result 0.000506225362 6.4e-07 0x35 0x00 SPI result 0.000507565362 6.4e-07 0x36 0x00 SPI result 0.000508925362 6.4e-07 0x37 0x00 SPI result 0.000510285362 6.4e-07 0x38 0x00 SPI result 0.000511625362 6.6e-07 0x39 0x00 SPI result 0.000512985362 6.4e-07 0x30 0x00 SPI result 0.000514345362 6.4e-07 0x61 0x00 SPI result 0.000515705362 6.4e-07 0x62 0x00 SPI result 0.000517085362 6.4e-07 0x63 0x00 SPI result 0.000518445362 6.4e-07 0x64 0x00 SPI result 0.000519805362 6.4e-07 0x65 0x00 SPI result 0.000521145362 6.60000001e-07 0x66 0x00 SPI result 0.000522805362 6.4e-07 0x00 0x00 SPI result 0.000524125362 6.6e-07 0x00 0x00 SPI result 0.000525385362 6.39999999e-07 0x00 0x00 SPI result 0.000526625362 6.60000001e-07 0x00 0x00 SPI disable 0.000528245362 1.99999999e-08
SPI enable 0.000529845362 1.99999999e-08
SPI result 0.000530245362 6.4e-07 0xB0 0x00 SPI result 0.000531505362 6.4e-07 0x25 0x4A SPI result 0.000532865362 6.4e-07 0x78 0x43 SPI result 0.000534285362 6.4e-07 0x0C 0x42 SPI result 0.000535605362 6.6e-07 0xFF 0x00 SPI result 0.000536985362 6.4e-07 0xFF 0x00 SPI result 0.000538305362 6.4e-07 0xFF 0x00 SPI result 0.000539785362 6.4e-07 0x14 0x00 SPI result 0.000541165362 6.4e-07 0x00 0x00 SPI result 0.000542465362 6.4e-07 0x90 0x00 SPI result 0.000543805362 6.4e-07 0x01 0x00 SPI result 0.000545165362 6.4e-07 0x1D 0x00 SPI result 0.000546445362 6.4e-07 0x00 0x00 SPI result 0.000547805362 6.4e-07 0x00 0x00 SPI result 0.000549165362 6.4e-07 0x00 0x00 SPI result 0.000551465362 6.4e-07 0x31 0x00 SPI result 0.000552985362 6.4e-07 0x32 0x00 SPI result 0.000554385362 6.4e-07 0x33 0x00 SPI result 0.000555745362 6.4e-07 0x34 0x00 SPI result 0.000557085362 6.6e-07 0x35 0x00 SPI result 0.000558445362 6.4e-07 0x36 0x00 SPI result 0.000559805362 6.39999999e-07 0x37 0x00 SPI result 0.000561165362 6.4e-07 0x38 0x00 SPI result 0.000562545362 6.6e-07 0x39 0x00 SPI result 0.000563905362 6.4e-07 0x30 0x00 SPI result 0.000565265362 6.4e-07 0x61 0x00 SPI result 0.000566625362 6.4e-07 0x62 0x00 SPI result 0.000567965362 6.4e-07 0x63 0x00 SPI result 0.000569325362 6.4e-07 0x64 0x00 SPI result 0.000570685362 6.4e-07 0x65 0x00 SPI result 0.000572025362 6.4e-07 0x66 0x00 SPI result 0.000573465362 6.4e-07 0x67 0x00 SPI result 0.000575165362 6.4e-07 0x00 0x00 SPI result 0.000576485362 6.4e-07 0x00 0x00 SPI result 0.000577745362 6.4e-07 0x00 0x00 SPI disable 0.000579365362 1.99999999e-08
SPI enable 0.000581105362 1.99999999e-08
SPI result 0.000581485362 6.4e-07 0xB0 0x00 SPI result 0.000582765362 6.4e-07 0x25 0x4A SPI result 0.000584105362 6.6e-07 0x78 0x43 SPI result 0.000585525362 6.4e-07 0x2E 0x42 SPI result 0.000586865362 6.4e-07 0xFF 0x00 SPI result 0.000588245362 6.4e-07 0xFF 0x00 SPI result 0.000589545362 6.6e-07 0xFF 0x00 SPI result 0.000591025362 6.4e-07 0x3C 0x00 SPI result 0.000592405362 6.4e-07 0x00 0x00 SPI result 0.000593725362 6.4e-07 0xD1 0x00 SPI result 0.000595045362 6.6e-07 0x01 0x00 SPI result 0.000596405362 6.4e-07 0x1A 0x00 SPI result 0.000597705362 6.4e-07 0x00 0x00 SPI result 0.000599045362 6.6e-07 0x04 0x00 SPI result 0.000600405362 6.4e-07 0x08 0x00 SPI result 0.000602165362 6.4e-07 0xB4 0x00 SPI result 0.000603525362 6.6e-07 0x04 0x00 SPI result 0.000604945362 6.4e-07 0x00 0x00 SPI result 0.000606225362 6.4e-07 0x00 0x00 SPI disable 0.000607485362 1.99999999e-08
SPI enable 0.000609205362 1.99999999e-08
SPI result 0.000609605362 6.4e-07 0xB0 0x00 SPI result 0.000610865362 6.4e-07 0x25 0x4A SPI result 0.000612225362 6.4e-07 0x78 0x43 SPI result 0.000613645362 6.4e-07 0x2E 0x42 SPI result 0.000614965362 6.4e-07 0xFF 0x00 SPI result 0.000616345362 6.4e-07 0xFF 0x00 SPI result 0.000617665362 6.4e-07 0xFF 0x00 SPI result 0.000619145362 6.4e-07 0x82 0x00 SPI result 0.000620505362 6.6e-07 0x00 0x00 SPI result 0.000621825362 6.4e-07 0xD1 0x00 SPI result 0.000623165362 6.4e-07 0x01 0x00 SPI result 0.000624505362 6.4e-07 0x1A 0x00 SPI result 0.000625805362 6.4e-07 0x00 0x00 SPI result 0.000627165362 6.4e-07 0x04 0x00 SPI result 0.000628505362 6.6e-07 0x08 0x00 SPI result 0.000630265362 6.4e-07 0x00 0x00 SPI result 0.000631645362 6.4e-07 0x00 0x00 SPI result 0.000633045362 6.6e-07 0x00 0x00 SPI result 0.000634325362 6.4e-07 0x00 0x00 SPI disable 0.000635585362 1.99999999e-08
SPI enable 0.000637425362 1.99999999e-08
SPI result 0.000637805362 6.4e-07 0xB0 0x00 SPI result 0.000639085362 6.4e-07 0x25 0x4A SPI result 0.000640425362 6.4e-07 0x78 0x43 SPI result 0.000641845362 6.4e-07 0x2E 0x42 SPI result 0.000643185362 6.4e-07 0xFF 0x00 SPI result 0.000644565362 6.4e-07 0xFF 0x00 SPI result 0.000645865362 6.4e-07 0xFF 0x00 SPI result 0.000647345362 6.39999999e-07 0xDC 0x00 SPI result 0.000648725362 6.4e-07 0x00 0x00 SPI result 0.000650025362 6.6e-07 0xD1 0x00 SPI result 0.000651365362 6.4e-07 0x01 0x00 SPI result 0.000652725362 6.4e-07 0x1A 0x00 SPI result 0.000654005362 6.6e-07 0x00 0x00 SPI result 0.000655365362 6.4e-07 0x04 0x00 SPI result 0.000656725362 6.4e-07 0x08 0x00 SPI result 0.000658465362 6.4e-07 0xC9 0x00 SPI result 0.000659845362 6.4e-07 0x03 0x00 SPI result 0.000661265362 6.4e-07 0x00 0x00 SPI result 0.000662545362 6.4e-07 0x00 0x00 SPI disable 0.000663805362 1.99999999e-08
SPI enable 0.000665685362 1.99999999e-08
SPI result 0.000666085362 6.4e-07 0xB0 0x00 SPI result 0.000667345362 6.4e-07 0x25 0x4A SPI result 0.000668705362 6.4e-07 0x78 0x43 SPI result 0.000670125362 6.4e-07 0x2E 0x42 SPI result 0.000671445362 6.4e-07 0xFF 0x00 SPI result 0.000672825362 6.4e-07 0xFF 0x00 SPI result 0.000674145362 6.4e-07 0xFF 0x00 SPI result 0.000675625362 6.39999999e-07 0x40 0x00 SPI result 0.000676985362 6.6e-07 0x01 0x00 SPI result 0.000678305362 6.4e-07 0xD1 0x00 SPI result 0.000679645362 6.4e-07 0x01 0x00 SPI result 0.000680985362 6.6e-07 0x1A 0x00 SPI result 0.000682285362 6.4e-07 0x00 0x00 SPI result 0.000683645362 6.4e-07 0x04 0x00 SPI result 0.000684985362 6.6e-07 0x08 0x00 SPI result 0.000686745362 6.4e-07 0x3A 0x00 SPI result 0.000688125362 6.4e-07 0x00 0x00 SPI result 0.000689545362 6.4e-07 0x00 0x00 SPI result 0.000690805362 6.4e-07 0x00 0x00 SPI disable 0.000692065362 1.99999999e-08
SPI enable 0.000693185362 1.99999999e-08
SPI result 0.000693585362 6.4e-07 0xB0 0x00 SPI result 0.000694845362 6.4e-07 0x25 0x4A SPI result 0.000696205362 6.4e-07 0x78 0x43 SPI result 0.000697625362 6.39999999e-07 0x00 0x42 SPI result 0.000698945362 6.4e-07 0x00 0x00 SPI result 0.000700325362 6.4e-07 0x00 0x00 SPI result 0.000701645362 6.4e-07 0x00 0x00 SPI disable 0.000702905362 1.99999999e-08
SPI enable 0.000704005362 1.99999999e-08
SPI result 0.000704385362 6.4e-07 0xB0 0x00 SPI result 0.000705665362 6.4e-07 0x25 0x4A SPI result 0.000707025362 6.4e-07 0x78 0x43 SPI result 0.000708425362 6.4e-07 0x01 0x42 SPI result 0.000709765362 6.4e-07 0xFF 0x00 SPI result 0.000711145362 6.4e-07 0xFF 0x00 SPI result 0.000712445362 6.60000001e-07 0xFF 0x00 SPI disable 0.000713725362 1.99999999e-08
SPI enable 0.000715045362 1.99999999e-08
SPI result 0.000715785362 6.4e-07 0x30 0x00 SPI result 0.000717085362 6.4e-07 0x25 0x4A SPI result 0.000718425362 6.4e-07 0x74 0x43 SPI result 0.000719785362 6.4e-07 0x00 0x42 SPI result 0.000721065362 6.4e-07 0x00 0xC4 SPI result 0.000722405362 6.4e-07 0x00 0x0F SPI disable 0.000723665362 1.99999999e-08
SPI enable 0.000725385362 1.99999999e-08
SPI result 0.000726125362 6.4e-07 0x30 0x00 SPI result 0.000727405362 6.4e-07 0x25 0x4A SPI result 0.000728765362 6.4e-07 0x74 0x43 SPI result 0.000730125362 6.4e-07 0x00 0x42 SPI result 0.000731385362 6.4e-07 0x00 0xC4 SPI result 0.000732745362 6.4e-07 0x00 0x0F SPI disable 0.000734005362 1.99999999e-08
SPI enable 0.000735705362 1.99999999e-08
SPI result 0.000736445362 6.6e-07 0x30 0x00 SPI result 0.000737745362 6.4e-07 0x25 0x4A SPI result 0.000739105362 6.4e-07 0x74 0x43 SPI result 0.000740465362 6.4e-07 0x00 0x42 SPI result 0.000741725362 6.4e-07 0x00 0xC4 SPI result 0.000743085362 6.4e-07 0x00 0x0F SPI disable 0.000744345362 1.99999999e-08
SPI enable 0.000746045362 2.00000004e-08
SPI result 0.000746785362 6.4e-07 0x30 0x00 SPI result 0.000748085362 6.4e-07 0x25 0x4A SPI result 0.000749425362 6.6e-07 0x74 0x43 SPI result 0.000750785362 6.4e-07 0x00 0x42 SPI result 0.000752065362 6.4e-07 0x00 0xC4 SPI result 0.000753405362 6.4e-07 0x00 0x0F SPI disable 0.000754685362 1.99999995e-08
SPI enable 0.000756385362 1.99999999e-08
SPI result 0.000757125362 6.4e-07 0x30 0x00 SPI result 0.000758405362 6.6e-07 0x25 0x4A SPI result 0.000759765362 6.4e-07 0x74 0x43 SPI result 0.000761125362 6.4e-07 0x00 0x42 SPI result 0.000762385362 6.4e-07 0x00 0xC4 SPI result 0.000763745362 6.4e-07 0x00 0x0F SPI disable 0.000765005362 1.99999995e-08
SPI enable 0.000766705362 1.99999999e-08
SPI result 0.000767465362 6.4e-07 0x30 0x00 SPI result 0.000768745362 6.4e-07 0x25 0x4A SPI result 0.000770105362 6.4e-07 0x74 0x43 SPI result 0.000771465362 6.4e-07 0x00 0x42 SPI result 0.000772725362 6.4e-07 0x00 0xC4 SPI result 0.000774085362 6.4e-07 0x00 0x0F SPI disable 0.000775345362 1.99999999e-08
SPI enable 0.000777045362 1.99999999e-08
SPI result 0.000777785362 6.4e-07 0x30 0x00 SPI result 0.000779085362 6.4e-07 0x25 0x4A SPI result 0.000780445362 6.4e-07 0x74 0x43 SPI result 0.000781785362 6.4e-07 0x00 0x42 SPI result 0.000783065362 6.4e-07 0x00 0xD4 SPI result 0.000784405362 6.6e-07 0x00 0x0F SPI disable 0.000785685362 1.99999999e-08
SPI enable 0.000787385362 1.99999995e-08
SPI result 0.000788125362 6.4e-07 0x30 0x00 SPI result 0.000789425362 6.4e-07 0x25 0x4A SPI result 0.000790765362 6.4e-07 0x74 0x43 SPI result 0.000792125362 6.4e-07 0x00 0x42 SPI result 0.000793385362 6.6e-07 0x00 0xD4 SPI result 0.000794745362 6.4e-07 0x00 0x0F SPI disable 0.000796005362 1.99999995e-08
SPI enable 0.000797725362 1.99999995e-08
SPI result 0.000798465362 6.39999999e-07 0x30 0x00 SPI result 0.000799745362 6.4e-07 0x25 0x4A SPI result 0.000801105362 6.4e-07 0x74 0x43 SPI result 0.000802465362 6.4e-07 0x00 0x42 SPI result 0.000803725362 6.4e-07 0x00 0xD4 SPI result 0.000805085362 6.4e-07 0x00 0x0F SPI disable 0.000806345362 1.99999999e-08
SPI enable 0.000808045362 1.99999995e-08
SPI result 0.000808785362 6.4e-07 0x30 0x00 SPI result 0.000810085362 6.4e-07 0x25 0x4A SPI result 0.000811445362 6.4e-07 0x74 0x43 SPI result 0.000812785362 6.4e-07 0x00 0x42 SPI result 0.000814065362 6.4e-07 0x00 0xD4 SPI result 0.000815425362 6.4e-07 0x00 0x0F SPI disable 0.000816685362 1.99999999e-08
SPI enable 0.000818385362 1.99999999e-08
SPI result 0.000819125362 6.4e-07 0x30 0x00 SPI result 0.000820425362 6.4e-07 0x25 0x4A SPI result 0.000821765362 6.4e-07 0x74 0x43 SPI result 0.000823125362 6.4e-07 0x00 0x42 SPI result 0.000824385362 6.6e-07 0x00 0xD4 SPI result 0.000825745362 6.4e-07 0x00 0x0F SPI disable 0.000827005362 2.00000004e-08
SPI enable 0.000828725362 1.99999999e-08
SPI result 0.000829465362 6.4e-07 0x30 0x00 SPI result 0.000830745362 6.4e-07 0x25 0x4A SPI result 0.000832105362 6.4e-07 0x74 0x43 SPI result 0.000833465362 6.4e-07 0x00 0x42 SPI result 0.000834725362 6.4e-07 0x00 0xD4 SPI result 0.000836085362 6.39999999e-07 0x00 0x0F SPI disable 0.000837345362 1.99999999e-08
SPI enable 0.000839045362 1.99999999e-08
SPI result 0.000839785362 6.4e-07 0x30 0x00 SPI result 0.000841085362 6.4e-07 0x25 0x4A SPI result 0.000842445362 6.4e-07 0x74 0x43 SPI result 0.000843785362 6.4e-07 0x00 0x42 SPI result 0.000845065362 6.4e-07 0x00 0xD4 SPI result 0.000846425362 6.4e-07 0x00 0x0F SPI disable 0.000847685362 2.00000004e-08
SPI enable 0.000849385362 1.99999999e-08
SPI result 0.000850125362 6.4e-07 0x30 0x00 SPI result 0.000851425362 6.4e-07 0x25 0x4A SPI result 0.000852765362 6.4e-07 0x74 0x43 SPI result 0.000854125362 6.4e-07 0x00 0x42 SPI result 0.000855405362 6.4e-07 0x00 0xD4 SPI result 0.000856745362 6.4e-07 0x00 0x0F SPI disable 0.000858005362 2.00000004e-08
SPI enable 0.000859725362 1.99999999e-08
SPI result 0.000860465362 6.4e-07 0x30 0x00 SPI result 0.000861745362 6.4e-07 0x25 0x4A SPI result 0.000863105362 6.4e-07 0x74 0x43 SPI result 0.000864465362 6.4e-07 0x00 0x42 SPI result 0.000865725362 6.4e-07 0x00 0xD4 SPI result 0.000867085362 6.4e-07 0x00 0x0F SPI disable 0.000868345362 1.99999999e-08
SPI enable 0.000870045362 2.00000004e-08
SPI result 0.000870785362 6.4e-07 0x30 0x00 SPI result 0.000872085362 6.4e-07 0x25 0x4A SPI result 0.000873445362 6.4e-07 0x74 0x43 SPI result 0.000874785362 6.4e-07 0x00 0x42 SPI result 0.000876065362 6.4e-07 0x00 0xE4 SPI result 0.000877425362 6.4e-07 0x00 0x0F SPI disable 0.000878685362 1.99999999e-08
SPI enable 0.000880385362 1.99999999e-08
SPI result 0.000881125362 6.4e-07 0x30 0x00 SPI result 0.000882425362 6.39999999e-07 0x25 0x4A SPI result 0.000883765362 6.4e-07 0x74 0x43 SPI result 0.000885125362 6.39999999e-07 0x00 0x42 SPI result 0.000886405362 6.4e-07 0x00 0xE4 SPI result 0.000887745362 6.4e-07 0x00 0x0F SPI disable 0.000889005362 1.99999999e-08
SPI enable 0.000890725362 2.00000004e-08
SPI result 0.000891465362 6.4e-07 0x30 0x00 SPI result 0.000892745362 6.4e-07 0x25 0x4A SPI result 0.000894105362 6.39999999e-07 0x74 0x43 SPI result 0.000895465362 6.4e-07 0x00 0x42 SPI result 0.000896725362 6.4e-07 0x00 0xE4 SPI result 0.000898085362 6.4e-07 0x00 0x0F SPI disable 0.000899345362 2.00000004e-08
SPI enable 0.000901045362 1.99999999e-08
SPI result 0.000901785362 6.4e-07 0x30 0x00 SPI result 0.000903085362 6.4e-07 0x25 0x4A SPI result 0.000904445362 6.4e-07 0x74 0x43 SPI result 0.000905785362 6.6e-07 0x00 0x42 SPI result 0.000907065362 6.4e-07 0x00 0xE4 SPI result 0.000908425362 6.4e-07 0x00 0x0F SPI disable 0.000909685362 1.99999999e-08
SPI enable 0.000911385362 1.99999999e-08
SPI result 0.000912125362 6.4e-07 0x30 0x00 SPI result 0.000913425362 6.4e-07 0x25 0x4A SPI result 0.000914765362 6.4e-07 0x74 0x43 SPI result 0.000916125362 6.4e-07 0x00 0x42 SPI result 0.000917405362 6.4e-07 0x00 0xE4 SPI result 0.000918745362 6.4e-07 0x00 0x0F SPI disable 0.000920025362 2.00000004e-08
SPI enable 0.000921725362 1.99999999e-08
SPI result 0.000922465362 6.4e-07 0x30 0x00 SPI result 0.000923745362 6.4e-07 0x25 0x4A SPI result 0.000925105362 6.4e-07 0x74 0x43 SPI result 0.000926465362 6.4e-07 0x00 0x42 SPI result 0.000927725362 6.4e-07 0x00 0xE4 SPI result 0.000929085362 6.4e-07 0x00 0x0F SPI disable 0.000930345362 2.00000004e-08
SPI enable 0.000932045362 1.99999999e-08
SPI result 0.000932785362 6.6e-07 0x30 0x00 SPI result 0.000934085362 6.4e-07 0x25 0x4A SPI result 0.000935445362 6.4e-07 0x74 0x43 SPI result 0.000936785362 6.6e-07 0x00 0x42 SPI result 0.000938065362 6.4e-07 0x00 0xE4 SPI result 0.000939425362 6.4e-07 0x00 0x0F SPI disable 0.000940685362 1.99999999e-08
SPI enable 0.000942385362 2.00000004e-08
SPI result 0.000943125362 6.4e-07 0x30 0x00 SPI result 0.000944425362 6.4e-07 0x25 0x4A SPI result 0.000945765362 6.4e-07 0x74 0x43 SPI result 0.000947125362 6.4e-07 0x00 0x42 SPI result 0.000948405362 6.4e-07 0x00 0xE4 SPI result 0.000949745362 6.6e-07 0x00 0x0F SPI disable 0.000951025362 2.00000004e-08
SPI enable 0.000952725362 1.99999999e-08
SPI result 0.000953465362 6.4e-07 0x30 0x00 SPI result 0.000954745362 6.4e-07 0x25 0x4A SPI result 0.000956105362 6.4e-07 0x74 0x43 SPI result 0.000957465362 6.4e-07 0x00 0x42 SPI result 0.000958725362 6.4e-07 0x00 0xFC SPI result 0.000960085362 6.4e-07 0x00 0x0F SPI disable 0.000961345362 1.99999999e-08

RudolphRrr commented 2 years ago

Uff, das kam jetzt nicht ganz so raus wie erhofft.

Na, "fully contained" geht wahrscheinlich zu weit, mir war schon klar, dass Du meine Library nicht einfach nur benutzt, sondern da was eigenes daraus gemacht hast.

ne, eigentlich haben wir nur einen workaround für dieses alignment problem zwischen 12 und 16 zeichen gemacht. Ich glaube, sonst haben wir nicht viel verändert.

Nun, da ist aber an sich kein Alignment Problem. :-)

Bei allem was ich bisher getestet habe funktioniert mein EVE_cmd_text() so wie es soll - ich erhöhe gerade die Test-Tiefe.

Mein bauchgefühl sagt mir, dass es ein SPI kernel bug oder ein problem mit unserem spezifischen setup hier ist - ist ja schon speziell mit diesem charge controller als computer. Mein team meinte auch, dass mit dem logic analyzer könne wir hinkriegen.

Ich kann nur bestätigen, dass es mit jedem neuen Controller immer wieder spannend ist den dazu zu bringen exakt das auf dem SPI auszuspucken was der machen soll. :-)

Die Variante die Du gewählt hast, so mit Chip-Select und Adresse für jedes Kommando, ist übrigens die langsamste überhaupt.

Geschwindigkeit ist mir im moment nicht so wichtig... Aber es gibt noch den burst modus, richtig?

Richtig, die erste Stufe ist EVE_start_cmd_burst() / EVE_end_cmd_burst() außen um die Liste herum, das bewirkt das nur einmal die Adresse geschickt wird. Das ist aber immer noch komplett blockierend.

Die nächste Stufe ist dann mit DMA.

Und das EVE_cmd_dl(CMD_SYNC); am Anfang bewirkt in dem Kontext gar nichts.

ja, ich glaube das habe ich jetzt auch verstanden. Das braucht man nur, wenn man zum beispiel den RAM mit anderen bildern updaten will und das nicht flickern soll, oder? Für display list commands sorgt ja CMD_SWAP schon dafür, dass die liste sauber ausgetauscht wird.

Ganz genau.

Hier ist noch das Binary für den Logic-Analyzer Trace, das ist für die Logic2 Software von Saleae. EVE3-50G_CMD_Text_test.zip

RudolphRrr commented 2 years ago

Das hier ist mit Burst: EVE3-50G_CMD_Text_test_burst.zip

Ohne das EVE_execute_cmd() am Ende sind das dann 672µs in diesem Beispiel auf dem Cortex-M0+ den ich hier gerade benutze.

Und mit DMA sind das dann nur noch 159µs: EVE3-50G_CMD_Text_test_DMA.zip

Wobei ein Teil der Zeit dafür drauf geht zu Debug-Zwecken REG_CMD_DL zu lesen. Im Trace sieht man drei Mal Chip-Select runter gehen, das erste Mal für Busy, das zweite Mal eben für REG_CMD_DL, das dritte Mal für den DMA-Transfer. Und die 135µs zwischen dem zweiten und dem dritten Transfer ist die Zeit die benötigt wird die Daten in den DMA-Puffer zu werfen - was eben auch nur so lange dauert weil mein Controller nur mit 48MHz läuft. Oh ja, die erste beiden Transfers sind ohne DMA, die Zeit für einzelne Kommandos ist einfach zu kurz um dafür extra den DMA anzuwerfen und am Ende will man in aller Regel das Ergebnis ohnehin direkt haben und würde auf das Ende des DMAs warten.

Ok, das ist jetzt CMD_TEXT mit 7 bis 17 Zeichen und läuft. :-)

SirVer commented 2 years ago

@RudolphRiedel sorry für radio silence. Ich schulde dir immer noch das "fully contained" code example und ein trace. Will ich auch noch machen, aber wird noch ein paar tage oder wochen dauern - wegen Urlaub und anderen prios.

RudolphRiedel commented 2 years ago

Ich shifte auch gerade Prioritäten wegen Urlaub. :-)

SirVer commented 1 year ago

I mach das mal zu, ich hab das Problem immernoch, aber grade keine Zeit um das weiter zu pushen. Noch mal vielen Dank für deine Hilfe!

RudolphRrr commented 1 year ago

Ok, schade, das Problem war schon interessant. :-)