More fixes but SPIv3 still does not work.

git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@11221 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
Giovanni Di Sirio 2018-01-04 13:52:45 +00:00
parent c2994bdb33
commit 289b799d03
2 changed files with 13 additions and 19 deletions

View File

@ -423,7 +423,7 @@ void spi_lld_start(SPIDriver *spip) {
osalDbgAssert(!b, "stream already allocated");
rccEnableSPI1(false);
dmaSetRequestSource(spip->dmarx, STM32_DMAMUX1_SPI1_RX);
dmaSetRequestSource(spip->dmarx, STM32_DMAMUX1_SPI1_TX);
dmaSetRequestSource(spip->dmatx, STM32_DMAMUX1_SPI1_TX);
}
#endif
#if STM32_SPI_USE_SPI2
@ -441,7 +441,7 @@ void spi_lld_start(SPIDriver *spip) {
osalDbgAssert(!b, "stream already allocated");
rccEnableSPI2(false);
dmaSetRequestSource(spip->dmarx, STM32_DMAMUX1_SPI2_RX);
dmaSetRequestSource(spip->dmarx, STM32_DMAMUX1_SPI2_TX);
dmaSetRequestSource(spip->dmatx, STM32_DMAMUX1_SPI2_TX);
}
#endif
#if STM32_SPI_USE_SPI3
@ -459,7 +459,7 @@ void spi_lld_start(SPIDriver *spip) {
osalDbgAssert(!b, "stream already allocated");
rccEnableSPI3(false);
dmaSetRequestSource(spip->dmarx, STM32_DMAMUX1_SPI3_RX);
dmaSetRequestSource(spip->dmarx, STM32_DMAMUX1_SPI3_TX);
dmaSetRequestSource(spip->dmatx, STM32_DMAMUX1_SPI3_TX);
}
#endif
#if STM32_SPI_USE_SPI4
@ -477,7 +477,7 @@ void spi_lld_start(SPIDriver *spip) {
osalDbgAssert(!b, "stream already allocated");
rccEnableSPI4(false);
dmaSetRequestSource(spip->dmarx, STM32_DMAMUX1_SPI4_RX);
dmaSetRequestSource(spip->dmarx, STM32_DMAMUX1_SPI4_TX);
dmaSetRequestSource(spip->dmatx, STM32_DMAMUX1_SPI4_TX);
}
#endif
#if STM32_SPI_USE_SPI5
@ -495,7 +495,7 @@ void spi_lld_start(SPIDriver *spip) {
osalDbgAssert(!b, "stream already allocated");
rccEnableSPI5(false);
dmaSetRequestSource(spip->dmarx, STM32_DMAMUX1_SPI5_RX);
dmaSetRequestSource(spip->dmarx, STM32_DMAMUX1_SPI5_TX);
dmaSetRequestSource(spip->dmatx, STM32_DMAMUX1_SPI5_TX);
}
#endif
#if STM32_SPI_USE_SPI6
@ -513,7 +513,7 @@ void spi_lld_start(SPIDriver *spip) {
osalDbgAssert(!b, "stream already allocated");
rccEnableSPI6(false);
dmaSetRequestSource(spip->dmarx, STM32_DMAMUX2_SPI6_RX);
dmaSetRequestSource(spip->dmarx, STM32_DMAMUX2_SPI6_TX);
dmaSetRequestSource(spip->dmatx, STM32_DMAMUX2_SPI6_TX);
}
#endif
@ -529,31 +529,25 @@ void spi_lld_start(SPIDriver *spip) {
if (dsize <= 8U) {
/* Frame width is between 4 and 8 bits.*/
spip->rxdmamode = (spip->rxdmamode & ~STM32_DMA_CR_SIZE_MASK) |
STM32_DMA_CR_PSIZE_BYTE | STM32_DMA_CR_MSIZE_BYTE |
STM32_DMA_CR_PFCTRL;
STM32_DMA_CR_PSIZE_BYTE | STM32_DMA_CR_MSIZE_BYTE;
spip->txdmamode = (spip->txdmamode & ~STM32_DMA_CR_SIZE_MASK) |
STM32_DMA_CR_PSIZE_BYTE | STM32_DMA_CR_MSIZE_BYTE |
STM32_DMA_CR_PFCTRL;
STM32_DMA_CR_PSIZE_BYTE | STM32_DMA_CR_MSIZE_BYTE;
cfg1 |= SPI_CFG1_FTHLV_2; /* FTHLV = 4.*/
}
else if (dsize <= 16U) {
/* Frame width is between 9 and 16 bits.*/
spip->rxdmamode = (spip->rxdmamode & ~STM32_DMA_CR_SIZE_MASK) |
STM32_DMA_CR_PSIZE_HWORD | STM32_DMA_CR_MSIZE_HWORD |
STM32_DMA_CR_PFCTRL;
STM32_DMA_CR_PSIZE_HWORD | STM32_DMA_CR_MSIZE_HWORD;
spip->txdmamode = (spip->txdmamode & ~STM32_DMA_CR_SIZE_MASK) |
STM32_DMA_CR_PSIZE_HWORD | STM32_DMA_CR_MSIZE_HWORD |
STM32_DMA_CR_PFCTRL;
STM32_DMA_CR_PSIZE_HWORD | STM32_DMA_CR_MSIZE_HWORD;
cfg1 |= SPI_CFG1_FTHLV_1; /* FTHLV = 2.*/
}
else {
/* Frame width is between 16 and 32 bits.*/
spip->rxdmamode = (spip->rxdmamode & ~STM32_DMA_CR_SIZE_MASK) |
STM32_DMA_CR_PSIZE_WORD | STM32_DMA_CR_MSIZE_WORD |
STM32_DMA_CR_PFCTRL;
STM32_DMA_CR_PSIZE_WORD | STM32_DMA_CR_MSIZE_WORD;
spip->txdmamode = (spip->txdmamode & ~STM32_DMA_CR_SIZE_MASK) |
STM32_DMA_CR_PSIZE_WORD | STM32_DMA_CR_MSIZE_WORD |
STM32_DMA_CR_PFCTRL;
STM32_DMA_CR_PSIZE_WORD | STM32_DMA_CR_MSIZE_WORD;
cfg1 |= SPI_CFG1_FTHLV_0; /* FTHLV = 1.*/
}

View File

@ -2509,7 +2509,7 @@
#define STM32_SPI1CLK 0 /* Unknown, would require a board value */
#define STM32_SPI2CLK 0 /* Unknown, would require a board value */
#define STM32_SPI3CLK 0 /* Unknown, would require a board value */
#elif STM32_SPI123SEL == STM32_SPI123SEL_PLL2_P_CK
#elif STM32_SPI123SEL == STM32_SPI123SEL_PER_CK
#define STM32_SPI1CLK STM32_PER_CK
#define STM32_SPI2CLK STM32_PER_CK
#define STM32_SPI3CLK STM32_PER_CK