TMS320F28335 & SPIRXBUF immer FFFF

Gast #3702973
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
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren