{"id":446,"date":"2017-11-24T23:32:12","date_gmt":"2017-11-24T22:32:12","guid":{"rendered":"http:\/\/mikrocontroller.bplaced.net\/wordpress\/?page_id=446"},"modified":"2017-12-30T19:37:30","modified_gmt":"2017-12-30T18:37:30","slug":"58-backup_ram-library-stm32f4","status":"publish","type":"page","link":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f4\/komplette-library-liste-stm32f4\/58-backup_ram-library-stm32f4\/","title":{"rendered":"58-Backup_RAM-Library (STM32F4)"},"content":{"rendered":"<p><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-previous\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f4\/komplette-library-liste-stm32f4\/57-virtuelle_eeprom-library-stm32f4\/\" title=\"57-Virtuelle_EEprom-Library (STM32F4)\"><span class=\"meta-nav\">\u2190<\/span> 57-Virtuelle_EEprom-Library (STM32F4)<\/a><\/div><\/div><!-- #nav-below --><div id=\"nav-below\" class=\"navigation\"><div class=\"nav-next\"><a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f4\/komplette-library-liste-stm32f4\/59-can_lolevel-library-stm32f4\/\" title=\"59-CAN_LoLevel-Library (STM32F4)\">59-CAN_LoLevel-Library (STM32F4) <span class=\"meta-nav\">&rarr;<\/span><\/a><\/div><\/div><!-- #nav-below --><\/p>\n<p>Mit dieser Library kann das interne 4k Byte gro\u00dfe Backup-RAM vom STM32F4 benutzt werden um Daten auch bei ausgeschalteter CPU zu speichern.<\/p>\n<p>Dazu muss am\u00a0Pin 6 der CPU (VBAT) eine externe Batterie angeschlossen werden.<br \/>\nVorsicht !! Beim Discovery-Modul ist Pin6 \u00fcber einen 0 Ohm Widerstand (R26) mit VDD verbunden. Dieser R26 muss dann ausgel\u00f6tet werden, sonnst versorgt die Batterie das ganze Board.<\/p>\n<p>Ich habe \u201cread\u201d und \u201cwrite\u201d auf 16bit Datenwerte ausgelegt so das in der Summe 2048 Werte im RAM abgelegt werden k\u00f6nnen (Adr 0\u00d70000 bis 0x07FF)<\/p>\n<p><strong>Benutzte Pins :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">VBAT (Pin 6 der CPU) muss an eine externe Batterie<\/pre>\n<p><strong>Voraussetzungen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">Benutzte Module der CooCox-IDE : RCC, PWR\r\nBenutzte Librarys : keine<\/pre>\n<p><strong>Funktionen :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">ErrorStatus UB_BKP_RAM_Init(void);                    \/\/ zum init vom RAM (und Test ob ok)\r\nvoid UB_BKP_RAM_Write(uint16_t adr, uint16_t wert);   \/\/ zum schreiben eines 16bit Wertes in das RAM\r\nuint16_t UB_BKP_RAM_Read(uint16_t adr);               \/\/ zum lesen eines 16bit Wertes aus dem RAM<\/pre>\n<p><strong>Beispiel :<\/strong><\/p>\n<pre lang=\"c\" line=\"1\">\/\/--------------------------------------------------------------\r\n\/\/ File     : main.c\r\n\/\/ Datum    : 06.09.2013\r\n\/\/ Version  : 1.0\r\n\/\/ Autor    : UB\r\n\/\/ EMail    : mc-4u(@)t-online.de\r\n\/\/ Web      : www.mikrocontroller-4u.de\r\n\/\/ CPU      : STM32F4\r\n\/\/ IDE      : CooCox CoIDE 1.7.4\r\n\/\/ GCC      : 4.7 2012q4\r\n\/\/ Module   : CMSIS_BOOT, M4_CMSIS_CORE\r\n\/\/ Funktion : Demo der Backup-RAM-Lib\r\n\/\/ Hinweis  : Diese zwei Files muessen auf 8MHz stehen\r\n\/\/              \"cmsis_boot\/stm32f4xx.h\"\r\n\/\/              \"cmsis_boot\/system_stm32f4xx.c\"\r\n\/\/--------------------------------------------------------------\r\n\r\n#include \"main.h\"\r\n#include \"stm32_ub_led.h\"\r\n#include \"stm32_ub_bkp_ram.h\"\r\n\r\nint main(void)\r\n{\r\n  ErrorStatus check;\r\n  uint16_t ram_wert;\r\n\r\n  SystemInit(); \/\/ Quarz Einstellungen aktivieren\r\n\r\n  \/\/ init der LEDs\r\n  UB_Led_Init();\r\n\r\n  \/\/ init vom Backup-RAM\r\n  check=UB_BKP_RAM_Init();\r\n  if(check==SUCCESS) {\r\n    \/\/ gr\u00fcne LED einschalten\r\n    UB_Led_On(LED_GREEN);\r\n\r\n    \/\/ RAM Adresse 0x00 auslesen\r\n    ram_wert=UB_BKP_RAM_Read(0x00);\r\n    \/\/ test ob Inhalt stimmt\r\n    if(ram_wert==0x3AC4) {\r\n      \/\/ Inhalt ist richtig\r\n      UB_Led_On(LED_BLUE);\r\n    }\r\n    else {\r\n      \/\/ wenn Inhalt nicht stimmt\r\n      UB_Led_On(LED_ORANGE);\r\n      \/\/ Adresse 0x00 mit Wert 0x3AC4 beschreiben\r\n      UB_BKP_RAM_Write(0x00,0x3AC4);\r\n    }\r\n  }\r\n  else {\r\n    \/\/ Fehler\r\n    UB_Led_On(LED_RED);\r\n  }\r\n\r\n  while(1)\r\n  {\r\n\r\n  }\r\n}\r\n<\/pre>\n<p>Hier die Library zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/09\/ub_stm32f4_bkp_ram_v100.zip\">ub_stm32f4_bkp_ram_v100<\/a><\/p>\n<p>Hier der komplette CooCox-Projektordner zum\u00a0<strong>Download :<\/strong><\/p>\n<p><a href=\"http:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-content\/uploads\/2013\/09\/Demo_58_BKP_RAM.zip\">Demo_58_BKP_RAM<\/a><\/p>\n<hr \/>\n<h3 id=\"comments-title\">Eine Antwort auf <em>58-Backup_RAM-Library (STM32F4)<\/em><\/h3>\n<ol class=\"commentlist\">\n<li id=\"li-comment-4414\" class=\"comment even thread-even depth-1\">\n<div id=\"comment-4414\">\n<div class=\"comment-author vcard\"><img loading=\"lazy\" decoding=\"async\" class=\"avatar avatar-40 photo\" src=\"http:\/\/0.gravatar.com\/avatar\/8ee1edc4df18d1afd12eb0c4c8a55091?s=40&amp;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D40&amp;r=G\" alt=\"\" width=\"40\" height=\"40\" \/><cite class=\"fn\">Christian Julius<\/cite> <span class=\"says\">sagt:<\/span><\/div>\n<p><!-- .comment-author .vcard --><\/p>\n<div class=\"comment-meta commentmetadata\">30. November 2015 um 01:18<\/div>\n<p><!-- .comment-meta .commentmetadata --><\/p>\n<div class=\"comment-body\">\n<p>Geht einfacher und komfortabler:<\/p>\n<p>Linker script:<\/p>\n<p>MEMORY<br \/>\n{<br \/>\nROM (rx) : ORIGIN = 0\u00d708000000, LENGTH = 1024K<br \/>\nRAM (rwx) : ORIGIN = 0\u00d720000000, LENGTH = 128K<br \/>\nCCRAM (rwx) : ORIGIN = 0\u00d710000000, LENGTH = 64K<br \/>\nBKRAM (rw) : ORIGIN = 0\u00d740024000, LENGTH = 4K<br \/>\n}<\/p>\n<p>\/* Backup RAM section *\/<br \/>\n\/* _sibkram = LOADADDR(.bkram); *\/<br \/>\n.bkram :<br \/>\n{<br \/>\n. = ALIGN(4);<br \/>\n*(.bkram)<br \/>\n*(.bkram*)<br \/>\n. = ALIGN(4);<br \/>\n} &gt;BKRAM<\/p>\n<p>und als Deklaration<\/p>\n<p>#define BKRAM __attribute__((section(\u201c.bkram\u201d)))<\/p>\n<p>int bkramvar BKRAM = 1235;<\/p>\n<\/div>\n<\/div>\n<p><!-- #comment-## --><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Mit dieser Library kann das interne 4k Byte gro\u00dfe Backup-RAM vom STM32F4 benutzt werden um Daten auch bei ausgeschalteter CPU zu speichern. Dazu muss am\u00a0Pin 6 der CPU (VBAT) eine externe Batterie angeschlossen werden. Vorsicht !! Beim Discovery-Modul ist Pin6 &hellip; <a href=\"https:\/\/mikrocontroller.bplaced.net\/wordpress\/stm32f4\/komplette-library-liste-stm32f4\/58-backup_ram-library-stm32f4\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":144,"menu_order":58,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[128],"tags":[9,204,7],"class_list":["post-446","page","type-page","status-publish","hentry","category-stm32f4","tag-library","tag-ram","tag-stm32f4"],"_links":{"self":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/446","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/comments?post=446"}],"version-history":[{"count":3,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/446\/revisions"}],"predecessor-version":[{"id":1597,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/446\/revisions\/1597"}],"up":[{"embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/pages\/144"}],"wp:attachment":[{"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/media?parent=446"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/categories?post=446"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikrocontroller.bplaced.net\/wordpress\/wp-json\/wp\/v2\/tags?post=446"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}