diff options
Diffstat (limited to 'docs/i2c_driver.md')
| -rw-r--r-- | docs/i2c_driver.md | 65 | 
1 files changed, 53 insertions, 12 deletions
| diff --git a/docs/i2c_driver.md b/docs/i2c_driver.md index 3ec34a0f87..95c588af44 100644 --- a/docs/i2c_driver.md +++ b/docs/i2c_driver.md @@ -62,16 +62,13 @@ Then, modify your board's `mcuconf.h` to enable the peripheral you've chosen, fo  Configuration-wise, you'll need to set up the peripheral as per your MCU's datasheet -- the defaults match the pins for a Proton-C, i.e. STM32F303. -|`config.h` Overrride    |Description                                                                                |Default| -|------------------------|-------------------------------------------------------------------------------------------|-------| -|`I2C_DRIVER`            |I2C peripheral to use - I2C1 -> `I2CD1`, I2C2 -> `I2CD2` etc.                              |`I2CD1`| -|`I2C1_BANK` (deprecated)|The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`), superseded by `I2C1_SCL_BANK`/`I2C1_SDA_BANK`|`GPIOB`| -|`I2C1_SCL_BANK`         |The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`) to use for SCL                                |`GPIOB`| -|`I2C1_SCL`              |The pin number for SCL (0-15)                                                              |`6`    | -|`I2C1_SCL_PAL_MODE`     |The alternate function mode for SCL                                                        |`4`    | -|`I2C1_SDA_BANK`         |The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`) to use for SDA                                |`GPIOB`| -|`I2C1_SDA`              |The pin number for SDA (0-15)                                                              |`7`    | -|`I2C1_SDA_PAL_MODE`     |The alternate function mode for SDA                                                        |`4`    | +|`config.h` Overrride    |Description                                                   |Default| +|------------------------|--------------------------------------------------------------|-------| +|`I2C_DRIVER`            |I2C peripheral to use - I2C1 -> `I2CD1`, I2C2 -> `I2CD2` etc. |`I2CD1`| +|`I2C1_SCL_PIN`          |The pin definition for SCL                                    |`B6`   | +|`I2C1_SCL_PAL_MODE`     |The alternate function mode for SCL                           |`4`    | +|`I2C1_SDA_PIN`          |The pin definition for SDA                                    |`B7`   | +|`I2C1_SDA_PAL_MODE`     |The alternate function mode for SDA                           |`4`    |  The following configuration values depend on the specific MCU in use. @@ -190,7 +187,7 @@ Receive multiple bytes from the selected SPI device.  ### `i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)` -Writes to a register on the I2C device. +Writes to a register with an 8-bit address on the I2C device.  #### Arguments @@ -211,9 +208,32 @@ Writes to a register on the I2C device.  --- +### `i2c_status_t i2c_writeReg16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)` + +Writes to a register with a 16-bit address (big endian) on the I2C device. + +#### Arguments + + - `uint8_t devaddr`   +   The 7-bit I2C address of the device. + - `uint16_t regaddr`   +   The register address to write to. + - `uint8_t *data`   +   A pointer to the data to transmit. + - `uint16_t length`   + The number of bytes to write. Take care not to overrun the length of `data`. + - `uint16_t timeout`   +   The time in milliseconds to wait for a response from the target device. + +#### Return Value + +`I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`. + +--- +  ### `i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)` -Reads from a register on the I2C device. +Reads from a register with an 8-bit address on the I2C device.  #### Arguments @@ -232,6 +252,27 @@ Reads from a register on the I2C device.  --- +### `i2c_status_t i2c_readReg16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)` + +Reads from a register with a 16-bit address (big endian) on the I2C device. + +#### Arguments + + - `uint8_t devaddr`   +   The 7-bit I2C address of the device. + - `uint16_t regaddr`   +   The register address to read from. + - `uint16_t length`   + The number of bytes to read. Take care not to overrun the length of `data`. + - `uint16_t timeout`   +   The time in milliseconds to wait for a response from the target device. + +#### Return Value + +`I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`. + +--- +  ### `i2c_status_t i2c_stop(void)`  Stop the current I2C transaction. | 
