From 570bc7b49b75a339b9492804c16a31f246e871a7 Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Thu, 22 Apr 2021 08:48:29 +0000 Subject: [PATCH] Wrong DMA initializations. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@14259 27425a3e-05d8-49a3-a47f-9c15f0e5edd8 --- demos/RP/RT-RP2040-PICO/main.c | 17 +++++++++++++++++ os/hal/ports/RP/LLD/SPIv1/hal_spi_lld.c | 4 ++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/demos/RP/RT-RP2040-PICO/main.c b/demos/RP/RT-RP2040-PICO/main.c index a7d6d6d8e..4ab48018d 100644 --- a/demos/RP/RT-RP2040-PICO/main.c +++ b/demos/RP/RT-RP2040-PICO/main.c @@ -17,6 +17,18 @@ #include "ch.h" #include "hal.h" +void spi_cb(SPIDriver *spip) { + + (void)spip; +} + +SPIConfig spicfg1 = { + .end_cb = spi_cb, + .ssline = 4U, + .SSPCR0 = 0U, + .SSPCPSR = 0U +}; + semaphore_t blinker_sem; /* @@ -58,6 +70,11 @@ int main(void) { */ palSetLineMode(25U, PAL_MODE_OUTPUT_PUSHPULL | PAL_RP_PAD_DRIVE12); + /* + * Settin up SPI0. + */ + spiStart(&SPID0, &spicfg1); + /* * Creates the blinker thread. */ diff --git a/os/hal/ports/RP/LLD/SPIv1/hal_spi_lld.c b/os/hal/ports/RP/LLD/SPIv1/hal_spi_lld.c index 1e7238c6e..18e158e1c 100644 --- a/os/hal/ports/RP/LLD/SPIv1/hal_spi_lld.c +++ b/os/hal/ports/RP/LLD/SPIv1/hal_spi_lld.c @@ -203,8 +203,8 @@ void spi_lld_start(SPIDriver *spip) { } /* DMA setup.*/ - dmaChannelSetSourceX(spip->dmarx, (uint32_t)&spip->spi->SSPDR); - dmaChannelSetDestinationX(spip->dmatx, (uint32_t)&spip->spi->SSPDR); + dmaChannelSetDestinationX(spip->dmarx, (uint32_t)&spip->spi->SSPDR); + dmaChannelSetSourceX(spip->dmatx, (uint32_t)&spip->spi->SSPDR); } /* Configuration-dependent DMA settings.*/