I2C – Two-wire Serial Protocol
This class is designed for the two-wire serial protocol for communication between devices.
Constructor
machine.I2C
class machine.I2C(I2Cn, MODE)
Parameter:
-
I2Cn
- Integer type. I2C channel index number.
I2C0
:
0
- Channel 0
I2C1
:
1
- Channel 1
I2C2
:
2
- Channel 2
-
MODE
- Integer type. I2C working mode.
STANDARD_MODE
:
0
- Standard mode
FAST_MODE
:
1
- Fast mode
class machine.I2C(I2Cn, MODE)
Parameter:
-
I2Cn
- Integer type. I2C channel index number.
I2C0
:
0
- Channel 0
I2C1
:
1
- Channel 1
I2C2
:
2
- Channel 2
-
MODE
- Integer type. I2C working mode.
STANDARD_MODE
:
0
- Standard mode
FAST_MODE
:
1
- Fast mode
-
Note:
1.Inside the module, Pin57 is the same as Pin11, and Pin56 is the same as Pin12.
class machine.I2C(I2Cn, MODE)
Parameter:
-
I2Cn
- Integer type. I2C channel index number.
I2C0
:
0
- Channel 0
I2C1
:
1
- Channel 1
I2C2
:
2
- Channel 2
-
MODE
- Integer type. I2C working mode.
STANDARD_MODE
:
0
- Standard mode
FAST_MODE
:
1
- Fast mode
-
Note:
1.Inside the module, Pin67 is the same as Pin57, and Pin66 is the same as Pin58.
2.The 57th and 58th pins of EC800ECN_LE&LQ&CG are not available.
class machine.I2C(I2Cn, MODE)
Parameter:
-
I2Cn
- Integer type. I2C channel index number.
I2C0
:
0
- Channel 0
I2C1
:
1
- Channel 1
I2C2
:
2
- Channel 2
-
MODE
- Integer type. I2C working mode.
STANDARD_MODE
:
0
- Standard mode
FAST_MODE
:
1
- Fast mode
ENHANCED_FAST_MODE
:
2
- Enhanced Fast mode
class machine.I2C(I2Cn, MODE, [group])
Parameter:
-
I2Cn
- Integer type. I2C channel index number.
I2C0
:
0
- Channel 0
I2C1
:
1
- Channel 1
I2C2
:
2
- Channel 2
-
MODE
- Integer type. I2C working mode.
STANDARD_MODE
:
0
- Standard mode
FAST_MODE
:
1
- Fast mode
-
[group]
- Select to use I2C in different pins. Currently, only FCM362K supports Iics. The default value is 0
Example:
>>> from machine import I2C
>>># Creates an I2C object
>>> i2c_obj = I2C(I2C.I2C0, I2C.STANDARD_MODE,0) # Returns an I2C object
I2C Pin Correspondences:
I2C
|
SCL
|
SDA
|
I2C0
|
pin11
|
pin12
|
I2C1
|
pin57
|
pin56
|
I2C
|
SCL
|
SDA
|
I2C0
|
pin41
|
pin42
|
I2C1
|
pin141
|
引142
|
I2C
|
SCL
|
SDA
|
I2C0
|
pin41
|
pin42
|
I2C
|
SCL
|
SDA
|
I2C0
|
pin41
|
pin42
|
I2C
|
SCL
|
SDA
|
I2C0
|
pin23
|
pin22
|
I2C1
|
pin20
|
pin21
|
I2C
|
SCL
|
SDA
|
I2C0
|
pin67
|
pin66
|
I2C
|
SCL
|
SDA
|
I2C0
|
pin18
|
pin19
|
I2C1
|
pin40
|
pin41
|
I2C2
|
pin26
|
pin25
|
I2C
|
SCL
|
SDA
|
I2C0
|
pin9
|
pin64
|
I2C1
|
pin57
|
pin56
|
I2C2
|
pin67
|
pin65
|
I2C
|
SCL
|
SDA
|
I2C0
|
pin103
|
pin114
|
I2C1
|
pin40
|
pin41
|
I2C
|
SCL
|
SDA
|
I2C0
|
pin67
|
pin66
|
I2C1
|
pin68
|
pin69
|
I2C
|
SCL
|
SDA
|
I2C0
|
pin67
|
pin66
|
I2C1
|
pin68
|
pin69
|
I2C
|
SCL
|
SDA
|
I2C1
|
pin40
|
pin41
|
I2C
|
SCL
|
SDA
|
I2C1
|
pin57(11)
|
pin56(12)
|
I2C
|
SCL
|
SDA
|
I2C0
|
pin67(57)
|
pin66(58)
|
I2C
|
SCL
|
SDA
|
I2C0
|
pin57
|
pin56
|
I2C1
|
pin11
|
pin12
|
I2C
|
SCL
|
SDA
|
I2C0
|
pin67
|
pin66
|
I2C1
|
pin57
|
pin58
|
I2C2
|
pin68
|
pin69
|
I2C
|
SCL
|
SDA
|
I2C1
|
pin40
|
pin41
|
I2C
|
SCL
|
SDA
|
I2C1
|
pin57
|
pin56
|
I2C3
|
pin11
|
pin12
|
I2C
|
SCL
|
SDA
|
I2C0
|
pin67
|
pin66
|
I2C2
|
pin68
|
pin69
|
I2C
|
SCL
|
SDA
|
I2C0
|
pin67
|
pin66
|
I2C2
|
pin68
|
pin69
|
I2C
|
SCL
|
SDA
|
I2C0
|
pin29
|
pin23
|
I2C
|
SCL
|
SDA
|
I2C0
|
pin30
|
pin29
|
I2C
|
SCL
|
SDA
|
I2C0
|
pin12
|
pin26
|
I2C1
|
pin43
|
pin44
|
I2C
|
SCL
|
SDA
|
I2C0
|
pin12
|
pin26
|
I2C2
|
pin43
|
pin44
|
I2C
|
SCL
|
SDA
|
I2C1
|
pin40
|
pin41
|
I2C
|
SCL
|
SDA
|
I2C0
|
pin67
|
pin66
|
I2C1
|
pin57
|
pin58
|
Methods
I2C.read
I2C.read(slaveaddress, addr,addr_len, r_data, datalen, delay)
This method reads data to I2C bus.
Parameter:
-
slaveaddress
- Integer type. I2C device address.
-
addr
- Bytearray type. I2C register address.
-
addr_len
- Integer type. Register address length.
-
r_data
- Bytearray type. Byte array for receiving data.
-
datalen
- Integer type. Length of byte array.
-
delay
- Integer type. Delay. Data conversion buffer time (unit: ms).
Return Value:
0
- Successful execution
-1
- Failed execution
I2C.write
I2C.write(slaveaddress, addr, addr_len, data, datalen)
This method writes data to I2C bus.
Parameter:
-
slaveaddress
- Integer type. I2C device address.
-
addr
- Bytearray type. I2C register address.
-
addr_len
- Integer type. Register address length.
-
data
- Bytearray type. Data to be written.
-
datalen
- Integer type. Length of data to be written.
Return Value:
0
- Successful execution
-1
- Failed execution
Example:
Please connect the device.
import log
from machine import I2C
import utime
'''
The following two global variables are necessary. You can modify the values of these two global variables based on project requirement.
'''
PROJECT_NAME = "QuecPython_I2C_example"
PROJECT_VERSION = "1.0.0"
'''
I2C usage example
'''
# Sets log output level
log.basicConfig(level=log.INFO)
i2c_log = log.getLogger("I2C")
if __name__ == '__main__':
I2C_SLAVE_ADDR = 0x1B # I2C device address
WHO_AM_I = bytearray([0x02, 0]) # I2C register address. It is passed in as a buff. Take the first value and calculate the length of a value
data = bytearray([0x12, 0]) # Inputs the corresponding command
i2c_obj = I2C(I2C.I2C0, I2C.STANDARD_MODE) # Returns an I2C object
i2c_obj.write(I2C_SLAVE_ADDR, WHO_AM_I, 1, data, 2) # Writes data
r_data = bytearray(2) # Creates a byte array with the length of 2 bytes for receiving
i2c_obj.read(I2C_SLAVE_ADDR, WHO_AM_I, 1, r_data, 2, 0) # read
i2c_log.info(r_data[0])
i2c_log.info(r_data[1])
Constants
Constant
|
Description
|
I2C.I2C0
|
I2C passage index number: 0
|
I2C.I2C1
|
I2C passage index number: 1
|
I2C.STANDARD_MODE
|
Standard mode
|
I2C.FAST_MODE
|
Fast mode
|
Constant
|
Description
|
I2C.I2C1
|
I2C passage index number: 1
|
I2C.I2C3
|
I2C passage index number: 3
|
I2C.STANDARD_MODE
|
Standard mode
|
I2C.FAST_MODE
|
Fast mode
|
Constant
|
Description
|
I2C.I2C1
|
I2C passage index number: 1
|
I2C.STANDARD_MODE
|
Standard mode
|
I2C.FAST_MODE
|
Fast mode
|
Constant
|
Description
|
I2C.I2C1
|
I2C passage index number: 1
|
I2C.STANDARD_MODE
|
Standard mode
|
I2C.FAST_MODE
|
Fast mode
|
Constant
|
Description
|
I2C.I2C0
|
I2C passage index number: 0
|
I2C.I2C1
|
I2C passage index number: 1
|
I2C.STANDARD_MODE
|
Standard mode
|
I2C.FAST_MODE
|
Fast mode
|
Constant
|
Description
|
I2C.I2C0
|
I2C passage index number: 0
|
I2C.I2C1
|
I2C passage index number: 1
|
I2C.STANDARD_MODE
|
Standard mode
|
I2C.FAST_MODE
|
Fast mode
|
Constant
|
Description
|
I2C.I2C0
|
I2C passage index number: 0
|
I2C.I2C1
|
I2C passage index number: 1
|
I2C.STANDARD_MODE
|
Standard mode
|
I2C.FAST_MODE
|
Fast mode
|
Constant
|
Description
|
I2C.I2C0
|
I2C passage index number: 0
|
I2C.I2C1
|
I2C passage index number: 1
|
I2C.STANDARD_MODE
|
Standard mode
|
I2C.FAST_MODE
|
Fast mode
|
Constant
|
Description
|
I2C.I2C0
|
I2C passage index number: 0
|
I2C.I2C1
|
I2C passage index number: 1
|
I2C.STANDARD_MODE
|
Standard mode
|
I2C.FAST_MODE
|
Fast mode
|
Constant
|
Description
|
I2C.I2C0
|
I2C passage index number: 0
|
I2C.I2C1
|
I2C passage index number: 1
|
I2C.STANDARD_MODE
|
Standard mode
|
I2C.FAST_MODE
|
Fast mode
|
Constant
|
Description
|
I2C.I2C0
|
I2C passage index number: 0
|
I2C.I2C1
|
I2C passage index number: 1
|
I2C.STANDARD_MODE
|
Standard mode
|
I2C.FAST_MODE
|
Fast mode
|
Constant
|
Description
|
I2C.I2C0
|
I2C passage index number: 0
|
I2C.I2C1
|
I2C passage index number: 1
|
I2C.STANDARD_MODE
|
Standard mode
|
I2C.FAST_MODE
|
Fast mode
|
Constant
|
Description
|
I2C.I2C0
|
I2C passage index number: 0
|
I2C.I2C1
|
I2C passage index number: 1
|
I2C.STANDARD_MODE
|
Standard mode
|
I2C.FAST_MODE
|
Fast mode
|
Constant
|
Description
|
I2C.I2C0
|
I2C passage index number: 0
|
I2C.I2C1
|
I2C passage index number: 1
|
I2C.I2C2
|
I2C passage index number: 2
|
I2C.STANDARD_MODE
|
Standard mode
|
I2C.FAST_MODE
|
Fast mode
|
Constant
|
Description
|
I2C.I2C0
|
I2C passage index number: 0
|
I2C.I2C1
|
I2C passage index number: 1
|
I2C.I2C2
|
I2C passage index number: 2
|
I2C.STANDARD_MODE
|
Standard mode
|
I2C.FAST_MODE
|
Fast mode
|
Constant
|
Description
|
I2C.I2C0
|
I2C passage index number: 0
|
I2C.I2C1
|
I2C passage index number: 1
|
I2C.I2C2
|
I2C passage index number: 2
|
I2C.STANDARD_MODE
|
Standard mode
|
I2C.FAST_MODE
|
Fast mode
|
Constant
|
Description
|
I2C.I2C0
|
I2C passage index number: 0
|
I2C.I2C1
|
I2C passage index number: 1
|
I2C.I2C2
|
I2C passage index number: 2
|
I2C.STANDARD_MODE
|
Standard mode
|
I2C.FAST_MODE
|
Fast mode
|
Constant
|
Description
|
I2C.I2C0
|
I2C passage index number: 0
|
I2C.STANDARD_MODE
|
Standard mode
|
I2C.FAST_MODE
|
Fast mode
|
Constant
|
Description
|
I2C.I2C0
|
I2C passage index number: 0
|
I2C.STANDARD_MODE
|
Standard mode
|
I2C.FAST_MODE
|
Fast mode
|
Constant
|
Description
|
I2C.I2C0
|
I2C passage index number: 0
|
I2C.STANDARD_MODE
|
Standard mode
|
I2C.FAST_MODE
|
Fast mode
|
Constant
|
Description
|
I2C.I2C0
|
I2C passage index number: 0
|
I2C.STANDARD_MODE
|
Standard mode
|
I2C.FAST_MODE
|
Fast mode
|
Constant
|
Description
|
I2C.I2C0
|
I2C passage index number: 0
|
I2C.STANDARD_MODE
|
Standard mode
|
I2C.FAST_MODE
|
Fast mode
|
I2C.ENHANCED_FAST_MODE
|
Enhanced fast mode
|