MPLAB® Harmony v3 Drivers on SAM E54 MCUs Using FreeRTOS™: Step 2

Last modified by Microchip on 2023/11/15 13:24

Configure I2C Driver and I2C Pins

Under the Available Components tab, expand Harmony > Drivers > I2C.

  • Select and double-click on I2C to add the Inter-Integrated Circuit (I2C) driver to the project.

i2c driver select

core_activation

freertos activation

i2c core freertos

Select FreeRTOS and view the Configuration Options on the right. Depending on the requirements of the application, the FreeRTOS default configuration can be changed using the Graphical User Interface (GUI). For this tutorial, you will use the default configuration.

freertos default

Information

Adding FreeRTOS™ maps all the Operating System Abstraction Layer (OSAL) Application Programming Interface (API) calls used by the MPLAB® Harmony drivers and system services to FreeRTOS APIs.

  • Associate I²C driver with I²C instance 0 (SERCOM3) peripheral by right-clicking on the red diamond.

i2c driver instance

i2c driver project graph plib linked

  • Click on Instance 0 under I²C Driver to view the Configuration Options. Change the Number of Clients to 2.

i2c driver client changes

Information
  • The above configuration allows the same instance of driver to be used by two different clients. The first application client interfaces with the Temperature Sensor thread and the second application client interfaces with the Electrically Erasable Programmable Read-Only Memory (EEPROM) thread.
  • The Number of Clients for each driver instance is automatically set to one. MPLAB Code Configurator (MCC) assumes a minimum of one client for each instance of the driver.

i2c driver multiclient

Information

If the application had two or more devices that were interfaced through different I2C peripherals, then the driver had to be configured to enable multiple instance support. Multiple instance support is enabled by clicking on the + sign on the I²C driver block. Every click on the + sign adds a new instance to the driver. Each instance can be configured separately.

Click on I²C to verify the driver is configured in Synchronous mode.

i2c sync

  • Select SERCOM3 Peripheral Library and notice the default configuration by expanding Hardware Settings.

sercom3 plib conf

Information
  • The SERCOM3 (as I2C) retains the default 100 kHz speed because the temperature sensor chip on the I/O1 Xplained Pro Extension Kit can operate at 100 kHz I2C speed.
  • The SERCOM3 (as I2C) retains the default 50-100 nanoseconds hold time for Serial Data (SDA) Hold Time because it aligns with the minimum (50 nanoseconds) start hold time stated in the specification of the temperature sensor chip (AT30TSE758).
  • The SERCOM3 (as I2C) retains the default 100 nanoseconds for I2C TrisE time because it aligns with the maximum (300 nanoseconds) input rise time stated in the specification of the temperature sensor chip (AT30TSE758).

Back to top


Open the Pin Configuration tabs by clicking Project Graph > Plugins > Pin Configuration.

open pin configuration

Back to top


Select the Pin Settings tab and sort the entries by Ports as shown:

sercom3 pins setup 1

Now, select the Pin Table tab and then scroll down to the SERCOM3 module as shown:

  • Enable I²C Clock (SCL) (SERCOM3_PAD1) on PA23 (Pin #93).
  • Enable I²C Data (SDA) (SERCOM3_PAD0) on PA22 (Pin #92).

sercom3 pins setup 2

This completes the configuration of the I2C driver. The application code will use the I²C driver APIs to read the temperature from the temperature sensor and store it in EEPROM. The application also retrieves the last five temperature values stored in the EEPROM.

Back to top


Configure Universal Synchronous Asynchronous Receiver Transmitter (USART) Driver and USART Pins

Under the Device Resources tab, expand Harmony > Drivers > SQI Flash > USART.

  • Double-click on USART to add the Universal Synchronous Asynchronous Receiver Transmitter (USART) driver to the project.

usart driver select

usart driver project graph

  • Associate USART Driver with USART instance 1 (SERCOM2) peripheral by right-clicking on the red diamond.

usart driver instance

usart driver project graph plib linked

  • Verify USART driver is configured to run in Synchronous mode by clicking on the USART block as shown:

usart sync

  • Click on Instance 0 under USART Driver to view the Configuration Options. Change the number of clients to the USART driver Instance from 0 to 3. The User Input Thread will use the USART driver to read the character input on the serial terminal. The Sensor and EEPROM threads will use the USART driver to print temperature values on the serial terminal.

usart driver instance changes

  • Select the SERCOM2 Peripheral Library in the Project Graph and configure it for USART protocol, including setting the Baud rate to 115,200 Hz.

usart plib conf

Back to top


Select the Pin Table tab and then scroll down to the SERCOM2 module as shown:

  • Enable USART_RX on PB24 (Pin #100).
  • Enable USART_TX on PB25 (pin #101).

usart pins setup

Information

The application will use the USART driver for printing messages on the serial terminal and receiving input from the user to retrieve the last five stored values from the EEPROM.

Back to top