Hi, ich versuche gerade beim LPC1758 ein gültiges SPI Signal zu erzeugen via SSP Interface. Das Clocksignal kann ich zwar sehen, allerdings ist dessen Amplitude bei 1.2V und nicht bei 3V3. Ansonsten würde es sauber aussehen. Einen externen Pullup hab ich nicht installiert. Meine Init sieht folgendermaßen aus:
1 | /* Enable SSPI0 block */
|
2 | LPC_SC->PCONP |= (1 << 21); |
3 | |
4 | /* Set SSEL0 as GPIO, output high */
|
5 | LPC_PINCON->PINSEL1 &= ~(3 << 0); /* Configure P0.16(SSEL) as GPIO */ |
6 | LPC_GPIO0->FIODIR |= (1 << 16); /* set P0.16 as output */ |
7 | |
8 | |
9 | /* Configure other SSP pins: SCK, MISO, MOSI */
|
10 | LPC_PINCON->PINSEL0 &= ~(3UL << 30); |
11 | LPC_PINCON->PINSEL0 |= (2UL << 30); /* P0.15: SCK0 */ |
12 | LPC_PINCON->PINSEL1 &= ~((3<<2) | (3<<4)); |
13 | LPC_PINCON->PINSEL1 |= ((2<<2) | (2<<4)); /* P0.17: MISO0, P0.18: MOSI0 */ |
14 | |
15 | /* Configure SSP0_PCLK to CCLK(100MHz), default value is CCLK/4 */
|
16 | LPC_SC->PCLKSEL1 &= ~(3 << 10); |
17 | LPC_SC->PCLKSEL1 |= (1 << 10); /* SSP0_PCLK=CCLK */ |
18 | |
19 | /* 8bit, SPI frame format, CPOL=0, CPHA=0, SCR=0 */
|
20 | LPC_SSP0->CR0 = (0x07 << 0) | /* data width: 8bit*/ |
21 | (0x00 << 4) | /* frame format: SPI */ |
22 | (0x00 << 6) | /* CPOL: low level */ |
23 | (0x00 << 7) | /* CPHA: first edge */ |
24 | (0x00 << 8); /* SCR = 0 */ |
25 | |
26 | |
27 | /* Enable SSP0 as a master */
|
28 | LPC_SSP0->CR1 = (0x00 << 0) | /* Normal mode */ |
29 | (0x01 << 1) | /* Enable SSP0 */ |
30 | (0x00 << 2) | /* Master */ |
31 | (0x00 << 3); /* slave output disabled */ |
32 | |
33 | /* Configure SSP0 clock rate to 400kHz (100MHz/250) */
|
34 | SPI_ConfigClockRate (SPI_CLOCKRATE_LOW); |
35 | |
36 | /* Set SSEL to high */
|
37 | SPI_CS_High (); |
38 | |
39 | /* ************* Daten senden ******************** */
|
40 | SPI_CS_Low(); |
41 | |
42 | SPI_SendByte (0x88); |
Gruß Lars