From 98997691d314b6143fab27bfa1832c200e39bb57 Mon Sep 17 00:00:00 2001 From: Uwe Hermann Date: Wed, 30 Dec 2009 23:28:40 +0100 Subject: [PATCH] Add first version of spi_enable()/spi_disable(). --- include/libopenstm32/spi.h | 2 ++ lib/spi.c | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/include/libopenstm32/spi.h b/include/libopenstm32/spi.h index f7baa793..11afa32a 100644 --- a/include/libopenstm32/spi.h +++ b/include/libopenstm32/spi.h @@ -150,6 +150,8 @@ /* --- Function prototypes ------------------------------------------------- */ int spi_init_master(u32 spi, u32 br, u32 cpol, u32 cpha, u32 dff, u32 lsbfirst); +void spi_enable(u32 spi); +void spi_disable(u32 spi); void spi_write(u32 spi, u16 data); u16 spi_read(u32 spi); diff --git a/lib/spi.c b/lib/spi.c index 02936eed..d11cf5d4 100644 --- a/lib/spi.c +++ b/lib/spi.c @@ -51,6 +51,27 @@ int spi_init_master(u32 spi, u32 br, u32 cpol, u32 cpha, u32 dff, u32 lsbfirst) return 0; /* TODO */ } +/* TODO: Error handling? */ +void spi_enable(u32 spi) +{ + u32 reg32; + + reg32 = SPI_CR1(spi); + reg32 |= SPI_CR1_SPE; /* Enable SPI. */ + SPI_CR1(spi) = reg32; +} + +/* TODO: Error handling? */ +void spi_disable(u32 spi) +{ + u32 reg32; + + /* TODO: Follow procedure from section 23.3.8 in the techref manual. */ + reg32 = SPI_CR1(spi); + reg32 &= ~(SPI_CR1_SPE); /* Disable SPI. */ + SPI_CR1(spi) = reg32; +} + void spi_write(u32 spi, u16 data) { /* Write data (8 or 16 bits, depending on DFF) into DR. */