Overview
========
The i2c_interrupt example shows how to use I2C driver in interrupt way:
In this example , one i2c instance used as I2C master and another i2c instance used as I2C slave .
1. I2C master send data to I2C slave in interrupt . (I2C Slave using interrupt to receive the data)
2. I2C master read data from I2C slave in interrupt . (I2C Slave using interrupt to send the data)
Toolchain supported
===================
- IAR embedded Workbench 7.50.1
- Keil MDK 5.17
- GCC ARM Embedded 2015-4.9-q3
- Kinetis Development Studio IDE 3.0.0
- Atollic TrueSTUDIO 5.4.0
Hardware requirements
=====================
- Mini/Micro USB cable
- FRDM-KL22F board
- Personal Computer
Board settings
==============
The example is configured 2 instances I2C , one as I2C master , another as I2C slave.
The connection should be set as following:
- J24-12 , J1-13 connected
- J24-10 , J2-07 connected
Prepare the Demo
================
1. Connect a mini USB cable between the PC host and the OpenSDA USB port on the board.
2. Open a serial terminal on PC for OpenSDA serial device with these settings:
- 115200 baud rate
- 8 data bits
- No parity
- One stop bit
- No flow control
3. Download the program to the target board.
4. Either press the reset button on your board or launch the debugger in your IDE to begin running the demo.
Running the demo
================
When the example runs successfully, you can see the similar information from the terminal as below.
I2C example -- MasterInterrupt_SlaveInterrupt.
Master will send data :
0x 0 0x 1 0x 2 0x 3 0x 4 0x 5 0x 6 0x 7
0x 8 0x 9 0x a 0x b 0x c 0x d 0x e 0x f
0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17
0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f
Slave received data :
0x 0 0x 1 0x 2 0x 3 0x 4 0x 5 0x 6 0x 7
0x 8 0x 9 0x a 0x b 0x c 0x d 0x e 0x f
0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17
0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f
This time , slave will send data: :
0xff 0xfe 0xfd 0xfc 0xfb 0xfa 0xf9 0xf8
0xf7 0xf6 0xf5 0xf4 0xf3 0xf2 0xf1 0xf0
0xef 0xee 0xed 0xec 0xeb 0xea 0xe9 0xe8
0xe7 0xe6 0xe5 0xe4 0xe3 0xe2 0xe1 0xe0
Master received data :
0xff 0xfe 0xfd 0xfc 0xfb 0xfa 0xf9 0xf8
0xf7 0xf6 0xf5 0xf4 0xf3 0xf2 0xf1 0xf0
0xef 0xee 0xed 0xec 0xeb 0xea 0xe9 0xe8
0xe7 0xe6 0xe5 0xe4 0xe3 0xe2 0xe1 0xe0
End of I2C example .
Customization options
=====================