mirror of https://github.com/ARMmbed/mbed-os.git
Merge pull request #326 from bcostm/master
[NUCLEO_L053R8] Add object pin init for SPI + typo for I2Cpull/328/head
commit
6d53312090
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue