这是最新(主)开发分支的文档。如果您正在查找以前版本的文档,使用左侧的下拉菜单选择所需的版本。

I2C AT 命令集

AT+DRVI2CINIT: 初始化 I2C Host 驱动

设置命令

命令:

AT+DRVI2CINIT=<num>,<scl_io>,<sda_io>,<clock>

响应:

OK

参数

  • <num>: I2C 端口号,范围:只能是0。如果未设置后面的参数,AT 将取消初始化该 I2C 端口。

  • <scl_io>: I2C 时钟引脚。

  • <sda_io>: I2C 数据传输引脚。

  • <clock>: I2C Host模式时钟频率,单位:Hz,范围是:100000~400000。

说明

  • [scl,sda] 可以选择 [PA1,PA4],[PB20,PB19], PA组直接使用对应数字,PB组需要使用名称中的数字加上16,但需要注意,PB20,PB19 通常用作 uart0

  • 频率取值范围 [100000, 400000] HZ

示例

AT+DRVI2CINIT=0,1,4,400000      // i2c 设备 0 使用PA1,PA4 ; 时钟频率为 400KHz
AT+DRVI2CINIT=0,36,35,400000    // i2c 设备 0 使用PB20,PB19 ; 时钟频率为 400KHz
AT+DRVI2CINIT=0                 // 取消I2C初始化

AT+DRVI2CRD: 从 I2C 设备读数据

设置命令

命令:

AT+DRVI2CRD=<num>,<address>,<length>

响应:

+DRVI2CRD:<read data>
OK

参数

  • <num>: I2C 端口号,只能是 0。

  • <address>: I2C 从设备地址,7 位地址:0 ~ 0x7F;

  • <length>: I2C 数据长度,范围:1 ~ 2048。

  • <read data>: I2C 读取数据。

说明

  • 从设备读取数据时,通常需要先写从设备内部偏移地址或者寄存器地址。

示例

AT+DRVI2CRD=0,0x52,1 // 使用 I2C Host 设备0 向地址为 0x52 的从设备读一个字节,需要根据具体设备类型去下命令。

针对 EEPROM,可以先写入要读的偏移地址,再去读,例如:
AT+DRVI2CWRBYTES=0,0x52,1,0x10     // I2C0 向地址为 0x52 的设备写内部偏移地址 0x10
AT+DRVI2CRD=0,0x52,6               // I2C0 从地址为 0x52 的设备,内部偏移为 0x10 的地方读 6 字节

AT+DRVI2CWRDATA: 写入 I2C 数据

设置命令

命令:

AT+DRVI2CWRDATA=<num>,<address>,<length>

响应:

OK

收到上述响应后,输入想写入的数据,当数据达到参数指定长度后,数据传输开始。若数据传输成功,则返回:

OK

若数据传输失败,则返回:

ERROR

参数

  • <num>: I2C 端口号,只能是 0。

  • <address>: I2C 从设备地址,7 位地址:0 ~ 0x7F;

  • <length>: I2C 数据长度,范围:1 ~ 2048。

说明

  • 向设备写数据时,通常需要在数据前面加上从设备内部偏移地址或者寄存器地址。

示例

AT+DRVI2CWRDATA=0,0x52,10   // I2C0 写入 10 字节到从设备
30 31 32 33 34 35 36 37 38 39 //透传模式写入前面10个字节的数据。 注意8位偏移的 EEPROM , 第一个字节 0x30 代表的是写入的偏移地址。

针对 8 位偏移地址的 EEPROM , 写命令的前一个字节会认为是偏移地址,后面才会认为是数据 ,地址和数据不能分成两次写入。16 位偏移地址的 EEPROM,
写数据的前两个字节都会认为是地址。

AT+DRVI2CWRBYTES: 写入不超过 4 字节的 I2C 数据

设置命令

命令:

AT+DRVI2CWRBYTES=<num>,<address>,<length>,<data>

响应:

OK

参数

  • <num>: I2C 端口号,只能是 0。

  • <address>: I2C 从设备地址,7 位地址:0 ~ 0x7F;

  • <length>: 待写入的 I2C 数据长度,范围:1 ~ 4 字节。

  • <data>: 参数 <length> 指定的数据,范围:0 ~ 0xFFFFFFFF。

说明

示例

AT+DRVI2CWRBYTES=0,0x52,3,0x103132     // I2C0 写入 3 字节数据 0x103132 至地址为 0x52 的设备