93-OTP-Library (STM32F4)

Mit dieser Library können die “One-Time-Programmable-Bytes” beschrieben werden.

Die STM32F4 CPU besitzt 512 Bytes die nur einmalig beschrieben werden können.
Bei Auslieferung sind diese Bits auf “1″ gesetzt und können per Software nur auf “0″ gelöscht werden.

Die 512 Bytes sind aufgeteilt in 16 Bänke (zu je 32 Bytes) von denen jede Bank mit einem zusätzlichen Lock-Register für weiteres beschreiben geschützt werden kann.
(Dieses Lock-Register kann auch nur gelöscht werden)

Ich habe 4 Funktionen geschrieben. Zwei um die Daten Bytes einzeln lesen und schreiben zu können. (schreiben geht wie gesagt nur Bits auf “0″ setzen)

Mit den zwei anderen Funktionen kann das Lock-Register gelesen und geschrieben werden.

Hinweis : Damit beim testen der Software nicht aus versehen in ein OTP-Register
geschrieben wird, ist im H-File die “write protection” aktiviert. Wenn ihr sicher seid, das euer Programm funktioniert, könnt ihr diese deaktivieren.

Voraussetzungen :

1
2
Benutzte Module der CooCox-IDE : FLASH
Benutzte Librarys : keine

Funktionen  :

1
2
3
4
uint8_t UB_OTP_Read_DataByte(uint8_t block_nr, uint8_t byte_nr);                          // zum lesen eines OTP-Bytes
ErrorStatusUB_OTP_Write_DataByte(uint8_t block_nr, uint8_t byte_nr, uint8_t byte_value);  // zum schreiben eines OTP-Bytes
uint8_t UB_OTP_Read_Lock(uint8_t block_nr);                                               // zum lesen vom Lock-Register
ErrorStatusUB_OTP_Lock_Block(uint8_t block_nr);                                           // zum setzen vom Lock-Register

Beispiel  :

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
//--------------------------------------------------------------
// File     : main.c
// Datum    : 01.01.2015
// Version  : 1.0
// Autor    : UB
// EMail    : mc-4u(@)t-online.de
// Web      : www.mikrocontroller-4u.de
// CPU      : STM32F4
// IDE      : CooCox CoIDE 1.7.4
// GCC      : 4.7 2012q4
// Module   : CMSIS_BOOT, M4_CMSIS_CORE
// Funktion : Demo der OTP-Library
// Hinweis  : Diese zwei Files muessen auf 8MHz stehen
//              "cmsis_boot/stm32f4xx.h"
//              "cmsis_boot/system_stm32f4xx.c"
//--------------------------------------------------------------
 
#include "main.h"
#include "stm32_ub_otp.h"
 
int main(void)
{
  uint8_t value;
 
  SystemInit(); // Quarz Einstellungen aktivieren
 
  // OTP-Byte auslesen (Block=3, Byte=7)
  value=UB_OTP_Read_DataByte(3,7);
 
  while(1)
  {
 
  }
}

Hier die Library zum Download :

ub_stm32f4_otp_v100

Hier der komplette CooCox-Projektordner zum Download :

Demo_93_OTP


Wie hat Dir dieser Artikel gefallen?

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Noch keine Bewertungen)
Loading...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert