Ik ben bezig met een driver te schrijven voor SPI op een baremetal board (frdm-k64f). Ik heb momenteel enkel nog maar de initialisatie geschreven. Ik had deze al graag getest met mijn osciloscoop, daarom heb ik de bit in het Continious Clock register aan gezet. Echter er verschijnt geen clock. Betekent Continious Clock niet wat ik denk dat het betekent?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
| int frdm_spi_init(SPI_Type *spi, struct frdm_spi_mode *mode, uint32_t hz) { if(mode->frame < FRDM_SPI_MIN_FRAME_SIZE) { return -1; } // Enable clock SIM_SCGC6 |= SIM_SCGC6_SPI0(FRDM_ENABLE); // For debug purpose SPI_MCR_REG(spi) &= ~SPI_MCR_CONT_SCKE_MASK; SPI_MCR_REG(spi) |= (FRDM_ENABLE<<SPI_MCR_CLR_RXF_SHIFT); // Master/slave SPI_MCR_REG(spi) &= ~SPI_MCR_MSTR_MASK; SPI_MCR_REG(spi) |= (mode->mode<<SPI_MCR_MSTR_SHIFT); if(mode->mode == FRDM_SPI_MASTER) { //Frame size SPI_CTAR_REG(spi,0) &= ~SPI_CTAR_FMSZ_MASK; SPI_CTAR_REG(spi,0) |= (((mode->frame-1) & 0x0F)<<SPI_CTAR_FMSZ_SHIFT); // Spi mode SPI_CTAR_REG(spi,0) &= ~SPI_CTAR_CPOL_MASK; SPI_CTAR_REG(spi,0) |= (mode->CPOL)<<SPI_CTAR_CPOL_SHIFT; SPI_CTAR_REG(spi,0) &= ~SPI_CTAR_CPHA_MASK; SPI_CTAR_REG(spi,0) |= (mode->CPHA)<<SPI_CTAR_CPHA_SHIFT; //Always in msb mode SPI_CTAR_REG(spi,0) &= ~SPI_CTAR_LSBFE_MASK; } else if(mode->mode == FRDM_SPI_SLAVE) { /*TODO*/ } //frequency SPI_CTAR_REG(spi,0) &= ~SPI_CTAR_ASC_MASK; SPI_CTAR_REG(spi,0) |= 1<<SPI_CTAR_ASC_SHIFT; SPI_CTAR_REG(spi,0) &= ~SPI_CTAR_PASC_MASK; SPI_CTAR_REG(spi,0) |= 0<<SPI_CTAR_PASC_SHIFT; SPI_CTAR_REG(spi,0) &= ~SPI_CTAR_DBR_MASK; SPI_CTAR_REG(spi,0) |= 0<<SPI_CTAR_DBR_SHIFT; // Fifo SPI_MCR_REG(spi) &= ~SPI_MCR_DIS_TXF_MASK; SPI_MCR_REG(spi) |= 0<<SPI_MCR_DIS_TXF_SHIFT; //Enable SPI_MCR_REG(spi) &= ~SPI_MCR_MDIS_MASK; SPI_MCR_REG(spi) |= 0<<SPI_MCR_MDIS_SHIFT; // Start hardware SPI_MCR_REG(spi) &= ~SPI_MCR_HALT_MASK; SPI_MCR_REG(spi) |= 0<<SPI_MCR_HALT_SHIFT; return 0; } |