comparison Small_CPU/Inc/tm_stm32f4_otp.h @ 38:5f11787b4f42

include in ostc4 repository
author heinrichsweikamp
date Sat, 28 Apr 2018 11:52:34 +0200
parents
children
comparison
equal deleted inserted replaced
37:ccc45c0e1ea2 38:5f11787b4f42
1 /**
2 * @author Tilen Majerle
3 * @email tilen@majerle.eu
4 * @website http://stm32f4-discovery.com
5 * @link http://stm32f4-discovery.com/2015/01/library-49-one-time-programmable-otp-bytes-on-stm32f4xx
6 * @version v1.0
7 * @ide Keil uVision
8 * @license GNU GPL v3
9 * @brief OTP (One-Time Programmable) flash section library for STM32F4xx
10 *
11 @verbatim
12 ----------------------------------------------------------------------
13 Copyright (C) Tilen Majerle, 2015
14
15 This program is free software: you can redistribute it and/or modify
16 it under the terms of the GNU General Public License as published by
17 the Free Software Foundation, either version 3 of the License, or
18 any later version.
19
20 This program is distributed in the hope that it will be useful,
21 but WITHOUT ANY WARRANTY; without even the implied warranty of
22 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23 GNU General Public License for more details.
24
25 You should have received a copy of the GNU General Public License
26 along with this program. If not, see <http://www.gnu.org/licenses/>.
27 ----------------------------------------------------------------------
28 @endverbatim
29 */
30 #ifndef TM_STM32F4_OPT_H
31 #define TM_STM32F4_OPT_H
32
33 /* C++ detection */
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37 /**
38 * @addtogroup TM_STM32F4xx_Libraries
39 * @{
40 */
41
42 /**
43 * @defgroup TM_OTP
44 * @brief OTP (One-Time Programmable) flash section library for STM32F4xx - http://stm32f4-discovery.com/2015/01/library-49-one-time-programmable-otp-bytes-on-stm32f4xx
45 * @{
46 *
47 * \par Changelog
48 *
49 @verbatim
50 Version 1.0
51 - First release
52 @endverbatim
53 *
54 * \par Dependencies
55 *
56 @verbatim
57 - STM32F4xx
58 - STM32F4xx RCC
59 - STM32F4xx FLASH
60 - defines.h
61 @endverbatim
62 */
63 //#include "stm32f4xx.h"
64 //#include "stm32f4xx_rcc.h"
65 //#include "stm32f4xx_flash.h"
66 //#include "defines.h"
67 #include "stm32f4xx_hal.h"
68
69 /**
70 * @defgroup TM_OTP_Macros
71 * @brief Library defines
72 * @{
73 */
74
75 /**
76 * @brief OTP memory start address
77 */
78 #define OTP_START_ADDR (0x1FFF7800)
79
80 /**
81 * @brief OTP memory lock address
82 */
83 #define OTP_LOCK_ADDR (0x1FFF7A00)
84
85 /**
86 * @brief Number of OTP blocks
87 */
88 #define OTP_BLOCKS 16
89
90 /**
91 * @brief Number of bytes in one block
92 */
93 #define OTP_BYTES_IN_BLOCK 32
94
95 /**
96 * @brief Number of all OTP bytes
97 */
98 #define OTP_SIZE (OTP_BLOCKS * OTP_BYTES_IN_BLOCK)
99
100 /**
101 * @}
102 */
103
104
105 /**
106 * @defgroup TM_OTP_Functions
107 * @brief Library Functions
108 * @{
109 */
110
111 /**
112 * @brief Writes one-time data to specific block and specific byte in this block
113 * @note You can only ONCE write data at desired byte in specific block, if you will try to do it more times, you can have broken data at this location.
114 * @param block: OTP block number, 0 to 15 is allowed
115 * @param byte: OTP byte inside one block, 0 to 31 is allowed
116 * @param data: Data to be written to OTP memory
117 * @retval Member of @ref TM_OTP_Result_t enumeration
118 */
119 HAL_StatusTypeDef TM_OTP_Write(uint8_t block, uint8_t byte, uint8_t data);
120
121 /**
122 * @brief Reads data from specific block and specific byte in this block
123 * @note You can read data unlimited times from locations
124 * @param block: OTP block number, 0 to 15 is allowed
125 * @param byte: OTP byte inside one block, 0 to 31 is allowed
126 * @retval Value at specific block and byte location, or 0 if location is invalid
127 */
128 uint8_t TM_OTP_Read(uint8_t block, uint8_t byte);
129
130
131 /**
132 * @}
133 */
134
135 /**
136 * @}
137 */
138
139 /**
140 * @}
141 */
142
143 /* C++ detection */
144 #ifdef __cplusplus
145 }
146 #endif
147
148 #endif // TM_STM32F4_OPT_H