# I2C
这是一个控制M5Stack的Grove-A端口(I2C)的类。
需要通过M5.Begin()预先初始化I2C通信。
## writeCommand()
**構文:**
`bool writeCommand(uint8_t address, uint8_t subAddress);`
**功能:**
写入指定的地址。
没有参数时使用。
**参数**
| 参数 |型 |功能 |
| --- | --- | --- |
| address | uint8_t |奴隶地址 |
| subAddress | uint8_t |功能地址 |
**返回值:**
| 値 |功能 |
| --- | --- |
|true|发送成功。|
|false|发送失败。|
## writeByte()
**構文:**
`bool writeByte(uint8_t address, uint8_t subAddress, uint8_t data);`
**功能:**
写入指定的地址。
有一个参数时使用。
**参数**
| 参数 |型 |功能 |
| --- | --- | --- |
| address | uint8_t |奴隶地址 |
| subAddress | uint8_t |功能地址 |
| data | uint8_t |参数 |
**返回值:**
| 値 |功能 |
| --- | --- |
|true|发送成功。|
|false|发送失败。|
## writeBytes()
**構文:**
` bool writeBytes(uint8_t address, uint8_t subAddress, uint8_t *data,uint8_t length);`
**功能:**
写入指定的地址。
在有多个参数时使用。
**参数**
| 参数 |型 |功能 |
| --- | --- | --- |
| address | uint8_t |奴隶地址 |
| subAddress | uint8_t |功能地址 |
| data | uint8_t * |参数数组的开头 |
| length | uint8_t |参数长度 |
**返回值:**
| 値 |功能 |
| --- | --- |
|true|发送成功。|
|false|发送失败。|
## readByte()
**構文:**
` bool readByte(uint8_t address, uint8_t *result);`
**功能:**
从指定的地址读取。
在读取之前没有数据要发送且响应为1个字节时使用。
**参数**
| 参数 |型 |功能 |
| --- | --- | --- |
| address | uint8_t |奴隶地址 |
| result | uint8_t * |结果存储目的地 |
**返回值:**
| 値 |功能 |
| --- | --- |
|true|阅读成功。|
|false|读取失败。|
## readByte()
**構文:**
`bool readByte(uint8_t address, uint8_t subAddress,uint8_t *result);`
**功能:**
从指定的地址读取。
当读取前发送的数据仅为功能地址且响应为1个字节时使用。
**参数**
| 参数 |型 |功能 |
| --- | --- | --- |
| address | uint8_t |奴隶地址 |
| subAddress | uint8_t |功能地址 |
| result | uint8_t * |结果存储目的地 |
**返回值:**
| 値 |功能 |
| --- | --- |
|true|阅读成功。|
|false|读取失败。|
## readBytes()
**構文:**
`bool readBytes(uint8_t address, uint8_t count,uint8_t * dest);`
**功能:**
从指定的地址读取。
在加载之前没有数据要发送且有多个响应时使用。
**参数**
| 参数 |型 |功能 |
| --- | --- | --- |
| address | uint8_t |奴隶地址 |
| count | uint8_t |请求的字节数 |
| result | uint8_t * |结果存储目的地 |
**返回值:**
| 値 |功能 |
| --- | --- |
|true|阅读成功。|
|false|读取失败。|
## readBytes()
**構文:**
`bool readBytes(uint8_t address, uint8_t subAddress, uint8_t count, uint8_t * dest);`
**功能:**
从指定的地址读取。
当在读取之前要发送的数据仅是功能地址并且存在多个响应时使用它。
**参数**
| 参数 |型 |功能 |
| --- | --- | --- |
| address | uint8_t |奴隶地址 |
| subAddress | uint8_t |功能地址 |
| count | uint8_t |请求的字节数 |
| result | uint8_t * |结果存储目的地 |
**返回值:**
| 値 |功能 |
| --- | --- |
|true|阅读成功。|
|false|读取失败。|
## scanID()
**構文:**
`bool readBytes(bool *result);`
**功能:**
在I2C总线上执行设备存在检查。
**参数**
| 参数 |型 |功能 |
| --- | --- | --- |
| result | bool * |结果存储目标(128字节) |
**返回值:**
| 値 |功能 |
| --- | --- |
|true|阅读成功。|
|false|读取失败。|
**使用示例;**
```clike
bool result[0x80];
M5.I2C.scanID(&result[0]);
```