4. Running The Demonstration Example

This section describes the steps required to prepare the Pro DevKit and other tools to successfully run the example code. A serial terminal, a 24LC256 EEPROM module, and optionally a logic analyzer are required for testing and verifying the code. In addition, two 2.4 kΩ resistors, a breadboard, and a few jumper wires are required to connect the I2C module to the Pro DevKit. If you are not familiar with the recommended process on how to clone a project or configure a serial terminal, read the Starting a Project tutorial.

There are two main methods to verify the correct behavior of the demonstrated code. The first method is to use a Serial Terminal and the second is to use a logic analyzer. Both cases are given below as a logic analyzer can be quite an expensive tool.

4.1. Verifying with a Serial Terminal

  1. Establish a connection between the target device and your PC through the USB1 port of the motherboard. This port is used both for powering and communicating to the DA1469x SoC. For this tutorial a Pro DevKit is used.

  2. Import and then make a copy of the freertos_retarget sample code found in the SDK of the DA1469x family of devices.


It is essential to import the folder named python_scripts to perform various operations (including building, debugging, and downloading)

  1. In the newly created project and under the project’s /config folder you should create the following three files: platform_devices.c, platform_devices.h and peripheral_setup.h.

'Creating new files'

Figure 5 Creating New Files

  1. Place the project’s /config folder in the compiler’s include path. To do this, select Project > Properties > C/C++ Build > Settings > Tool Settings > Cross ARM C Compiler > Includes and click on the Add… icon (1.6).

'Include New Folder 1'

Figure 6 Add the New Folder to the Include Search Path

In the Add directory path window, click Workspace… and specify the path of the folder. It will be displayed in the Directory section. Click OK and then click OK in the previously opened window (1.7).

'Include New Folder 2'

Figure 7 Input New Folder Name

  1. Make sure the compiler does not generate errors instead of warnings. To do this, select Project > Properties > C/C++ Build > Settings > Tool Settings > Warnings and deselect the corresponding tick box. Finally, click OK.

'Configure Compiler's Warnings'

Figure 8 Configure Compiler’s Warnings

  1. In the target application, add/modify all the required code blocks as illustrated in the Code Overview section.


It is possible for the defined macros not to be taken into consideration instantly. Hence, resulting in errors during compile time. If this is the case, the easiest way to proceed with is to: right-click on the application folder, select Index > Rebuild and then Index > Freshen All Files.

  1. Build the project either in Debug_QSPI or Release_QSPI mode and burn the generated image to the chip.

  2. Connect the EEPROM module to the Pro DevKit. Figure 9 illustrates the pin connections required to configure the 24LC256 module. For more information on the EEPROM module used, read the manufacturer datasheet.

'Configuring the 24LC256 EEPROM Slave Device'

Figure 9 Configuring the 24LC256 EEPROM Slave Device

Since all the Chip Select Bits are connected to ground (that is, logic ‘0’), the resulting device address is set to 0b1010000 (0x50). Thus, the master device (DA1469x chip) should reference the EEPROM using this address.

'Control Byte of 24LC256 EEPROM Chip'

Figure 10 Control Byte of 24LC256 EEPROM Chip


The Control Byte is the first byte sent by the I2C master controller (DA1469x) at each I2C operation. Given the current EEPROM configurations, possible values are: 0b10100001 (0xA1) when a read command is executed or 0b10100000 (0xA0) when a write command is executed.

  1. Press the RESET button on Pro DevKit to start the chip executing its firmware.

  2. Open a serial terminal (115200, 8-N-1) and press the K1 button on Pro DevKit. A debugging message is displayed on the console indicating both the status of the current I2C operation as well as the contents of the current read EEPROM page.

'Debugging Messages - Serial Console'

Figure 11 Debugging Messages Indicating the Progress and Status of an I2C Transaction

4.2. Verifying with a Logic Analyzer

This step is optional and is intended for those who are interested in using an external logic analyzer to capture the I2C signals during a transaction.

  1. With the whole system up and running, open the software that controls the logic analyzer. For this step a logic analyzer from Saleae Incorporation and its official software was used.

  2. Connect the logic analyzer to the Pro DevKit. To do this, you should:

    1. Connect a channel from the logic analyzer to P0_30 pin of Pro DevKit. This is the Clock signal (SCL).

    2. Connect a channel from the logic analyzer to P0_31 pin of Pro DevKit. This is a bidirectional line both for sending and receiving data (SDA).

  3. Press the RESET button on Pro DevKit to reset the device and capture the I2C write transaction. Figure 12 illustrates only the first two of the total written bytes.

'I2C Write Transaction as Captured using a Logic Analyzer.'

Figure 12 I2C Write Transaction Captured using a Logic Analyzer

  1. Press the K1 button on Pro DevKit and capture the I2C read transaction. Figure 13 illustrates only the first two of the total read bytes.

'I2C Read Transaction as Captured Using a Logic Analyzer.'

Figure 13 I2C Read Transaction Captured using a Logic Analyzer