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

readme.txt « BLE_RfWithFlash « 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: 0ec8e081d5ce2035d66510b9523311d3cbd6652b (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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/**
  @page  Application

  @verbatim
  ******************************************************************************
  * @file    BLE/BLE_RfWithFlash/readme.txt 
  * @author  MCD Application Team
  * @brief   Description of the BLE_RfWithFlash application
  ******************************************************************************
  *
  * Copyright (c) 2020 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

This example is to demonstrate the capability to erase/write the flash while a Point-to-Point communication using BLE component is active. 

This project is built on top of BLE_p2pServer where SW3 has been added to erase/write in flash and SW1 has been modified to enable/disable
timing protection versus flash activity from CPU1.
The flash driver implements the algorithm described in AN5289 - Building a Wireless application.
The BLE_RfWithFlash shall be downloaded in a STM32WB55xx board acting as a GATT server.
The client could be either a phone with the ST BLE Sensor application or the BLE_P2PClient application downloaded on a STM32WB55xx board.
	
@par Directory contents 
  
  - BLE/BLE_RfWithFlash/Core/Inc/stm32wbxx_hal_conf.h	        HAL configuration file
  - BLE/BLE_RfWithFlash/Core/Inc/stm32wbxx_it.h          		Interrupt handlers header file
  - BLE/BLE_RfWithFlash/Core/Inc/main.h                  		Header for main.c module
  - BLE/BLE_RfWithFlash/STM32_WPAN/App/app_ble.h           		Header for app_ble.c module
  - BLE/BLE_RfWithFlash/Core/Inc/app_common.h            		Header for all modules with common definition
  - BLE/BLE_RfWithFlash/Core/Inc/app_conf.h              		Parameters configuration file of the application
  - BLE/BLE_RfWithFlash/Core/Inc/app_entry.h            		Parameters configuration file of the application
  - BLE/BLE_RfWithFlash/STM32_WPAN/App/ble_conf.h            	BLE Services configuration
  - BLE/BLE_RfWithFlash/STM32_WPAN/App/ble_dbg_conf.h        	BLE Traces configuration of the BLE services
  - BLE/BLE_RfWithFlash/STM32_WPAN/App/p2p_server_app.h      	Header for p2p_server_app.c module
  - BLE/BLE_RfWithFlash/Core/Inc/hw_conf.h           			Configuration file of the HW
  - BLE/BLE_RfWithFlash/Core/Inc/utilities_conf.h    			Configuration file of the utilities
  - BLE/BLE_RfWithFlash/Core/Src/stm32wbxx_it.c          		Interrupt handlers
  - BLE/BLE_RfWithFlash/Core/Src/main.c                  		Main program
  - BLE/BLE_RfWithFlash/Core/Src/system_stm32wbxx.c      		stm32wbxx system source file
  - BLE/BLE_RfWithFlash/STM32_WPAN/App/app_ble.c      			BLE Profile implementation
  - BLE/BLE_RfWithFlash/Core/Src/app_entry.c      				Initialization of the application
  - BLE/BLE_RfWithFlash/STM32_WPAN/App/p2p_server_app.c   		P2P Server application
  - BLE/BLE_RfWithFlash/STM32_WPAN/Target/hw_ipcc.c      		IPCC Driver
  - BLE/BLE_RfWithFlash/Core/Src/stm32_lpm_if.c					Low Power Manager Interface
  - BLE/BLE_RfWithFlash/Core/Src/hw_timerserver.c 				Timer Server based on RTC
  - BLE/BLE_RfWithFlash/Core/Src/hw_uart.c 						UART Driver
  - BLE/BLE_RfWithFlash/Core/Src/flash_driver.c 				Flash Driver (implements the algorithm from AN5289)
  - BLE/BLE_RfWithFlash/Core/Inc/flash_driver.h 				Interface to be used to erase/write in Flash
  
@par Hardware and Software environment

    - This application runs on STM32WB55xx devices.
    
    - Nucleo board (MB1355C) Set-up    
       - Connect the Nucleo Board to your PC with a USB cable type A to mini-B to ST-LINK connector (USB_STLINK).
       - Please ensure that the ST-LINK connectors and jumpers are fitted.

@par How to use it ? 

This application requests having the stm32wb5x_BLE_Stack_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_RfWithFlash_reference.hex from Binary directory

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_RfWithFlash application
 - The Peripheral device (BLE_RfWithFlash) starts advertising (during 1 minute), the green led blinks for each advertising event.
 - Then, click on the App icon, ST BLE Sensor (android device)
 - connect to the device
 - select the P2PSRVx in the device list and play with the Light and the SW1 button of the board
 - When pressing SW1 on the board, a notification is sent to the phone.
 - The blue led on the board can be switched ON/OFF from the phone.

  Specific implementation for the test flash procedure
  The descritpions above are taken from the BLE_p2pServer and are still valid as the BLE_RfWithFlash application is built on top of the
  BLE_p2pServer application.
  The BLE_RfWithFlash application is working in the same way than BLE_p2pServer application with additional features :
  - Each time SW3 is pressed, the application alternatively :
  	- Erase the last CFG_NBR_OF_FLASH_SECTOR_TO_PROCESS (configurable from app_conf.h). A message is sent over before
    the erase process is started and once it is finished. The application checks that all the sectors have been erased. If it is not
    the case, the RED LED is switched ON and a message is sent over the traces with the first the address that has not been properly erased.
    - Write the last CFG_NBR_OF_FLASH_SECTOR_TO_PROCESS (configurable from app_conf.h) with 64bits data starting from 0x00 and incremented
      by 1 until the end of the test.A message is sent over before the write process is started and once it is finished. The application checks
      that all the sectors have been written. If it is not the case, the RED LED is switched ON and a message is sent over the traces with the
      first the address that has not been properly written.
  - Each time SW1 is pressed, in addition to what is described above, the CPU1 timing protection is alternatively enabled/disabled. Each time
    SW1 is pressed, a message is sent over the traces to notify the protection status.
  - When SW3 is pressed while the CPU1 timing protection has been enabled with SW1, the CPU1 loops into the FlashOperationProc() until the CPU1
    timing protection is disabled. Over all the time, the RF link activity is maintained.

Second demonstration - The phone may be replaced by the BLE_p2pClient application dowloaded on a STM32WB55xx board
 - BLE_RfWithFlash may be connected by BLE_p2pClient.
 - Once the code (BLE_RfWithFlash & BLE_p2pClient) is downloaded into the two STM32WB55xx boards and executed, the modules are initialized. 

 - The Peripheral device (BLE_RfWithFlash) starts advertising (during 1 minute), the green led blinks for each advertising event.
 - The Central device (BLE_p2pClient) starts scanning when pressing the User button (SW1) on the USB Dongle board. 
   - BLE_p2pClient blue led becomes on. 
   - Scan req takes about 5 seconds.
   - Make sure BLE_RfWithFlash advertises, if not press reset button or switch off/on to restart advertising.
 - Then, it automatically connects to the BLE_RfWithFlash. 
   - Blue led turns off and green led starts blinking as on the MB1355C. Connection is done.
 - When pressing SW1 on a board, the blue led toggles on the other one.
   - The SW1 button can be pressed independently on the GATT Client or on the GATT Server.
 - When the server is located on a MB1355C, the connection interval can be modified from 50ms to 1s and vice-versa using SW2. 
 - The green led on the 2 boards blinks for each advertising event, it means quickly when 50ms and slowly when 1s. 
 - Passing from 50ms to 1s is instantaneous, but from 1s to 50ms takes around 10 seconds.
 - The SW1 event, switch on/off blue led, depends on the connection Interval event. 
 - So the delay from SW1 action and blue led change is more or less fast.

   For more details refer to the Application Note: 
  AN5289 - Building a Wireless application
  
	
 
 * <h3><center>&copy; COPYRIGHT STMicroelectronics</center></h3>
 */