Ich begann mein Projekt der Schnittstelle MicroSD Card
mit PIC32MX795F512L
. Um damit zu beginnen, habe ich zuerst ein Programm zum Testen erstellt, SPI protocol
in dem ich einen Loopback-Test durch Kurzschließen der SDO
& SDI
-Leitung durchgeführt habe. Es funktionierte gut. Dann ging ich weiter und schrieb ein gutes Programm für die Schnittstellenkarte, aber ich konnte die Karte nicht einmal initialisieren. Also habe ich überlegt, einige Tools wie Saleae Logic und MicroSD Sniffer zu kaufen . Da dies das erste Mal ist, dass ich den Analysator verwende, müssen wir meiner Meinung nach, wenn wir unser Programm starten, gleichzeitig mit der Erfassung der Daten im Analysator beginnen.
Mit diesem Verständnis habe ich Folgendes getestet UART
:
while(1)
{
putsUART1("Hello");
DelayMs(500);
}
Ich habe dies im Analysator erfasst und alles war in Ordnung. Jetzt habe ich daran gedacht, das SPI-Loopback-Testprogramm zu erfassen, aber ich sehe einige zufällige Daten im Analysator. Nachfolgend der Code dafür:
void initSPI(void)
{
SPI1BRG = 71;
SPI1CONbits.MSTEN = 1; //MasterEnable
SPI1CONbits.CKE = 1; //CKE on. CKP OFF
SPI1CONbits.ON = 1; //SPI Module ON
}
unsigned char writeSPI(unsigned int b)
{
SPI1BUF=b; // write to buffer for TX
while( !SPI1STATbits.SPIRBF); // wait transfer complete
return(SPI1BUF);
}
und in der Hauptfunktion initSPI
sende ich nach dem Aufruf von während (1) Daten an den SPI-Kanal:
while(1)
{
x = writeSPI(0x12);
}
Ich sende 0x12
. Im Analysator MOSI(SDO)
sollte dieser Wert also angezeigt werden, aber es werden einige zufällige Werte angezeigt. Ich habe die Pins richtig angeschlossen und die SPI-Einstellungen im Analysator entsprechen meinen Einstellungen im Code. Ich erfasse die Daten für 1sec
und Geschwindigkeit bei 24MS/s
. Außerdem möchte ich wissen, wie ich überprüfen kann, mit welcher Frequenz das SPI-Protokoll ausgeführt wird.? Irgendeine Hilfe.!
Denken Sie daran, dass ein Logikanalysator nichts anderes als ein schnell getakteter Komparator ist. Was machen Komparatoren? Sie vergleichen eine Spannung! Mit Referenzspannung. Dies wird dann getaktet und bei dem Takt wurde der Kanal gemessen, ob er hoch oder niedriger als die Referenzspannung war.
Sie müssen also zwei Dinge anpassen. Die Uhr und die Referenzspannung.
Uhr - Woher wissen Sie, dass Ihre Uhr schnell genug geht? Sampling schneller, wenn du mehr und mehr "Kanten" siehst, dann weißt du, dass du schneller laufen musst. Dies gilt für ein ungetaktetes Signal, für ein getaktetes Signal wie spi ist es noch einfacher. Da Sie wissen, dass die Daten in Gruppen kommen (normalerweise 8 Bits gleichzeitig), müssen Sie nur 8 ansteigende Flanken und 8 abfallende Flanken finden. Wenn es so aussieht, als ob die Flanken schlecht abgetastet werden (dh es gibt nur 5 oder weniger Samples zwischen Takten), sollten Sie die Abtastgeschwindigkeit erhöhen, damit Sie mehr Samples pro Takt erhalten.
Referenzspannung - Sie müssen die Referenzspannung auf den richtigen Pegel einstellen. Überprüfen Sie Ihre Logikpegel , wenn es 5 V cmos sind, stellen Sie es auf 2 V ein. 3,3 V TTL = 1,25 V (oder so ungefähr).
Ein Vorbehalt dabei ist, dass alle Logikanalysatoren begrenzten Speicher haben (mit Ausnahme der neuen 3000-Serie von Tektronix und Keysight, 20 MB Speicher werden Ihnen viel Zeit verschaffen, wie fast unendlich). Daher können Sie normalerweise nicht mit der schnellsten Geschwindigkeit sampeln, da es einen Kompromiss zwischen der Sampling-Geschwindigkeit und der Dauer Ihrer gesamten Samples gibt.
Benutzer007