Forum: Mikrocontroller und Digitale Elektronik TMS320F28335 & SPIRXBUF immer FFFF


von Kill_F28335 (Gast)


Lesenswert?

Hallo Forum,

ich versuche eine Kommunikation über SPI auf dem genannten DSP zu 
realisieren.


Wenn ich jetzt mim JTAG durchsteppe funktioniert es aber nicht..


Ich sende Daten über SPI an den DSP mein OLS zeigt das die Daten korrekt 
über die Leitung gehen.

Wenn ich nun aber im DSP folgendes mache (innerhalb einer ISR wo er auch 
hinspringt):

1
   rdata = SpiaRegs.SPIRXBUF;          // Read data
2
   SpiaRegs.SPIFFRX.bit.RXFFOVFCLR=1;  // Clear Overflow flag
3
   SpiaRegs.SPIFFRX.bit.RXFFINTCLR=1;  // Clear Interrupt flag

steht in rdata immer 0xFFFF.
Ich dachte es läge am JTAG, es gibt ein extra Register SPIRXEMU wenn ich 
dieses anstatt SPIRXBUF verwende kommt trotzdem immer 0xFFFF raus.

Die Initialisierung sieht so aus (sollte für SPI mit FIFO passen, 
intterrupts werden später aktiviert..):

1
void spi_fifo_init()
2
{
3
// Initialize SPI FIFO registers
4
   SpiaRegs.SPICCR.bit.SPISWRESET=0; // Reset SPI
5
6
   SpiaRegs.SPICCR.all=0x000F;       //16-bit character, CLKPOL = 0
7
   SpiaRegs.SPICTL.all=0x000A;       //Interrupts off, CLKPH = 1, Talk = 1
8
   SpiaRegs.SPISTS.all=0x0000;
9
   SpiaRegs.SPIBRR=0x0063;           // Baud rate UNUSED as SLAVE
10
   SpiaRegs.SPIFFTX.all=0xC048;      // Enable FIFO's, set TX FIFO level to 8
11
   SpiaRegs.SPIFFRX.all=0x4061;      // Set RX FIFO level to 1
12
   SpiaRegs.SPIFFCT.all=0x00;
13
   SpiaRegs.SPIPRI.all=0x0008;
14
   SpiaRegs.SPIFFTX.bit.TXFFIENA=0; //TX Interrupt off
15
   SpiaRegs.SPICCR.bit.SPISWRESET=1;  // Enable SPI
16
17
   SpiaRegs.SPIFFTX.bit.TXFIFO=1;
18
   SpiaRegs.SPIFFRX.bit.RXFIFORESET=1;
19
}
20
21
22
void InitSpiaGpio()
23
{
24
25
   EALLOW;
26
27
28
/* Enable internal pull-up for the selected pins */
29
// Pull-ups can be enabled or disabled by the user.  
30
// This will enable the pullups for the specified pins.
31
// Comment out other unwanted lines.
32
33
//    GpioCtrlRegs.GPAPUD.bit.GPIO16 = 0;   // Enable pull-up on GPIO16 (SPISIMOA)
34
//    GpioCtrlRegs.GPAPUD.bit.GPIO17 = 0;   // Enable pull-up on GPIO17 (SPISOMIA)
35
//    GpioCtrlRegs.GPAPUD.bit.GPIO18 = 0;   // Enable pull-up on GPIO18 (SPICLKA)
36
//    GpioCtrlRegs.GPAPUD.bit.GPIO19 = 0;   // Enable pull-up on GPIO19 (SPISTEA)
37
38
39
    GpioCtrlRegs.GPBPUD.bit.GPIO54 = 0;   // Enable pull-up on GPIO54 (SPISIMOA)
40
    GpioCtrlRegs.GPBPUD.bit.GPIO55 = 0;   // Enable pull-up on GPIO55 (SPISOMIA)
41
    GpioCtrlRegs.GPBPUD.bit.GPIO56 = 0;   // Enable pull-up on GPIO56 (SPICLKA)
42
    GpioCtrlRegs.GPBPUD.bit.GPIO57 = 0;   // Enable pull-up on GPIO57 (SPISTEA)
43
44
  GpioCtrlRegs.GPAPUD.bit.GPIO29 = 0;  //Debug LED pull-up on
45
//  GpioCtrlRegs.GPAPUD.bit.GPIO1 = 0;   //SPI_Transfer pull-up on
46
47
  /*Direction of used GPIO*/
48
  GpioCtrlRegs.GPBDIR.bit.GPIO54 = 0;
49
  GpioCtrlRegs.GPBDIR.bit.GPIO55 = 1;
50
  GpioCtrlRegs.GPBDIR.bit.GPIO56 = 0;  
51
  GpioCtrlRegs.GPBDIR.bit.GPIO57 = 0;
52
53
/* Set qualification for selected pins to asynch only */
54
// This will select asynch (no qualification) for the selected pins.
55
// Comment out other unwanted lines.
56
57
//    GpioCtrlRegs.GPAQSEL2.bit.GPIO16 = 3; // Asynch input GPIO16 (SPISIMOA)
58
//    GpioCtrlRegs.GPAQSEL2.bit.GPIO17 = 3; // Asynch input GPIO17 (SPISOMIA)
59
//    GpioCtrlRegs.GPAQSEL2.bit.GPIO18 = 3; // Asynch input GPIO18 (SPICLKA)
60
//    GpioCtrlRegs.GPAQSEL2.bit.GPIO19 = 3; // Asynch input GPIO19 (SPISTEA)
61
62
    GpioCtrlRegs.GPBQSEL2.bit.GPIO54 = 3; // Asynch input (SPISIMOA)
63
    GpioCtrlRegs.GPBQSEL2.bit.GPIO55 = 3; // Asynch input (SPISOMIA)
64
    GpioCtrlRegs.GPBQSEL2.bit.GPIO56 = 3; // Asynch input  (SPICLKA)
65
    GpioCtrlRegs.GPBQSEL2.bit.GPIO57 = 3; // Asynch input  (SPISTEA)
66
67
68
/* Configure SPI-A pins using GPIO regs*/
69
// This specifies which of the possible GPIO pins will be SPI functional pins.
70
// Comment out other unwanted lines.
71
72
//    GpioCtrlRegs.GPAMUX2.bit.GPIO16 = 1; // Configure GPIO16 as SPISIMOA
73
//    GpioCtrlRegs.GPAMUX2.bit.GPIO17 = 1; // Configure GPIO17 as SPISOMIA
74
//    GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 1; // Configure GPIO18 as SPICLKA
75
 //   GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 1; // Configure GPIO19 as SPISTEA
76
77
    GpioCtrlRegs.GPBMUX2.bit.GPIO54 = 1; // Configure GPIO54 as SPISIMOA
78
    GpioCtrlRegs.GPBMUX2.bit.GPIO55 = 1; // Configure GPIO55 as SPISOMIA
79
    GpioCtrlRegs.GPBMUX2.bit.GPIO56 = 1; // Configure GPIO56 as SPICLKA
80
    GpioCtrlRegs.GPBMUX2.bit.GPIO57 = 1; // Configure GPIO57 as SPISTEA
81
82
  GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0;// Configure GPIO1 as GPIO
83
  GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 0;// Configure GPIO29 as GPIO
84
85
  /*Initial State! */
86
  GpioDataRegs.GPACLEAR.bit.GPIO1=1;
87
88
  /*Direction of used GPIO*/
89
  GpioCtrlRegs.GPADIR.bit.GPIO29 = 1; //GPIO Debug_LED out
90
  GpioCtrlRegs.GPADIR.bit.GPIO1 = 1;  //GPIO SPI_Transfer out
91
92
93
    EDIS;
94
}

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.