Skip to content

Commit 5f68d22

Browse files
Bluetooth Applications v2.0.1
1 parent 06d2cfd commit 5f68d22

File tree

11 files changed

+360
-22
lines changed

11 files changed

+360
-22
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
# Silicon Labs Bluetooth Applications #
1515

16-
[![Version Badge](https://img.shields.io/badge/-v2.0.0-green)](https://github.com/SiliconLabs/bluetooth_applications/releases)
16+
[![Version Badge](https://img.shields.io/badge/-v2.0.1-green)](https://github.com/SiliconLabs/bluetooth_applications/releases)
1717
[![GSDK Badge](https://img.shields.io/badge/GSDK-v4.4.0-green)](https://github.com/SiliconLabs/gecko_sdk/releases)
1818
[![TPHD Version Badge](https://img.shields.io/badge/TPHD-v2.0.0+-green)](https://github.com/SiliconLabs/third_party_hw_drivers_extension/releases)
1919
![License badge](https://img.shields.io/badge/License-Zlib-green)

bluetooth_esl_tag_mikroe_eink154_e_paper_display/README.md

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@
1111
![RAM badge](https://img.shields.io/badge/dynamic/json?url=https://raw.githubusercontent.com/SiliconLabs/application_examples_ci/master/bluetooth_applications/bluetooth_esl_tag_mikroe_eink154_e_paper_display_common.json&label=RAM&query=ram&color=blue)
1212
## Summary ##
1313

14-
This project aims to show how the Bluetooth LE Electronic Shelf Label (ESL) works with the E-Paper display 1,54" 200x200 dots from Mikroe using a hardware driver via APIs of the GSDK. The ESL tag displays the image transfered by the ESL Access Point using the E-Paper 1,54" display. The application is capable of storing two images in two different image slots at the same time. By default the images are stored in the NVM memory.
14+
This project aims to show how the Bluetooth LE Electronic Shelf Label (ESL) works with the E-Paper display 1,54" 200x200 dots from Mikroe using a hardware driver via APIs of the GSDK. The ESL tag displays the image transfered by the ESL Access Point using the E-Paper 1,54" display. The application is capable of storing two images in two different image slots at the same time. By default, the images are stored in the NVM memory.
1515

16-
This project is based on the [**Bluetooth - SoC ESL Tag**](https://github.com/SiliconLabs/gecko_sdk/tree/gsdk_4.3/app/bluetooth/example/bt_soc_esl_tag) application that can be found with documentation on Github and also in Simplicity Studio 5. Instead of the LCD display that is on the Wireless Starter Kit Mainboard, this project uses an E-Paper display 1,54" 200x200 dots from Mikroe to display the image. The size of the transfered images should be 200x200 pixels.
16+
This project is based on the [**Bluetooth - SoC ESL Tag**](https://github.com/SiliconLabs/gecko_sdk/tree/gsdk_4.3/app/bluetooth/example/bt_soc_esl_tag) application that can be found with documentation on GitHub and also in Simplicity Studio 5. Instead of the LCD that is on the Wireless Starter Kit Mainboard, this project uses an E-Paper display 1,54" 200x200 dots from Mikroe to display the image. The size of the transferred images should be 200x200 pixels.
1717

1818
The Bluetooth LE Electronic Shelf Label documentation and the setup for the ESL network can be found in the [**AN1419: Bluetooth® LE Electronic Shelf Label**](https://www.silabs.com/documents/public/application-notes/an1419-ble-electronic-shelf-label.pdf) application note. The usage of the [**ESL Access Point**](https://github.com/SiliconLabs/gecko_sdk/tree/gsdk_4.3/app/bluetooth/example_host/bt_host_esl_ap/readme) is also documented at the link.
1919

20-
E-Paper display is based on Active Matrix Electrophoretic Display (AMEPD) technology and has an integrated pixel driver, which uses the SPI interface to communicate with the host MCU. E-Paper display has resolution of 200(V) X 200(H) pixels and an active display area of 27.6 mm X 27.6 mm. The size of its square shaped pixels is 0.138 mm x 0.138 mm. The screen displays a clear and crisp graphics, and has an ultra-wide viewing range. Another key feature of the E-Ink technology is the extremely low power consumption, even when the display actively refresh its content.
20+
E-Paper display is based on Active Matrix Electrophoretic Display (AMEPD) technology and has an integrated pixel driver, which uses the SPI interface to communicate with the host MCU. E-Paper display has a resolution of 200(V) X 200(H) pixels and an active display area of 27.6 mm X 27.6 mm. The size of its square-shaped pixels is 0.138 mm x 0.138 mm. The screen displays clear and crisp graphics and has an ultra-wide viewing range. Another key feature of the E-Ink technology is the extremely low power consumption, even when the display actively refreshes its content.
2121

2222
## Gecko SDK version ##
2323

@@ -34,13 +34,23 @@ E-Paper display is based on Active Matrix Electrophoretic Display (AMEPD) techno
3434

3535
- [E-Paper display 1,54" 200x200 dots](https://www.mikroe.com/e-paper-display-154-200x200-dots)
3636

37+
**NOTE:**
38+
Tested boards for working with this example:
39+
40+
| Board ID | Description |
41+
| ---------------------- | ------ |
42+
| BRD4182A | [EFR32xG22 Radio Board](https://www.silabs.com/development-tools/wireless/slwrb4182a-efr32xg22-wireless-gecko-radio-board)|
43+
| BRD2703A | [EFR32xG24 Explorer Kit - XG24-EK2703A](https://www.silabs.com/development-tools/wireless/efr32xg24-explorer-kit?tab=overview) |
44+
| BRD4108A | [BG22 Bluetooth SoC Explorer Kit - BG22-EK4108A](https://www.silabs.com/development-tools/wireless/bluetooth/bg22-explorer-kit?tab=overview) |
45+
| BRD4314A | [BGM220 Bluetooth Module Explorer Kit - BGM220-EK4314A](https://www.silabs.com/development-tools/wireless/bluetooth/bgm220-explorer-kit?tab=overview) |
46+
3747
## Hardware Connection ##
3848

3949
eINK display needs an external adapter to interface with the Wireless Starter Kit Mainboard. The hardware connection is shown in the image below:
4050

4151
![board](image/hardware_connection.png)
4252

43-
The eINK Click needs to be connected to the Wireless Starter Kit Mainboard via the EXP Header pins. In the project the pins are set as in the table below:
53+
The eINK Click needs to be connected to the Wireless Starter Kit Mainboard via the EXP Header pins. In the project, the pins are set as in the table below:
4454

4555
| eClick pin (Name in SS5 configurator) | xG22 (4182a) pin | Exp Header |
4656
|----------|----------|----------|
@@ -54,17 +64,19 @@ The eINK Click needs to be connected to the Wireless Starter Kit Mainboard via t
5464
| 3.3V | 3.3V | 20 |
5565
| - (Rx) | - | - |
5666

57-
Different pin combination can also be set by changing the pin configuration in the Mikroe driver componets (E-Paper display 1.54" 200x200 dots (Mikroe) and mikroe SPIDRV).
67+
Different pin combinations can also be set by changing the pin configuration in the Mikroe driver components (E-Paper display 1.54" 200x200 dots (Mikroe) and mikroe SPIDRV).
68+
69+
This example application works with the listed explorer kits as well. The eINK Click board can be easily attached to the explorer kits via the mikrobus connector. The connected eINK Click board is shown in the image below.
70+
71+
![board](image/hardware_connection_2.png)
5872

5973
## Setup ##
6074

6175
You can either create a project based on an example project or start with the Bluetooth - SoC ESL Tag project.
6276

6377
### Create a project based on an example project ###
6478

65-
1. From the Launcher Home, add the BRD4182A to My Products, or connect a BRD4182A to the PC, click on it, and click on the **EXAMPLE PROJECTS & DEMOS** tab. Find the example project with filter **Mikroe**.
66-
67-
2. Click **Create** button on the **Bluetooth - ESL Tag with E-Paper display 154inch 200x200 dots from Mikroe** example. Example project creation dialog pops up -> click Create and Finish and Project should be generated.
79+
1. From the Launcher Home, add the BRD4182A to My Products, or connect a BRD4182A to the PC, click on it, and click on the **EXAMPLE PROJECTS & DEMOS** tab. Find the example project with filter **Mikroe**. Click the **Create** button on the **Bluetooth - ESL Tag with E-Paper display 154inch 200x200 dots from Mikroe** example. Example project creation dialog pops up -> click Create and Finish and Project should be generated.
6880

6981
![Create_example](image/project.png)
7082

@@ -103,7 +115,7 @@ The required components are detailed in this section.
103115

104116
**E-Paper display 1.54" 200x200 dots (Mikroe)**:
105117

106-
This component contains the driver for the Mikroe eINK Click adaper board with the E-Paper display 1.54" 200x200 dots. The E-Paper display 1.54" 200x200 dots driver in this project is extended with APIs that are specially created for BLE ESL and has the required non-blocking structure. The pins can be configured on the configuration panel. Third-party drivers extension must be enabled for the project to install the "E-Paper Display 1.54" 200x200 dots (Mikroe)" component.
118+
This component contains the driver for the Mikroe eINK Click adapter board with the E-Paper display 1.54" 200x200 dots. The E-Paper display 1.54" 200x200 dots driver in this project is extended with APIs that are specially created for BLE ESL and have the required non-blocking structure. The pins can be configured on the configuration panel. Third-party drivers extension must be enabled for the project to install the "E-Paper Display 1.54" 200x200 dots (Mikroe)" component.
107119

108120
![Import project](image/driver.png)
109121

@@ -120,7 +132,7 @@ Configuration:
120132

121133
**ESL Tag NVM Image**:
122134

123-
The number of the Image objects can be configured in this component. By default, the transfered images are stored in the NVM memory. It is possible to store the image in the RAM. To have that, uninstall the latter component and install the **ESL Tag RAM Image** component. Note that the Image objects and the Image pool size variables have to be set properly. To save memory space in the RAM, it is recommended to use the **ESL Tag NVM Image** component.
135+
The number of the Image objects can be configured in this component. By default, the transferred images are stored in the NVM memory. It is possible to store the image in the RAM. To to that, uninstall the latter component and install the **ESL Tag RAM Image** component. Note that the Image objects and the Image pool size variables have to be set properly. To save memory space in the RAM, it is recommended to use the **ESL Tag NVM Image** component.
124136

125137
![Import project](image/nvm_image.png)
126138

@@ -132,7 +144,7 @@ To store 2 images, the NVM3 Default Instance Size should be set to 40960.
132144

133145
**ESL Tag User Defined Display Driver**
134146

135-
This component provides skeleton code for a user defined display driver - to be filled in with actual low level driver code for driving any arbitrary ESL Tag display type.
147+
This component provides skeleton code for a user-defined display driver - to be filled in with actual low-level driver code for driving any arbitrary ESL Tag display type.
136148

137149
![Import project](image/user_display.png)
138150

@@ -147,13 +159,13 @@ Note that for displaying all of the components, the following filter should be c
147159

148160
After downloading and importing the project, the application has to be built in Simplicity Studio 5 and flashed to the target BRD4182A radio board. Do not forget to build and flash the **Bootloader - SoC Bluetooth Apploader OTA DFU** Bootloader as well.
149161

150-
By following the process presented in the readme file of the [**ESL Access Point**](https://github.com/SiliconLabs/gecko_sdk/blob/gsdk_4.4/app/bluetooth/example_host/bt_host_esl_ap/readme/readme.md), the uploaded images can be displayed on the E-Paper display. There are two different image slots (0 and 1) on the ESL Tag meaning that two images can be uploaded and stored on the tag. Both of the upladed images can be displayed on the E-Paper Display separately.
162+
By following the process presented in the readme file of the [**ESL Access Point**](https://github.com/SiliconLabs/gecko_sdk/blob/gsdk_4.4/app/bluetooth/example_host/bt_host_esl_ap/readme/readme.md), the uploaded images can be displayed on the E-Paper display. There are two different image slots (0 and 1) on the ESL Tag meaning that two images can be uploaded and stored on the tag. Both of the uploaded images can be displayed on the E-Paper Display separately.
151163

152164
### Testing ###
153165

154-
The [**ESL Access Point**](https://github.com/SiliconLabs/gecko_sdk/blob/gsdk_4.4/app/bluetooth/example_host/bt_host_esl_ap/readme/readme.md) provides many different use-cases. For instance, the Windows PowerShell can be used to contoroll the ESL Access Point.
166+
The [**ESL Access Point**](https://github.com/SiliconLabs/gecko_sdk/blob/gsdk_4.4/app/bluetooth/example_host/bt_host_esl_ap/readme/readme.md) provides many different use cases. For instance, Windows PowerShell can be used to control the ESL Access Point.
155167

156-
One of the possible use-case is presented below with the following command flow:
168+
One of the possible uses is presented below with the following command flow:
157169

158170
python .\app.py COM*port* --cmd → connect *BLE address* → config --full → image_update 0 image/pizza.png → sync start → disconnect → display_image *esl_id* *image_index* *display_index*
159171

bluetooth_esl_tag_mikroe_eink154_e_paper_display/SimplicityStudio/bluetooth_esl_tag_mikroe_eink154_e_paper_display.slcp

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ component:
2424
- id: sl_memory
2525
- id: simple_led
2626
instance:
27-
- led1
27+
- led0
2828
- id: esl_tag_core
2929
- id: esl_tag_led
3030
- id: esl_tag_display
@@ -62,8 +62,26 @@ config_file:
6262
component: spidrv
6363
file_id: spidrv_config
6464
instance: mikroe
65-
path: ../config/sl_spidrv_mikroe_config.h
66-
65+
path: ../config/brd4182a/sl_spidrv_mikroe_config.h
66+
condition: [brd4182a]
67+
- override:
68+
component: spidrv
69+
file_id: spidrv_config
70+
instance: mikroe
71+
path: ../config/brd2703a/sl_spidrv_mikroe_config.h
72+
condition: [brd2703a]
73+
- override:
74+
component: spidrv
75+
file_id: spidrv_config
76+
instance: mikroe
77+
path: ../config/brd4108a/sl_spidrv_mikroe_config.h
78+
condition: [brd4108a]
79+
- override:
80+
component: spidrv
81+
file_id: spidrv_config
82+
instance: mikroe
83+
path: ../config/brd4314a/sl_spidrv_mikroe_config.h
84+
condition: [brd4314a]
6785
readme:
6886
- path: ../README.md
6987

@@ -78,6 +96,8 @@ other_file:
7896
directory: image
7997
- path: ../image/hardware_connection.png
8098
directory: image
99+
- path: ../image/hardware_connection_2.png
100+
directory: image
81101
- path: ../image/nvm_image.png
82102
directory: image
83103
- path: ../image/nvm_size.png
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
/***************************************************************************//**
2+
* @file
3+
* @brief SPIDRV Config
4+
*******************************************************************************
5+
* # License
6+
* <b>Copyright 2019 Silicon Laboratories Inc. www.silabs.com</b>
7+
*******************************************************************************
8+
*
9+
* SPDX-License-Identifier: Zlib
10+
*
11+
* The licensor of this software is Silicon Laboratories Inc.
12+
*
13+
* This software is provided 'as-is', without any express or implied
14+
* warranty. In no event will the authors be held liable for any damages
15+
* arising from the use of this software.
16+
*
17+
* Permission is granted to anyone to use this software for any purpose,
18+
* including commercial applications, and to alter it and redistribute it
19+
* freely, subject to the following restrictions:
20+
*
21+
* 1. The origin of this software must not be misrepresented; you must not
22+
* claim that you wrote the original software. If you use this software
23+
* in a product, an acknowledgment in the product documentation would be
24+
* appreciated but is not required.
25+
* 2. Altered source versions must be plainly marked as such, and must not be
26+
* misrepresented as being the original software.
27+
* 3. This notice may not be removed or altered from any source distribution.
28+
*
29+
******************************************************************************/
30+
31+
#ifndef SL_SPIDRV_MIKROE_CONFIG_H
32+
#define SL_SPIDRV_MIKROE_CONFIG_H
33+
34+
#include "spidrv.h"
35+
36+
// <<< Use Configuration Wizard in Context Menu >>>
37+
// <h> SPIDRV settings
38+
39+
// <o SL_SPIDRV_MIKROE_BITRATE> SPI bitrate
40+
// <i> Default: 1000000
41+
#define SL_SPIDRV_MIKROE_BITRATE 1000000
42+
43+
// <o SL_SPIDRV_MIKROE_FRAME_LENGTH> SPI frame length <4-16>
44+
// <i> Default: 8
45+
#define SL_SPIDRV_MIKROE_FRAME_LENGTH 8
46+
47+
// <o SL_SPIDRV_MIKROE_TYPE> SPI mode
48+
// <spidrvMaster=> Master
49+
// <spidrvSlave=> Slave
50+
#define SL_SPIDRV_MIKROE_TYPE spidrvMaster
51+
52+
// <o SL_SPIDRV_MIKROE_BIT_ORDER> Bit order on the SPI bus
53+
// <spidrvBitOrderLsbFirst=> LSB transmitted first
54+
// <spidrvBitOrderMsbFirst=> MSB transmitted first
55+
#define SL_SPIDRV_MIKROE_BIT_ORDER spidrvBitOrderMsbFirst
56+
57+
// <o SL_SPIDRV_MIKROE_CLOCK_MODE> SPI clock mode
58+
// <spidrvClockMode0=> SPI mode 0: CLKPOL=0, CLKPHA=0
59+
// <spidrvClockMode1=> SPI mode 1: CLKPOL=0, CLKPHA=1
60+
// <spidrvClockMode2=> SPI mode 2: CLKPOL=1, CLKPHA=0
61+
// <spidrvClockMode3=> SPI mode 3: CLKPOL=1, CLKPHA=1
62+
#define SL_SPIDRV_MIKROE_CLOCK_MODE spidrvClockMode0
63+
64+
// <o SL_SPIDRV_MIKROE_CS_CONTROL> SPI master chip select (CS) control scheme.
65+
// <spidrvCsControlAuto=> CS controlled by the SPI driver
66+
// <spidrvCsControlApplication=> CS controlled by the application
67+
#define SL_SPIDRV_MIKROE_CS_CONTROL spidrvCsControlAuto
68+
69+
// <o SL_SPIDRV_MIKROE_SLAVE_START_MODE> SPI slave transfer start scheme
70+
// <spidrvSlaveStartImmediate=> Transfer starts immediately
71+
// <spidrvSlaveStartDelayed=> Transfer starts when the bus is idle (CS deasserted)
72+
// <i> Only applies if instance type is spidrvSlave
73+
#define SL_SPIDRV_MIKROE_SLAVE_START_MODE spidrvSlaveStartImmediate
74+
// </h>
75+
// <<< end of configuration section >>>
76+
77+
// <<< sl:start pin_tool >>>
78+
// <usart signal=TX,RX,CLK,(CS)> SL_SPIDRV_MIKROE
79+
// $[USART_SL_SPIDRV_MIKROE]
80+
#define SL_SPIDRV_MIKROE_PERIPHERAL USART0
81+
#define SL_SPIDRV_MIKROE_PERIPHERAL_NO 0
82+
83+
// USART0 TX on PC03
84+
#define SL_SPIDRV_MIKROE_TX_PORT gpioPortC
85+
#define SL_SPIDRV_MIKROE_TX_PIN 3
86+
87+
// USART0 RX on PC02
88+
#define SL_SPIDRV_MIKROE_RX_PORT gpioPortC
89+
#define SL_SPIDRV_MIKROE_RX_PIN 2
90+
91+
// USART0 CLK on PC01
92+
#define SL_SPIDRV_MIKROE_CLK_PORT gpioPortC
93+
#define SL_SPIDRV_MIKROE_CLK_PIN 1
94+
95+
// USART0 CS on PC00
96+
#define SL_SPIDRV_MIKROE_CS_PORT gpioPortC
97+
#define SL_SPIDRV_MIKROE_CS_PIN 0
98+
99+
// [USART_SL_SPIDRV_MIKROE]$
100+
// <<< sl:end pin_tool >>>
101+
102+
#endif // SL_SPIDRV_MIKROE_CONFIG_H

0 commit comments

Comments
 (0)