[MSP430] ]SPI Kommunikation funktioniert bei niedriger Spannung nicht.

Gast #3630464
Hey,

habe hier einen MSP430F2274, den ich an 6 74HC595 in Serie 
anschließe(Q7S zu DS). An den Shift-Register sind LED's 
angeschlossen(keine Vorwiderstände). In meinem Code shifte ich ein Bit, 
um die LED's zu testen. Bei 3,3V VCC klappt es wunderbar. Wenn ich aber 
auf 3,0V die Spannung reduziere, stoppt die Signalübertragung. Oder, wie 
ich gerade festgestellt habe, bei beliebiger Spannung, wenn ich mit dem 
Oszi direkt an die Pins rangehe.

Bei allen SPI Leitungen, STCP und OE habe ich einen Serienwiderstand von 
100 Ohm. Außerdem sind noch Tantals zwischen VCC und GND vorhanden.


PS: Wenn ich mit dem Oszi direkt an die Pins rangehe, sehe ich Rauschen 
in mV-Bereich. Ab einer Etfernung von ca 4mm zeigt der Oszi mir erst die 
Flanken.


Code:
1
#include "msp430f2274.h"
2

3

4
#define STCP BIT1
5
#define OE BIT3
6

7

8

9
void delay(unsigned int i);
10
void enable(void);
11
void disable(void);
12
void latch_on(void);
13
void latch_off(void);
14
void write_SPI(unsigned long data);
15

16

17
unsigned long Data; //32 bit
18
int i;
19

20
int main(void)
21
{ 
22
 
23
  
24
    WDTCTL = WDTPW + WDTHOLD;             // Stop watchdog timer
25
    BCSCTL1 = CALBC1_1MHZ;    //changing the DCO's oscillations to 16MHz
26
    DCOCTL = CALDCO_1MHZ;
27
    P1OUT |= 0x0B;
28
    P3SEL |= 0x11;
29
    UCA0CTL1 |= UCSWRST;                     // RESET
30
    UCA0CTL0 |= UCCKPH + UCMSB + UCMST + UCSYNC;
31
    UCA0CTL1 |= UCSSEL_2;     
32
    UCA0BR0 = 0x00;
33
    UCA0BR1 = 0;
34
    UCA0MCTL = 0;
35
    UCA0CTL1 &= ~UCSWRST; 
36
    
37
    
38
    
39
    Data = 0x01;
40
    while(1)
41
      {
42
    if (Data==0){Data=1;}  
43
    Data=Data<<1;                                 // Increment Data value  
44
      
45
    write_SPI(Data);
46
      
47
      
48
          latch_on();
49
          enable();
50
          delay(500);
51
          disable();
52
          
53
            }
54
    }  
55
    
56

57

58
void write_SPI(unsigned long data)
59
{  
60
    latch_off();
61
    while (!(IFG2 & UCA0TXIFG));            // USCI_A0 TX buffer ready?
62
    UCA0TXBUF = data>>24;                       // Byte to SPI TXBUF
63
    while (!(IFG2 & UCA0TXIFG));            // USCI_A0 TX buffer ready?
64
    UCA0TXBUF = data>>16;                       // Byte to SPI TXBUF
65
    while (!(IFG2 & UCA0TXIFG));            // USCI_A0 TX buffer ready?
66
    UCA0TXBUF = data>>8;                       // Byte to SPI TXBUF
67
    while (!(IFG2 & UCA0TXIFG));            // USCI_A0 TX buffer ready?
68
    UCA0TXBUF = data;                       // Byte to SPI TXBUF
69
    while (!(IFG2 & UCA0TXIFG));            // USCI_A0 TX buffer ready?
70
    
71
}
72

73
void latch_on( void )
74
{
75
  P1OUT |= STCP;
76
  P1OUT &= ~STCP;
77
 
78
} 
79

80
void latch_off(void)
81
{
82
  P1OUT &= ~STCP;
83
}
84

85
void delay(unsigned int ms)
86
{
87
   while (ms--)
88
    {
89
         __delay_cycles(1000); // set for 16Mhz change it to 1000 for 1 Mhz
90
    }
91
}
92

93
void enable( void )
94
{
95
  P1OUT &= ~OE;
96
}
97
 
98
void disable( void )
99
{
100
  P1OUT |= OE;
101
}
Gast #3630777
Steffen M. schrieb:
> Hier mein provisorischer Aufbau.
>
> Hoffe man erkennt es einigermaßen.

Seh ich das richtig? Keine Vorwiderstände und die LEDs direkt über die 
595er gespeist?

Was wird bloß mit der Differenz auf Uf und Vcc passieren?
Wie groß meinst du wird If werden?
Gast #3630820
Die Idee war mit einem Step-Down VCC suf die Forwardvoltage zu 
reduzieren, um so den Akku, mit der die Schaltung versorgt wird, länger 
zu halten, da ja der µC nur Strom im µBereich benötigt.
Gast #3634385
Okey, ich habe das Problem gelöst. Es lag nicht an den Vorwiderständen. 
Der Port 1 von meinem MSP war kaputt. Umgelötet auf Port 4 und es 
funktioniert, sogar bei 1,8V.

Antwort schreiben

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