diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Small_CPU/Inc/tm_stm32f4_otp.h	Sat Apr 28 11:52:34 2018 +0200
@@ -0,0 +1,148 @@
+/**
+ * @author  Tilen Majerle
+ * @email   tilen@majerle.eu
+ * @website http://stm32f4-discovery.com
+ * @link    http://stm32f4-discovery.com/2015/01/library-49-one-time-programmable-otp-bytes-on-stm32f4xx
+ * @version v1.0
+ * @ide     Keil uVision
+ * @license GNU GPL v3
+ * @brief   OTP (One-Time Programmable) flash section library for STM32F4xx
+ *	
+@verbatim
+   ----------------------------------------------------------------------
+    Copyright (C) Tilen Majerle, 2015
+    
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    any later version.
+     
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+    
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+   ----------------------------------------------------------------------
+@endverbatim
+ */
+#ifndef TM_STM32F4_OPT_H
+#define TM_STM32F4_OPT_H
+
+/* C++ detection */
+#ifdef __cplusplus
+extern "C" {
+#endif
+/**
+ * @addtogroup TM_STM32F4xx_Libraries
+ * @{
+ */
+
+/**
+ * @defgroup TM_OTP
+ * @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
+ * @{
+ *
+ * \par Changelog
+ *
+@verbatim
+ Version 1.0
+  - First release
+@endverbatim
+ *
+ * \par Dependencies
+ *
+@verbatim
+ - STM32F4xx
+ - STM32F4xx RCC
+ - STM32F4xx FLASH
+ - defines.h
+@endverbatim
+ */
+//#include "stm32f4xx.h"
+//#include "stm32f4xx_rcc.h"
+//#include "stm32f4xx_flash.h"
+//#include "defines.h"
+#include "stm32f4xx_hal.h"
+
+/**
+ * @defgroup TM_OTP_Macros
+ * @brief    Library defines
+ * @{
+ */
+ 
+/**
+ * @brief  OTP memory start address
+ */
+#define OTP_START_ADDR		(0x1FFF7800)
+
+/**
+ * @brief  OTP memory lock address
+ */
+#define OTP_LOCK_ADDR		(0x1FFF7A00)
+	
+/**
+ * @brief  Number of OTP blocks 
+ */
+#define OTP_BLOCKS			16
+
+/**
+ * @brief  Number of bytes in one block
+ */
+#define OTP_BYTES_IN_BLOCK	32
+
+/**
+ * @brief  Number of all OTP bytes
+ */
+#define OTP_SIZE			(OTP_BLOCKS * OTP_BYTES_IN_BLOCK)
+
+/**
+ * @}
+ */
+ 
+
+/**
+ * @defgroup TM_OTP_Functions
+ * @brief    Library Functions
+ * @{
+ */
+
+/**
+ * @brief  Writes one-time data to specific block and specific byte in this block
+ * @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.
+ * @param  block: OTP block number, 0 to 15 is allowed
+ * @param  byte: OTP byte inside one block, 0 to 31 is allowed
+ * @param  data: Data to be written to OTP memory
+ * @retval Member of @ref TM_OTP_Result_t enumeration 
+ */
+HAL_StatusTypeDef TM_OTP_Write(uint8_t block, uint8_t byte, uint8_t data);
+
+/**
+ * @brief  Reads data from specific block and specific byte in this block
+ * @note   You can read data unlimited times from locations
+ * @param  block: OTP block number, 0 to 15 is allowed
+ * @param  byte: OTP byte inside one block, 0 to 31 is allowed
+ * @retval Value at specific block and byte location, or 0 if location is invalid
+ */
+uint8_t TM_OTP_Read(uint8_t block, uint8_t byte);
+
+
+/**
+ * @}
+ */
+ 
+/**
+ * @}
+ */
+ 
+/**
+ * @}
+ */
+
+/* C++ detection */
+#ifdef __cplusplus
+}
+#endif
+
+#endif // TM_STM32F4_OPT_H