From 48a53c4be0a8b301d2210f157c65379894f16488 Mon Sep 17 00:00:00 2001 From: bcostm Date: Fri, 23 May 2014 16:14:30 +0200 Subject: [PATCH] [NUCLEO_L053R8] Add object pin init for SPI + typo for I2C --- .../TARGET_STM/TARGET_NUCLEO_L053R8/i2c_api.c | 20 +++++++++---------- .../TARGET_STM/TARGET_NUCLEO_L053R8/spi_api.c | 5 +++++ 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L053R8/i2c_api.c b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L053R8/i2c_api.c index f423a89201..c0e58d0d9b 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L053R8/i2c_api.c +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L053R8/i2c_api.c @@ -165,8 +165,8 @@ int i2c_read(i2c_t *obj, int address, char *data, int length, int stop) { /* update CR2 register */ i2c->CR2 = (i2c->CR2 & (uint32_t)~((uint32_t)(I2C_CR2_SADD | I2C_CR2_NBYTES | I2C_CR2_RELOAD | I2C_CR2_AUTOEND | I2C_CR2_RD_WRN | I2C_CR2_START | I2C_CR2_STOP))) - | (uint32_t)(((uint32_t)address & I2C_CR2_SADD) | (((uint32_t)length << 16 ) & I2C_CR2_NBYTES) | (uint32_t)I2C_SOFTEND_MODE | (uint32_t)I2C_GENERATE_START_READ); - + | (uint32_t)(((uint32_t)address & I2C_CR2_SADD) | (((uint32_t)length << 16) & I2C_CR2_NBYTES) | (uint32_t)I2C_SOFTEND_MODE | (uint32_t)I2C_GENERATE_START_READ); + // Read all bytes for (count = 0; count < length; count++) { value = i2c_byte_read(obj, 0); @@ -181,7 +181,8 @@ int i2c_read(i2c_t *obj, int address, char *data, int length, int stop) { return 0; } } - __HAL_I2C_CLEAR_FLAG(&I2cHandle,I2C_FLAG_TC); + + __HAL_I2C_CLEAR_FLAG(&I2cHandle, I2C_FLAG_TC); // If not repeated start, send stop. if (stop) { @@ -211,10 +212,8 @@ int i2c_write(i2c_t *obj, int address, const char *data, int length, int stop) { /* update CR2 register */ i2c->CR2 = (i2c->CR2 & (uint32_t)~((uint32_t)(I2C_CR2_SADD | I2C_CR2_NBYTES | I2C_CR2_RELOAD | I2C_CR2_AUTOEND | I2C_CR2_RD_WRN | I2C_CR2_START | I2C_CR2_STOP))) - | (uint32_t)(((uint32_t)address & I2C_CR2_SADD) | (((uint32_t)length << 16 ) & I2C_CR2_NBYTES) | (uint32_t)I2C_SOFTEND_MODE | (uint32_t)I2C_GENERATE_START_WRITE); - + | (uint32_t)(((uint32_t)address & I2C_CR2_SADD) | (((uint32_t)length << 16) & I2C_CR2_NBYTES) | (uint32_t)I2C_SOFTEND_MODE | (uint32_t)I2C_GENERATE_START_WRITE); - for (count = 0; count < length; count++) { i2c_byte_write(obj, data[count]); } @@ -225,9 +224,10 @@ int i2c_write(i2c_t *obj, int address, const char *data, int length, int stop) { timeout--; if (timeout == 0) { return 0; + } } - } - __HAL_I2C_CLEAR_FLAG(&I2cHandle,I2C_FLAG_TC); + + __HAL_I2C_CLEAR_FLAG(&I2cHandle, I2C_FLAG_TC); // If not repeated start, send stop. if (stop) { @@ -275,7 +275,7 @@ int i2c_byte_write(i2c_t *obj, int data) { } i2c->TXDR = (uint8_t)data; - + return 1; } @@ -355,7 +355,7 @@ int i2c_slave_receive(i2c_t *obj) { int i2c_slave_read(i2c_t *obj, char *data, int length) { char size = 0; - + if (length == 0) return 0; while (size < length) data[size++] = (char)i2c_byte_read(obj, 0); diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L053R8/spi_api.c b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L053R8/spi_api.c index 01a039b680..2ee90a054f 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L053R8/spi_api.c +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L053R8/spi_api.c @@ -129,6 +129,11 @@ void spi_init(spi_t *obj, PinName mosi, PinName miso, PinName sclk, PinName ssel obj->cpha = SPI_PHASE_1EDGE; obj->br_presc = SPI_BAUDRATEPRESCALER_256; + obj->pin_miso = miso; + obj->pin_mosi = mosi; + obj->pin_sclk = sclk; + obj->pin_ssel = ssel; + if (ssel == NC) { // SW NSS Master mode obj->mode = SPI_MODE_MASTER; obj->nss = SPI_NSS_SOFT;