Hallo,
ich bin schon seit einiger Zeit dabei den SPI bus auf einem LpcXpresso
Board ans laufen zu bringen.
Ich möchte später einmal mit dem SPI Bus ein Display ansteuern.
Das Xpresso Board ist mit einem LPC1769 bestückt.
Für Testzwecke habe ich erst einmal ein Soundkarten Oszilloskop an SCK
gehängt, aber ich schaffe es nicht den SPI zu initialisieren. Ich habe
schon alle register gesetzt verändert, ausprobiert, doch die Soundkarten
Oszilloskop Software zeigt mir kein Signal an.
Hier ist der Code:
1 | #ifdef __USE_CMSIS
|
2 | #include "LPC17xx.h"
|
3 | #endif
|
4 |
|
5 | #include <cr_section_macros.h>
|
6 | #include <NXP/crp.h>
|
7 |
|
8 | __CRP const unsigned int CRP_WORD = CRP_NO_CRP ;
|
9 |
|
10 | int main(void)
|
11 | {
|
12 | LPC_SC->PCONP |= (1<<21); //PCSSP0 = 1 Enable AHB clock
|
13 | LPC_SC->PCLKSEL1 &= ~(1<<10); //PCLK_peripheral = CCLK/4
|
14 | LPC_SC->PCLKSEL1 &= ~(1<<11);
|
15 | LPC_SSP0->CPSR = 4; //Clock Prescale
|
16 |
|
17 | LPC_PINCON->PINSEL0 &= ~(1 << 30); // P0.15: SCK0
|
18 | LPC_PINCON->PINSEL0 |= (1 << 31);
|
19 | LPC_PINCON->PINSEL1 &= ~((1<<2) | (1<<4)); // P0.17: MISO0, P0.18: MOSI0
|
20 | LPC_PINCON->PINSEL1 |= (1<<3) | (1<<5);
|
21 |
|
22 | LPC_SSP0->CR0 &= ~(1<<0); //8 Bit
|
23 | LPC_SSP0->CR0 |= (1<<1) | (1<<2) | (1<<3); //8 Bit
|
24 | LPC_SSP0->CR0 &= ~(1<<6); //CPOL = 0 SCK high zwischen frame
|
25 |
|
26 | LPC_SSP0->CR1 &= ~(1<<2); //SSP Master
|
27 | LPC_SSP0->CR1 |= (1<<1); //SSP Enable
|
28 |
|
29 | while(1)
|
30 | {
|
31 | LPC_SSP0->DR = 0x88; //Test senden
|
32 | }
|
33 | return 0 ;
|
34 | }
|
(CodeRed Develop)
Übersehe ich vielleicht ein Register oder setze ich sie falsch.
Mit dem Debugger habe ich die Register ausgelesen, scheint eigentlich
alles in Ordnung zu sein.
LG tronik