Maxtronik
24.04.2012, 20:20
Hallo,
ich möchte über einen SPI Bus mit einem Display kommunizieren.
Das ganze System besteht aus einem LPC1769 Xpresso Board.
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 es will mir nicht gelingen ein Clock Signal anzeigen zu lassen.
Hier ist der Code:
#ifdef __USE_CMSIS
#include "LPC17xx.h"
#endif
#include <cr_section_macros.h>
#include <NXP/crp.h>
__CRP const unsigned int CRP_WORD = CRP_NO_CRP ;
int main(void)
{
LPC_SC->PCONP |= (1<<21); //PCSSP0 = 1 Enable AHB clock
LPC_SC->PCLKSEL1 &= ~(1<<10); //PCLK_peripheral = CCLK/4
LPC_SC->PCLKSEL1 &= ~(1<<11);
LPC_SSP0->CPSR = 4; //Clock Prescale
LPC_PINCON->PINSEL0 &= ~(1 << 30); // P0.15: SCK0
LPC_PINCON->PINSEL0 |= (1 << 31);
LPC_PINCON->PINSEL1 &= ~((1<<2) | (1<<4)); // P0.17: MISO0, P0.18: MOSI0
LPC_PINCON->PINSEL1 |= (1<<3) | (1<<5);
LPC_SSP0->CR0 &= ~(1<<0); //8 Bit
LPC_SSP0->CR0 |= (1<<1) | (1<<2) | (1<<3); //8 Bit
LPC_SSP0->CR0 &= ~(1<<6); //CPOL = 0 SCK high zwischen frame
LPC_SSP0->CR1 &= ~(1<<2); //SSP Master
LPC_SSP0->CR1 |= (1<<1); //SSP Enable
uint8_t i;
while(1)
{
i = 0;
i = i + 1;
}
return 0 ;
}
(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.
MfG Maxtronik
ich möchte über einen SPI Bus mit einem Display kommunizieren.
Das ganze System besteht aus einem LPC1769 Xpresso Board.
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 es will mir nicht gelingen ein Clock Signal anzeigen zu lassen.
Hier ist der Code:
#ifdef __USE_CMSIS
#include "LPC17xx.h"
#endif
#include <cr_section_macros.h>
#include <NXP/crp.h>
__CRP const unsigned int CRP_WORD = CRP_NO_CRP ;
int main(void)
{
LPC_SC->PCONP |= (1<<21); //PCSSP0 = 1 Enable AHB clock
LPC_SC->PCLKSEL1 &= ~(1<<10); //PCLK_peripheral = CCLK/4
LPC_SC->PCLKSEL1 &= ~(1<<11);
LPC_SSP0->CPSR = 4; //Clock Prescale
LPC_PINCON->PINSEL0 &= ~(1 << 30); // P0.15: SCK0
LPC_PINCON->PINSEL0 |= (1 << 31);
LPC_PINCON->PINSEL1 &= ~((1<<2) | (1<<4)); // P0.17: MISO0, P0.18: MOSI0
LPC_PINCON->PINSEL1 |= (1<<3) | (1<<5);
LPC_SSP0->CR0 &= ~(1<<0); //8 Bit
LPC_SSP0->CR0 |= (1<<1) | (1<<2) | (1<<3); //8 Bit
LPC_SSP0->CR0 &= ~(1<<6); //CPOL = 0 SCK high zwischen frame
LPC_SSP0->CR1 &= ~(1<<2); //SSP Master
LPC_SSP0->CR1 |= (1<<1); //SSP Enable
uint8_t i;
while(1)
{
i = 0;
i = i + 1;
}
return 0 ;
}
(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.
MfG Maxtronik