|
Работа с backup SRAM stm32f407, Как это?? |
|
|
|
Sep 25 2013, 13:35
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Приветствую всех, кто осиливает тяжкий труд по освоению чего-то от ST Вопрос - в stm32f407 якобы есть 4кило памяти с питанием от батарейки. Якобы, потому что в описаниях она есть, а вот как к ней добраться, по каким адресам и какими командами - ни в даташите, ни в референсах - неизвесно. Может есть какие примерчики или описание, а может у меня уже глаза запотели от этой доки - ткните пальцем, где это все написано. ЗЫ. может нужно использовать специфические команды компилятора, пользуюсь ИАРом... И еще одна "фишка" - подключил батарейку, убрав перемычку на дискавери, и включил часы, так вот ток потребления по этому пину, при выкл. питании - 15 мкА, хотя в доке - макс 4, в чем может быть дело?
Сообщение отредактировал mantech - Sep 25 2013, 13:38
|
|
|
|
|
 |
Ответов
|
Sep 25 2013, 15:23
|
Профессионал
    
Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528

|
Цитата(mantech @ Sep 25 2013, 21:46)  Это понятно, а по каким адресам расположена эта память?? т.е. как туда писать и читать  В Memory map пишут, что от 0x4002 4000 до 0x4002 4FFF, не проверял  Память она и есть память, можно по указателю обращаться. Можно описать как отдельную секцию, разместить в этой секции переменные и работать с ними.
--------------------
Russia est omnis divisa in partes octo.
|
|
|
|
|
Sep 25 2013, 18:14
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(adnega @ Sep 25 2013, 20:38)  Так и есть. Проверено. Вопрос еще один, как "сказать" ИАРу, что вот это - union {Uint16 GlobalVar_w[VarCount];unsigned char GlobalVar_b[VarCount*2];} s_var; #define GlobalVar s_var.GlobalVar_w #define GlobalVarb s_var.GlobalVar_b должно находиться c адреса 0x40024000 до ...?
|
|
|
|
|
Sep 25 2013, 19:46
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(adnega @ Sep 25 2013, 21:52)  Как сказать ИАРу не знаю, но GCC я говорю так: Код volatile sSTR_LINE sstr __attribute__((section(".bkpsram"))); У долбанутого ИАра там #pragma location = адрес Правда для переменных прокатывает, а вот с юнионом никак не хочет...
|
|
|
|
|
Sep 26 2013, 16:10
|
Гуру
     
Группа: Участник
Сообщений: 2 219
Регистрация: 16-08-12
Из: Киров
Пользователь №: 73 143

|
Цитата(adnega @ Sep 25 2013, 23:30)  Думаю, этого мало. Вам зачем батареечная память нужна? Хранить данные, которые не уничтожаются после сброса? Тогда нужно еще как-то сказать линкеру, чтоб не инициализировал эти данные. Как раз и нужна, чтоб при откл питания данные сохранялись. "Тогда нужно еще как-то сказать линкеру, чтоб не инициализировал эти данные." - за это я как раз меньше всего волнуюсь - там есть защита от записи, которая не дает писать туда до тех пор, пока ее специально не отключишь... Цитата(ViKo @ Sep 26 2013, 14:39)  В файле stm32f4xx.h должна быть строка (в Keil есть) #define BKPSRAM_BASE ((uint32_t)0x40024000) /*!< Backup SRAM(4 KB) base address in the alias region */ А обращаться можно по указателю, аналогично, как ко всем периферийным устройствам. Это я понял, только очень желательно разместить там эти массивы, которые я написал, а то придется больше 150 обращений к массиву править как через указатель, а это не айс ЗЫ. А можно сделать так, что массив int разместить с адреса BKPSRAM_BASE и с того-же адреса массив char? Это не будет эквивалентно union?
|
|
|
|
Сообщений в этой теме
mantech Работа с backup SRAM stm32f407 Sep 25 2013, 13:35   mantech Цитата(SSerge @ Sep 25 2013, 18:23) В Mem... Sep 25 2013, 15:27 ViKo В файле stm32f4xx.h должна быть строка (в Keil ест... Sep 26 2013, 11:39 Warlockwolf Кодtypedef union {u16 GlobalVar_w[128]; u8... Sep 26 2013, 16:47 mantech Цитата(Warlockwolf @ Sep 26 2013, 19:47) ... Sep 26 2013, 16:52  ViKo Цитата(mantech @ Sep 26 2013, 19:52) Все ... Sep 27 2013, 18:16   mantech Цитата(ViKo @ Sep 27 2013, 21:16) А как ж... Sep 27 2013, 19:36
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|