| .. |
| Copyright 2019,2020 NXP |
| |
| |
| .. highlight:: bat |
| |
| .. _ex-i2cMaster: |
| |
| ======================================================================= |
| I2C Master Example |
| ======================================================================= |
| |
| This page is regarding the documentation on I2CM, for more information on |
| I2CM Transaction, See :numref:`se05x-stack-i2cm` :ref:`se05x-stack-i2cm` |
| |
| Prerequisites |
| ======================================================================= |
| |
| - Bring Up Hardware. (Refer :ref:`dev-platforms`) |
| |
| - Connection to be done for I2C Master example. |
| |
| .. image:: i2cm-accelerometer-k64f-wiring.png |
| |
| |
| Here is a photograph of above wiring diagram. |
| |
| .. image:: i2cm-accelerometer-k64f-photo.jpg |
| |
| |
| .. note:: - We are using 2nd freedom K64F board only for connecting Accelerometer device to I2CM. |
| - Short Jumper J9 & J10 of se050ARD board. |
| |
| Disable K64F on board 2 |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| |
| .. warning:: If the K64F of the 2nd board doing some operations on I2C Pins, this demo would not work. |
| |
| Follow below steps to make this demo work. |
| |
| - Flash :file:`frdmk64f_nop_wfi.bin` binary located at :file:`demos/se05x/se05x_I2cMaster` directory to K64F board. |
| - This binary will put K64F in unoperation state and we will have easy access to Accelerometer through I2C pins. |
| |
| Below is the c code :: |
| |
| int main(void) |
| { |
| /* Init board hardware. */ |
| BOARD_InitPins(); |
| BOARD_BootClockRUN(); |
| BOARD_InitDebugConsole(); |
| |
| __disable_irq(); |
| while (1) |
| { |
| __disable_irq(); |
| __WFI(); |
| } |
| } |
| |
| |
| About the Example |
| ======================================================================= |
| |
| This example reads Accelerometer data via the I2C master interface. |
| |
| The Accelerometer on other K64F is used as an I2C Slave. |
| |
| .. image:: I2C-Master-operation.png |
| |
| It uses the following APIs and data types: |
| |
| - :cpp:func:`Se05x_i2c_master_txn()` |
| - :cpp:func:`Se05x_i2c_master_attst_txn()` |
| - :cpp:enumerator:`kSE05x_I2CM_Configure` from :cpp:type:`SE05x_I2CM_TLV_type_t` |
| - :cpp:enumerator:`kSE05x_I2CM_Write` from :cpp:type:`SE05x_I2CM_TLV_type_t` |
| - :cpp:enumerator:`kSE05x_I2CM_Read` from :cpp:type:`SE05x_I2CM_TLV_type_t` |
| - :cpp:enumerator:`kSE05x_I2CM_Baud_Rate_400Khz` from :cpp:type:`SE05x_I2CM_Baud_Rate_t` |
| |
| |
| Running the Demo |
| ======================================================================= |
| |
| #) Import project :file:`cmake_project_frdmk64f` from :file:`simw-top/projects` directory. |
| |
| #) Mention :samp:`BUILD_TARGET` as :samp:`se05x_I2cMaster` or :file:`se05x_I2cMasterWithAttestation` in :file:`Debug/Makefile`. |
| |
| #) Build the project and flash binary inside :file:`FRDMK64F_SE050ARD` board. |
| |
| #) Either press the reset button on your board or launch the debugger in your IDE to begin running the demo. |
| |
| #) Rotate second K64F in any direction. |
| |
| If everything is setup correctly the output would be as follows:: |
| |
| App:INFO :I2CM example to read Accelerometer value |
| App:INFO :x = 113 , y = -73 , z = 2118 |
| App:INFO :x = 109 , y = -67 , z = 2103 |
| App:INFO :x = 108 , y = -68 , z = 2120 |
| App:INFO :x = 117 , y = -69 , z = 2109 |
| App:INFO :x = 117 , y = -71 , z = 2105 |
| App:INFO :x = 111 , y = -71 , z = 2108 |
| App:INFO :x = 115 , y = -72 , z = 2104 |
| App:INFO :x = 117 , y = -69 , z = 2122 |
| App:INFO :x = 115 , y = -73 , z = 2120 |
| App:INFO :x = 115 , y = -74 , z = 2114 |
| App:INFO :I2CM test completed !!!... |