MSP430F2013 - SPI Signalproblem

Gast #845014
Hallo,

ich habe ein Problem mit den SPI Signalen von meinem MSP430F2013.

Im Anhang ist ein Bild von den Signalen.

Gelb: SCLK
Blau: SDO
Rosa: /CS

Das Problem ist, dass mein CS Signal nicht sofort nach dem Abschluss des 
Sendevorgangs auf high geht, sondern erst später.

Wie kann ich das besser machen ?
1
#include <msp430x20x3.h>
2

3
void spi_init(void);
4

5
void spi_write(unsigned int, unsigned int);
6

7
void wait(unsigned int);
8

9

10
void main(void)
11
{
12

13
  WDTCTL = WDTPW + WDTHOLD;             // Stop watchdog timer
14
  P1DIR = 0x10;                         // P1.4 output-FSYNC
15
  spi_init();
16
  
17
  while(1) 
18
  
19
  {
20
  wait(0x01);
21
                           
22
  spi_dds_write(0x21,0x00);     //Send 16 Bit 0x2100
23
  }
24
                         
25
}
26

27

28
void spi_init(void)
29
{
30
  
31
USICTL0 |= USISWRST;                        // Set USI Reset-Bit for Config
32
USICTL0 |= USIPE6 + USIPE5 + USIMST + USIOE;  // Ports, SPI master
33
USICKCTL = USIDIV_1 + USISSEL_2 + USICKPL;    // 400kHz SCLK, CLK idle high
34
USICTL0 &= ~USISWRST;                         // USI released for operation
35

36
}
37

38
void spi_write(unsigned int high, unsigned int low)
39
{
40
           
41
  USISRL = low;                        
42
  USISRH = high;
43
  P1OUT &=~ 0x10;        //CS low
44
  USICNT = 80;  // Counter=16,  16 Bit Operation //Start des Sendevorgangs
45
  while(!(USIIFG & USICTL1)); //Warten bis Sendevorgang beendet ist
46
  P1OUT |= 0x10;       //CS high
47
     
48
}
49

50
void wait(unsigned int cycles)
51
{
52
  volatile unsigned int i;
53
  for(i=0;i<cycles;i++);
54
}

Danke.
Angehängte Dateien:
#845347
Peter wrote:
> Hallo,
>
> ich habe ein Problem mit den SPI Signalen von meinem MSP430F2013.

Wirklich?

> Das Problem ist, dass mein CS Signal nicht sofort nach dem Abschluss des
> Sendevorgangs auf high geht, sondern erst später.

Wo ist da das Problem? Das ist völlig normal und interessiert den 
SPI-Slave nicht im geringsten.

> Wie kann ich das besser machen ?

Wozu? Ist doch alles OK mit dem Signal.
Gast #845371
Hallo,

dem DDS-IC, den ich seit einer Woche nicht zum Laufen bekomme, ist es 
nicht egal. Er verlangt, dass CS spätetens eine Periode von SCLK wieder 
high ist.

Und das dauert bei mir wesentlich länger.

Peter
Gast #845921
Hallo,

das ist ein AD9834.

Laut Timing-Diagramm sollte FSYNC spätestens eine Periode von SCLK 
später wieder auf High gehen.

Ich habe es so gelassen, wie oben, und es geht trotzdem.
Gast #849649
Hallo,

ein Frage noch:

Was soll eigentlich die Verknüpfung von USIIFG & USICTL1 und brungen ?
Ich meine man bildet das logische UND zwischen einem Bit (USIIFG) und 
einem Byte (USICTL1) !

Kann man nicht nur USIIFG abfragen ?

Wieso diese Verknüpfung ?

Danke.
#849744
Du willst doch wissen, ob das entsprechende Bit in dem Control-Register 
gesetzt ist oder nicht. Wenn die UND-Verknüpfung > 0 ist, dann ist es 
gesetzt, ansonsten nicht. Das Bit allein abfragen nuetzt Dir nichts, 
diese Bedingung ist immer erfüllt.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 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.