Merge pull request #326 from bcostm/master

[NUCLEO_L053R8] Add object pin init for SPI + typo for I2C
pull/328/head
Martin Kojtal 2014-05-25 07:58:51 +01:00
commit 6d53312090
2 changed files with 15 additions and 10 deletions

View File

@ -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);

View File

@ -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;