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 3ec34a0f8..95c588af4 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 | |||
62 | 62 | ||
63 | 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. | 63 | 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. |
64 | 64 | ||
65 | |`config.h` Overrride |Description |Default| | 65 | |`config.h` Overrride |Description |Default| |
66 | |------------------------|-------------------------------------------------------------------------------------------|-------| | 66 | |------------------------|--------------------------------------------------------------|-------| |
67 | |`I2C_DRIVER` |I2C peripheral to use - I2C1 -> `I2CD1`, I2C2 -> `I2CD2` etc. |`I2CD1`| | 67 | |`I2C_DRIVER` |I2C peripheral to use - I2C1 -> `I2CD1`, I2C2 -> `I2CD2` etc. |`I2CD1`| |
68 | |`I2C1_BANK` (deprecated)|The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`), superseded by `I2C1_SCL_BANK`/`I2C1_SDA_BANK`|`GPIOB`| | 68 | |`I2C1_SCL_PIN` |The pin definition for SCL |`B6` | |
69 | |`I2C1_SCL_BANK` |The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`) to use for SCL |`GPIOB`| | 69 | |`I2C1_SCL_PAL_MODE` |The alternate function mode for SCL |`4` | |
70 | |`I2C1_SCL` |The pin number for SCL (0-15) |`6` | | 70 | |`I2C1_SDA_PIN` |The pin definition for SDA |`B7` | |
71 | |`I2C1_SCL_PAL_MODE` |The alternate function mode for SCL |`4` | | 71 | |`I2C1_SDA_PAL_MODE` |The alternate function mode for SDA |`4` | |
72 | |`I2C1_SDA_BANK` |The bank of pins (`GPIOA`, `GPIOB`, `GPIOC`) to use for SDA |`GPIOB`| | ||
73 | |`I2C1_SDA` |The pin number for SDA (0-15) |`7` | | ||
74 | |`I2C1_SDA_PAL_MODE` |The alternate function mode for SDA |`4` | | ||
75 | 72 | ||
76 | The following configuration values depend on the specific MCU in use. | 73 | The following configuration values depend on the specific MCU in use. |
77 | 74 | ||
@@ -190,7 +187,7 @@ Receive multiple bytes from the selected SPI device. | |||
190 | 187 | ||
191 | ### `i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)` | 188 | ### `i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)` |
192 | 189 | ||
193 | Writes to a register on the I2C device. | 190 | Writes to a register with an 8-bit address on the I2C device. |
194 | 191 | ||
195 | #### Arguments | 192 | #### Arguments |
196 | 193 | ||
@@ -211,9 +208,32 @@ Writes to a register on the I2C device. | |||
211 | 208 | ||
212 | --- | 209 | --- |
213 | 210 | ||
211 | ### `i2c_status_t i2c_writeReg16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)` | ||
212 | |||
213 | Writes to a register with a 16-bit address (big endian) on the I2C device. | ||
214 | |||
215 | #### Arguments | ||
216 | |||
217 | - `uint8_t devaddr` | ||
218 | The 7-bit I2C address of the device. | ||
219 | - `uint16_t regaddr` | ||
220 | The register address to write to. | ||
221 | - `uint8_t *data` | ||
222 | A pointer to the data to transmit. | ||
223 | - `uint16_t length` | ||
224 | The number of bytes to write. Take care not to overrun the length of `data`. | ||
225 | - `uint16_t timeout` | ||
226 | The time in milliseconds to wait for a response from the target device. | ||
227 | |||
228 | #### Return Value | ||
229 | |||
230 | `I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`. | ||
231 | |||
232 | --- | ||
233 | |||
214 | ### `i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)` | 234 | ### `i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)` |
215 | 235 | ||
216 | Reads from a register on the I2C device. | 236 | Reads from a register with an 8-bit address on the I2C device. |
217 | 237 | ||
218 | #### Arguments | 238 | #### Arguments |
219 | 239 | ||
@@ -232,6 +252,27 @@ Reads from a register on the I2C device. | |||
232 | 252 | ||
233 | --- | 253 | --- |
234 | 254 | ||
255 | ### `i2c_status_t i2c_readReg16(uint8_t devaddr, uint16_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)` | ||
256 | |||
257 | Reads from a register with a 16-bit address (big endian) on the I2C device. | ||
258 | |||
259 | #### Arguments | ||
260 | |||
261 | - `uint8_t devaddr` | ||
262 | The 7-bit I2C address of the device. | ||
263 | - `uint16_t regaddr` | ||
264 | The register address to read from. | ||
265 | - `uint16_t length` | ||
266 | The number of bytes to read. Take care not to overrun the length of `data`. | ||
267 | - `uint16_t timeout` | ||
268 | The time in milliseconds to wait for a response from the target device. | ||
269 | |||
270 | #### Return Value | ||
271 | |||
272 | `I2C_STATUS_TIMEOUT` if the timeout period elapses, `I2C_STATUS_ERROR` if some other error occurs, otherwise `I2C_STATUS_SUCCESS`. | ||
273 | |||
274 | --- | ||
275 | |||
235 | ### `i2c_status_t i2c_stop(void)` | 276 | ### `i2c_status_t i2c_stop(void)` |
236 | 277 | ||
237 | Stop the current I2C transaction. | 278 | Stop the current I2C transaction. |