STM32F4: SPI: MISO Flanken zeigen komisches Verhalten

OP Persönliche Seite #4781435
Guten Morgen liebes Forum,

Zur Zeit versuche ich die Bilddaten eines ADNS3090-Sensors auszulesen. 
Meine Daten auf der MISO zeigen ein komisches Verhalten. Laut Datenblatt 
ist der SPI-Modus 3. Das Auslesen der Chip-ID klappt auch wunderbar.

Hier mein Code:
1
/*SPI-Initialisierung*/
2
//ADNS3090_NSS_LOW;
3

4
SPI_I2S_DeInit(SPI2);
5
SPI_InitTypeDef SPI_Init_ADNS3090;
6
SPI_Init_ADNS3090.SPI_Direction         = SPI_Direction_2Lines_FullDuplex;
7
SPI_Init_ADNS3090.SPI_DataSize          = SPI_DataSize_16b;          
8
SPI_Init_ADNS3090.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;  
9
SPI_Init_ADNS3090.SPI_CPHA              = SPI_CPHA_2Edge;      
10
SPI_Init_ADNS3090.SPI_CPOL              = SPI_CPOL_High;        
11
SPI_Init_ADNS3090.SPI_CRCPolynomial     = 0;
12
SPI_Init_ADNS3090.SPI_FirstBit          = SPI_FirstBit_MSB;  
13
SPI_Init_ADNS3090.SPI_Mode              = SPI_Mode_Master;
14
SPI_Init_ADNS3090.SPI_NSS               = SPI_NSS_Soft;
15
SPI_Init(SPI2, &SPI_Init_ADNS3090);
16
SPI_Cmd(SPI2, ENABLE);  
17
[c]
18

19
und die Funktion:
20
[c]
21
void adns3090_FrameCapure_Config(void)
22
{
23
 ADNS3090_NSS_LOW;
24
    adns3090_Write(SPI2, ADNS3090_FRAME_CAPTURE, 0x83);
25
 ADNS3090_NSS_HIGH;
26
 delay_nms(1510/1000); 
27
}

Kurze Funktionsbeschreibung:
Um den Inhalt des Frame-Register (0x13) auszulesen, muss der Wert 0x83 
in dieses Register geschrieben werden. Die Writefunktion wird mit MSB=1 
aktiviert. Also: 0x80&0x13 als Adresse und 0x83 als Wert = 0b10010011 
0b10000011. Das liegt auch auf dem Bus. Aber warum verhält sich die 
Antwort vom Sensors, also die Flanken so komisch (fast schon kapazitiv)?


Danke und Gruß
Daniel
Angehängte Dateien:
Moderator (Firma: Titel) Persönliche Seite
Daniel V. schrieb:
> Aber warum verhält sich die Antwort vom Sensors, also die Flanken so
> komisch (fast schon kapazitiv)?
Welche Linie in deinen Screenshots meinst du?

Weil die MISO-Leitung nach dem Deselektieren aller Slaves hochohmig ist, 
wird sie dann langsam auf irgendeinen Pegel einpendeln, wenn nicht z.B. 
ein Pullup für einen definierten Zustand sorgt.
OP Persönliche Seite
Lothar M. schrieb:

> Weil die MISO-Leitung nach dem Deselektieren aller Slaves hochohmig ist,
> wird sie dann langsam auf irgendeinen Pegel einpendeln, wenn nicht z.B.
> ein Pullup für einen definierten Zustand sorgt.

Ohh, sorry. Ich meine natürlich das Rosa-Signal. Pullups sind aktiviert.

Signale:
NSS  -> Kanal 1 (ge)
CLK  -> Kanal 2 (bl)
MISO -> Kanal 3 (rt)
MOSI -> Kanal 4 (dunkel-bl)

Danke und Gruß
Daniel
Angehängte Dateien:
Gast
Daniel V. schrieb:
> Das Auslesen der Chip-ID klappt auch wunderbar.

Dann mach doch mal ein Oszi Bild davon.


In deinem Beispiel lässt Du dem ADNS3090 weder die Zeit zu antworten, 
noch gibst Du ihm die erforderlichen Takte dazu.
Was soll er damit machen?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.