diff --git a/machine/IIC/README.md b/machine/IIC/README.md index e965291b55727b8fbe2b15a1d5be186a1e898833..991dfbe0c181b23b0781e9ad826b91b5e27cbb78 100644 --- a/machine/IIC/README.md +++ b/machine/IIC/README.md @@ -109,12 +109,13 @@ ​ 共有7个引脚有I^2^C功能。 -​ waffle nano拥有 2 个 I²C 总线接口,根据用户的配置,总线接口可以用作 I²C 主机或从机模式 +  waffle nano拥有 2 个 I²C 总线接口,根据用户的配置,总线接口可以用作 I²C 主机。其中组号为0的I²C已经被板载内置传感器所使用,无法进行跟多额外操作。 | I^2^C组号 | SDA | SCL | | --------- | ------------ | ------------- | -| I^2^C 0 | pin 9 | pin 10 | | I^2^C 1 | pin 0 | pin 1 | +| I^2^C 0 | pin 9 | pin 10 | +| I^2^C 0 | pin 13 | pin 14 | ## machine.I2C API详解 @@ -125,7 +126,8 @@ ```python >>>from machine import I2C >>>I2C. -read write scan +read write readfrom_mem scan +writeto_mem ``` ### 类 @@ -148,12 +150,11 @@ read write scan >>> from machine import I2C, Pin >>> i2c = I2C(0, sda=Pin(10), scl=Pin(9),freq=100000)#构建I2C0,时钟频率100000 >>> i2c = I2C(1, sda=Pin(0), scl=Pin(1),freq=100000)##用pin1引脚当I2C1的scl功能成功 ->>> i2c= I2C(1, scl=1, sda=0, freq=100000) ```   使用ID直接构造 -  I2C的id只能取`0,1`的,可以通过id来直接构造这两组接口。无法直接使用第1组I2C资源,默认I2C的SCL功能是由pin4引脚实现,会报`invalid scl pin(4)`错误。 +  I2C的id只能取`0`或`1`,可以通过id来直接构造这两组接口。无法直接使用第1组I2C资源,默认I2C的SCL功能是由pin4引脚实现,会报`invalid scl pin(4)`错误。   示例: @@ -232,33 +233,39 @@ True b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' ``` -## 示例 +##### 从寄存器中读取数据 -  将waffle nano的一些GPIO引脚构造成I2C总线,读写相应数据。 +  `i2c.readfrom_mem(addr,register,length)` -```python -from machine import I2C, Pin -i2c = I2C(0, sda=Pin(10), scl=Pin(9),freq=100000) -print(i2c.scan()) -print(i2c.read(118,10)) -i2c.write(104,b'\x00') -``` +  函数说明:从指定地址设备的指定寄存器开始往后连续读取各寄存器数据。 -  第一行导入`machine`模块的硬件类`Pin`和总线接口类`I2C` +  `addr`:从机设备IIC地址。`register`:操作的起始寄存器地址。`length`: 读入的字节数。 -  第二行构造`I2C`总线接口 -- 0—构造的是`I2C0` -- sda=Pin(10)—GPIO 10号引脚实现时钟功能 -- scl=Pin(9)—GPIO 9号引脚实现数据线功能 +##### 向寄存器写入数据 -  打印出扫描的设备地址列表 +  `i2c.writeto_mem(addr,register,data)` -  根据扫描的设备地址列表,在相应的地址设备读取10个字节的数据 +  函数说明:向指定地址设备的指定寄存器开始往后连续将数据写入各寄存器中。 -  根据扫描的设备地址列表,在相应的地址设备写入数据`\x00` +  `addr`:从机设备IIC地址。`register`:操作的起始寄存器地址,`data`: 需要写入(发送)的数据。 + +## 示例 +  将waffle nano的一些GPIO引脚构造成I2C总线,读写相应数据(需要连接相应的传感器)。 +```python +from machine import I2C, Pin +i2c = I2C(1, sda=Pin(0), scl=Pin(1),freq=100000) #构造IIC对象,将1号引脚设置为scl,将0号引脚设置为sda +print(i2c.scan()) #扫描IIC总线上的传感器,返回传感器ID + +i2c.write(74,b'\x03') #向74号ID的传感器发送0x03数据 + +print(i2c.read(74,10)) #从74号ID的传感器读取10个字节数据 + +i2c.writeto_mem(105,0x03,b'\x01\x02') #向105号ID的传感器的0x03寄存器(含)以及其往后的寄存器中依次填入数据`0x01`、`0x02,每个寄存器分到1个字节。 + +print(i2c.readfrom_mem(105,0x80,128)) #从105号ID的传感器的0x80寄存器开始(含)依次读取128个寄存器的数据,并返回。 +``` -