Welcome to mirror list, hosted at ThFree Co, Russian Federation.

readme.txt « BLE_Peripheral_Lite_EventCallbacks « BLE « Applications « P-NUCLEO-WB55.Nucleo « Projects - github.com/Flipper-Zero/STM32CubeWB.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 7f7c6e8e33ae91805b9a904ce76fec49696dc131 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
/**
  @page BLE_Peripheral_Lite_EventCallbacks Application

  @verbatim
  ******************************************************************************
  * @file    BLE/BLE_Peripheral_Lite_EventCallbacks/readme.txt 
  * @author  MCD Application Team
  * @brief   Description of the BLE_Peripheral_Lite_EventCallbacks application
  ******************************************************************************
  *
  * Copyright (c) 2021 STMicroelectronics. All rights reserved.
  *
  * This software component is licensed by ST under Ultimate Liberty license 
  * SLA0044, the "License"; You may not use this file except in compliance with 
  * the License. You may obtain a copy of the License at:
  *                               www.st.com/SLA0044
  *
  ******************************************************************************
  @endverbatim

@par Application Description

How to communicate with simple BLE peripheral with minimum activated features.

This example is to demonstrate simple BLE peripheral operation with bidirectional communication with minimalistic CPU2 configuration flow
and Lite service support with minimum needed features activation (not including e.g. Tasks Sequencer, Timer Server, Low-Power Manager).
In addition this example implement the BLE API event callbacks functions defined in ble_events.h header file.

One STM32WB55xx board is used acting as GAP Peripheral and GATT Server.
Android/iOS BLE compatible device with recommended ST BLE Profile application (such as ST BLE Sensor application)
installed to be used as GAP Central and GATT Client.

@note Care must be taken when using HAL_Delay(), this function provides accurate delay (in milliseconds)
      based on variable incremented in SysTick ISR. This implies that if HAL_Delay() is called from
      a peripheral ISR process, then the SysTick interrupt must have higher priority (numerically lower)
      than the peripheral interrupt. Otherwise the caller ISR process will be blocked.
      To change the SysTick interrupt priority you have to use HAL_NVIC_SetPriority() function.
      
@note The application needs to ensure that the SysTick time base is always set to 1 millisecond
      to have correct HAL operation.
      
@par Keywords

Connectivity, BLE, IPCC, HSEM, RTC, UART, PWR, BLE protocol, BLE pairing, BLE profile, Dual core

@par Directory contents 
  
  - BLE/BLE_Peripheral_Lite_EventCallbacks/Inc/stm32wbxx_hal_conf.h         HAL configuration file
  - BLE/BLE_Peripheral_Lite_EventCallbacks/Inc/stm32wbxx_it.h               Interrupt handlers header file
  - BLE/BLE_Peripheral_Lite_EventCallbacks/Inc/main.h                       Header for main.c module
  - BLE/BLE_Peripheral_Lite_EventCallbacks/Inc/gatt_service.h               Header for gatt_service.c module
  - BLE/BLE_Peripheral_Lite_EventCallbacks/Inc/app_common.h                 Header for all modules with common definition
  - BLE/BLE_Peripheral_Lite_EventCallbacks/Inc/app_conf.h                   Parameters configuration file of the application
  - BLE/BLE_Peripheral_Lite_EventCallbacks/Inc/hw_conf.h                    Configuration file of the HW
  - BLE/BLE_Peripheral_Lite_EventCallbacks/Inc/utilities_conf.h             Configuration file of the utilities 
  - BLE/BLE_Peripheral_Lite_EventCallbacks/Src/stm32wbxx_it.c               Interrupt handlers
  - BLE/BLE_Peripheral_Lite_EventCallbacks/Src/main.c                       Main program and BLE Profile implementation
  - BLE/BLE_Peripheral_Lite_EventCallbacks/Src/system_stm32wbxx.c           Stm32wbxx system source file
  - BLE/BLE_Peripheral_Lite_EventCallbacks/Src/gatt_service.c               Custom STM my very own service implementation
  - BLE/BLE_Peripheral_Lite_EventCallbacks/Src/hw_ipcc.c                    IPCC Driver
  - BLE/BLE_Peripheral_Lite_EventCallbacks/Src/app_debug.c                  CPU2 debug and trace support
  - BLE/BLE_Peripheral_Lite_EventCallbacks/Src/stm32wbxx_hal_msp.c          MSP Initialisation and de-Initialisation
 
@par Hardware and Software environment

  - This application runs on STM32WB55xx devices & Nucleo board (MB1355C)  
 
@par How to use it ? 

This application requires having the stm32wb5x_BLE_Stack_full_fw.bin binary flashed on the Wireless Coprocessor.
If it is not the case, you need to use STM32CubeProgrammer to load the appropriate binary.
All available binaries are located under /Projects/STM32_Copro_Wireless_Binaries directory.
Refer to UM2237 to learn how to use/install STM32CubeProgrammer.
Refer to /Projects/STM32_Copro_Wireless_Binaries/ReleaseNote.html for the detailed procedure to change the
Wireless Coprocessor binary.  
   
In order to make the program work, you must do the following :
 - Open your preferred toolchain 
 - Rebuild all files and load the image into Target memory
 - OR use the BLE_Peripheral_Lite_EventCallbacksreference.hex from Binary directory
 - This must be done for BLE_Peripheral_Lite_EventCallbacks (MB1355C) 

First demonstration
On the android/ios device, enable the Bluetooth communications, and if not done before,
 - Install the ST BLE Profile application on the android device
   https://play.google.com/store/apps/details?id=com.stm.bluetoothlevalidation&hl=en
   https://itunes.apple.com/fr/App/st-ble-profile/id1081331769?mt=8

 - Install the ST BLE Sensor application on the ios/android device
   https://play.google.com/store/apps/details?id=com.st.bluems
   https://itunes.apple.com/us/App/st-bluems/id993670214?mt=8

 - Power on the Nucleo board with the BLE_Peripheral_Lite_EventCallbacks application
 - Then, click on the App icon, ST BLE Sensor (android device)
 - connect to the device
 - select the "HELLO!" device(containing My Very Own service as P2PServer profile) in the list and play with the button to switch on/off blue LED on nucleo board.

Demonstration scheduling

 - Once the code (BLE_Peripheral_Lite_EventCallbacks) is downloaded into the STM32WB55xx board and executed, the module is initialized. 
 - The red LED switch On to indicate that the CPU2 is initializing and switch Off when CPU2 is initialized.
 - The green LED switch On to indicate that the wireless stack FW is running.
 - The blue LED switch On to indicate that the wireless stack FW has been initialized.
   and blue LED switch OFF when custom STM GATT service called "My very own service" has been initialized.
   
 - The Peripheral device (BLE_Peripheral_Lite_EventCallbacks) starts advertising with data using local name "HELLO!".
 - The green led blinks for each advertising event slowly each ~0.5sec.
 - The Central device (ST BLE Sensor smart phone application) starts scanning and when the peripheral is found and selected in advices list,
   it connects to the Server device Nucleo board (MB1355C) and the green led toggles faster. 
 - The button event on ST BLE Sensor application interface enables to switch On/Off blue led on Nucleo board.
 - Notification is sent from the server (Peripheral device - Nucleo board (MB1355C)) to the client (Central device - Smart phone) every ~1sec.
 - When the Peripheral device (Nucleo board (MB1355C)) is disconnected, advertising is restarted and it is possible to connect to it again.
 
 For more details refer to the Application Note: 
  AN5289 - Building a Wireless application  
 
 * <h3><center>&copy; COPYRIGHT STMicroelectronics</center></h3>
 */