Например TDA7294

Форум РадиоКот • Просмотр темы - STM32 новичку в ARM что к чему
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вс дек 07, 2025 10:29:35

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 8919 ]    , , , , 5, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пт апр 06, 2012 21:23:20 
Опытный кот

Карма: 2
Рейтинг сообщений: -2
Зарегистрирован: Ср мар 18, 2009 21:14:33
Сообщений: 812
Рейтинг сообщения: 0
Понятно. ТЕм не менее минимализм его наоборот привлекает... :)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пт апр 06, 2012 22:45:09 
Открыл глаза

Карма: 6
Рейтинг сообщений: 11
Зарегистрирован: Вс янв 30, 2011 18:52:55
Сообщений: 40
Рейтинг сообщения: 0
вопрос:
#include <stm32f10x_lib.h> - значит где должна быть библиотека? В проекте или в попках самого Кейла?
ну и естественно "source\STM32_init\STM32_Init.c(31): error: #5: cannot open source input file "stm32f10x_lib.h": No such file or directory"
хотя компилю проекты дружелюбно предоствлены Уважаемым Aheir'a (http://radiokot.ru/articles/43/)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пт апр 06, 2012 23:47:30 
Сверлит текстолит когтями
Аватар пользователя

Карма: 22
Рейтинг сообщений: 81
Зарегистрирован: Пн дек 08, 2008 10:58:48
Сообщений: 1262
Откуда: Винница
Рейтинг сообщения: 0
C:\Keil\ARM\INC\ST\STM32F10x\stm32f10x_lib.h
у меня.
Перед включением нужно удалить заголовочные файлы в конфиге, иначе кричит на переопределение типов.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Сб апр 07, 2012 11:37:43 
Опытный кот

Карма: 2
Рейтинг сообщений: -2
Зарегистрирован: Ср мар 18, 2009 21:14:33
Сообщений: 812
Рейтинг сообщения: 0
Подскажите где почитать про С для IAR - в частнсти объявление переменных во flash, eeprom итд т.е. зарезервированные слова и и х использование... В хелпе чото ничего нету... или не так ищу.

т.е. для avr я писал flash uint8_t P; - а тут как?
__flash не пашет... Хотя везде вроде так советуют...


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Сб апр 07, 2012 12:54:01 
Друг Кота
Аватар пользователя

Карма: 26
Рейтинг сообщений: 108
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Сообщений: 7439
Откуда: г. Москва
Рейтинг сообщения: 0
demiurg301 писал(а):
Подскажите где почитать про С для IAR

С для IAR ? :shock: :shock:
Что это ? У IAR и под AVR, и под ARM С99


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Сб апр 07, 2012 12:56:05 
Друг Кота
Аватар пользователя

Карма: 26
Рейтинг сообщений: 108
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Сообщений: 7439
Откуда: г. Москва
Рейтинг сообщения: 0
demiurg301 писал(а):
В хелпе чото ничего нету... или не так ищу.

Видимо

Цитата:
т.е. для avr я писал flash uint8_t P; - а тут как?
__flash не пашет... Хотя везде вроде так советуют...

Объяви их как const - линкер сам разберется, во флеш засунет.

В кортекс-м3 фон нейманская архитектуры, в отличии от гарварда в АВР, тут работа с находящемся во флеше идет на равных с озу, никаких спец изысканий и специнструкций не надо.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Сб апр 07, 2012 13:34:25 
Опытный кот

Карма: 2
Рейтинг сообщений: -2
Зарегистрирован: Ср мар 18, 2009 21:14:33
Сообщений: 812
Рейтинг сообщения: 0
Satyr писал(а):
В кортекс-м3 фон нейманская архитектуры, в отличии от гарварда в АВР, тут работа с находящемся во флеше идет на равных с озу, никаких спец изысканий и специнструкций не надо.


Ну про архитектуру понятно.
C объявлением не понятно.
а как быть с eeprom?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Сб апр 07, 2012 13:53:29 
Друг Кота
Аватар пользователя

Карма: 26
Рейтинг сообщений: 108
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Сообщений: 7439
Откуда: г. Москва
Рейтинг сообщения: 0
demiurg301 писал(а):
а как быть с eeprom?

C каким eeprom ? покажи пальцем :)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Сб апр 07, 2012 14:00:49 
Опытный кот

Карма: 2
Рейтинг сообщений: -2
Зарегистрирован: Ср мар 18, 2009 21:14:33
Сообщений: 812
Рейтинг сообщения: 0
Цитата:
Микроконтроллер STM32L152RBT6
Ядро Cortex-M3, 128 KB Flash, 16 KB RAM, 4 KB EEPROM


Вот с этим.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Сб апр 07, 2012 20:44:51 
Друг Кота
Аватар пользователя

Карма: 26
Рейтинг сообщений: 108
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Сообщений: 7439
Откуда: г. Москва
Рейтинг сообщения: 0
В еепром прозрачно не заведешь переменную.
А так смотри функции в peripheral library на семейство


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Сб апр 07, 2012 20:53:54 
Опытный кот

Карма: 2
Рейтинг сообщений: -2
Зарегистрирован: Ср мар 18, 2009 21:14:33
Сообщений: 812
Рейтинг сообщения: 0
Т.е. надо как с внешней общатся?

Т.е. указателю присвоить адрес, а потом "отправить" туда данные тоже нельзя?

Печально... Пойду загуглю...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн апр 16, 2012 09:03:53 
Открыл глаза

Карма: 6
Рейтинг сообщений: 11
Зарегистрирован: Вс янв 30, 2011 18:52:55
Сообщений: 40
Рейтинг сообщения: 3
Люди, читал и читаю статьи о "быстром" старте с СТМ32, всё хорошо... кроме кода. Объясните, в чем хитрость такой сложности (на мой взгляд) команд к примеру:
GPIOC->BSRR = GPIO_BSRR_BS8;
неужели что-то типа
GPIO.08=1;
не была бы читабельней?
Вопрос к знатокам: нафига такое городить? И бывает-ли проще (типа примера, что я привел)? Если да, то в где прочитать?

ткните носом где прочитать, что такое GPIO_BSRR_BS8 или RCC_APB2ENR_AFIOEN, даже не что такое, а где оно документировано? Ну не с неба же люди эти записи берут!
просто я не понимаю логики таких длиннючевытянутозакрученнных команд для простых действий! Где смысл?

почему ADC1->CR2 |= ADC_CR2_ADON; , а не ADC1_CR2.ADON=1?
зачем поразрядное ИЛИ? нельзя сразу на бит ориентироваться?
_______________
PS: еще вот что не спросил: может кто сталкивался с бумажными изданиями по СТМ32 - посоветуйте толковую книжку. Бумага есть бумага!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн апр 16, 2012 09:25:58 
Вымогатель припоя

Карма: 4
Рейтинг сообщений: 15
Зарегистрирован: Вт июн 29, 2010 12:31:49
Сообщений: 670
Рейтинг сообщения: 0
Насколько я успел понять, BSRR - регистр для побитного управления портом, а GPIO_BSRR_BS8 - маска, позволяющая изменить только нужный бит, не трогая остальные. Если посмотреть в стандартной библиотеке gpio, там все эти маски описаны.
GPIOC->BSRR - вроде бы это называется структурой, и уже не имеет непосредственного отношения к STM, а есть в Си. Я не вникал в тонкости, но в целом тут вроде бы происходит обращение к регистру BSRR порта С.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн апр 16, 2012 09:36:17 
Друг Кота
Аватар пользователя

Карма: 26
Рейтинг сообщений: 108
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Сообщений: 7439
Откуда: г. Москва
Рейтинг сообщения: 0
mvm писал(а):
неужели что-то типа
GPIO.08=1;
не была бы читабельней?
Вопрос к знатокам: нафига такое городить? И бывает-ли проще (типа примера, что я привел)? Если да, то в где прочитать?

1. синтаксис Си не допускает имен переменных, начинающихся с цифры
2. не нравится такая модель представления ? сделай удобную себе, если не лениво. на железо это никак не завязано, за всеми этими структырами стоят все те же регистры.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн апр 16, 2012 09:39:29 
Друг Кота
Аватар пользователя

Карма: 26
Рейтинг сообщений: 108
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Сообщений: 7439
Откуда: г. Москва
Рейтинг сообщения: 0
mvm писал(а):
ткните носом где прочитать, что такое GPIO_BSRR_BS8 или RCC_APB2ENR_AFIOEN, даже не что такое, а где оно документировано? Ну не с неба же люди эти записи берут!

В инклюде, через которой у тебя подставляется реальное значение :))
Люди делают такие дефайны и называют их как у них принято/как им удобно.
Это лишь библиотека для работы с железом, а не само железо. В какой документации ты ищещь описание этих дефайнов ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн апр 16, 2012 10:46:17 
Мучитель микросхем

Карма: 4
Рейтинг сообщений: 9
Зарегистрирован: Пт июн 12, 2009 19:17:35
Сообщений: 487
Рейтинг сообщения: 0
Цитата:
а как быть с eeprom?
при старте дублируйте структуры в RAM, и записывайте обратно при необходимости, действия в общем элементарные, независимо от типа контроллера


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн апр 16, 2012 11:11:54 
Друг Кота
Аватар пользователя

Карма: 26
Рейтинг сообщений: 108
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Сообщений: 7439
Откуда: г. Москва
Рейтинг сообщения: 0
насчет eeprom.
в STM32Fxxx есть же еще backup SRAM, работающий на крошечной батарейке несколько лет или некоторое время (думаю, недели - легко) от ионистора.

Работать куда гибче, шустрее, ресурс выше :)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн апр 16, 2012 11:29:46 
Мучитель микросхем

Карма: 4
Рейтинг сообщений: 9
Зарегистрирован: Пт июн 12, 2009 19:17:35
Сообщений: 487
Рейтинг сообщения: 0
Satyr писал(а):
Работать куда гибче, шустрее, ресурс выше :)))
для конфига хватит и страницы обычного флеша. А если и не хватит - тем лучше, клиент быстрее прибежит за ремонтом/заменой


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн апр 16, 2012 11:36:00 
Друг Кота
Аватар пользователя

Карма: 26
Рейтинг сообщений: 108
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Сообщений: 7439
Откуда: г. Москва
Рейтинг сообщения: 0
qwerky писал(а):
Satyr писал(а):
Работать куда гибче, шустрее, ресурс выше :)))
для конфига хватит и страницы обычного флеша. А если и не хватит - тем лучше, клиент быстрее прибежит за ремонтом/заменой

Конечно хватит ,ведь она куда больше, чем еепром или бакап срам.
Да вот ведь незадача - в тех же stm32f2xx самая мелкая страница флеша - это 16кб и стирается только целиком :)))
Ну, я в своей задаче тоже откусил от 128кб страницу в 16кб для сохранения ~200 байт данных, которые еще и переписываются не целиком, но довольно часто :))

А чтоб более менее красиво, надежно и вобще, по уму, реализовать эмуляцию nvram надо 2 страницы.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн апр 16, 2012 12:15:41 
Мучитель микросхем

Карма: 4
Рейтинг сообщений: 9
Зарегистрирован: Пт июн 12, 2009 19:17:35
Сообщений: 487
Рейтинг сообщения: 0
Цитата:
для сохранения ~200 байт данных, которые еще и переписываются не целиком, но довольно часто
страницу еще можно поделить на куски равные размеру конфига, и выровненные по 4байтам, тогда можно стирать по заполнению всех кусков - количество циклов перезаписи сразу увеличится как для реального EEPROM.
Код:
#define FLASH_START_ADDR       0x08000000UL
#define FLASH_PAGE_SIZE        1024
#define FLASH_PAGES            16
#define FLASH_WORD_SIZE        4UL
#define FLASH_ERASED_STATE     0xFF
#define CONFIG_START_ADDR      (FLASH_START_ADDR + ((FLASH_PAGES - 1) * FLASH_PAGE_SIZE))
#define CONFIG_WORDS           (CONFIG_RECORD_SIZE / FLASH_WORD_SIZE)
#define CONFIG_RECORD_SIZE     ((sizeof(config) + FLASH_WORD_SIZE - 1) & (~(FLASH_WORD_SIZE - 1)))
#define CONFIG_RECORDS         (FLASH_PAGE_SIZE / CONFIG_RECORD_SIZE)
#define CONFIG_RECORD_ADDR(N)  ((struct config_struct *)(CONFIG_START_ADDR + ((N) * CONFIG_RECORD_SIZE)))

U16 config_record;

//calculate config CRC
U16 config_calc_crc(void *addr) {
   return crc16_modbus_buf((U8 *)addr, sizeof(config)-sizeof(config.crc), CRC16_MODBUS_INIT);
}

//check config validity
U8 config_check_crc(void *addr) {
   return (((struct config_struct *)addr)->crc == config_calc_crc(addr));
}

//find last used (valid) record. If not found, returns 0xFFFF;
U16 config_last_record(void) {
   struct config_struct *cfg = (void *)CONFIG_START_ADDR;
   for (U16 i=0; i<CONFIG_RECORDS; i++) {
      if (!config_check_crc(cfg)) return i - 1;
      cfg++;
   }
   return CONFIG_RECORDS - 1;
}

//clear configuration (fill with default values)
void config_clear(void) {
   memset(&config, 0, sizeof(config));
}

//read last valid configuration from EEPROM
U8 config_read(void) {
   if (config_record == 0xFFFF) {
      config_clear();
      return 0;
   } else {
      config = *CONFIG_RECORD_ADDR(config_record);
      return 1;
   }
}

//write config to next record
void config_write(void) {
   config.crc = config_calc_crc(&config);
   FLASH_Unlock();
   config_record++;
   if (config_record >= CONFIG_RECORDS) {
      config_record = 0;
      FLASH_ErasePage(CONFIG_START_ADDR);
   }
   U32 *source_addr = (void *)&config;
   U32 *dest_addr = (void *)CONFIG_RECORD_ADDR(config_record);
   for (U16 i=0; i<CONFIG_WORDS; i++) {
      FLASH_ProgramWord((U32 )dest_addr, *source_addr);
      source_addr++;
      dest_addr++;
   }
   FLASH_Lock();
}

void setup_config(void) {
   config_record = config_last_record(); //find last record
   config_read(); //read last record
}


Вот не знаю что делать если размер конфига приближается к размеру страницы Flash... И прибором пользуются каждый день, то есть несколько десятков перезаписей в день. Хватит максимум на год-два. Пришел к мнению забить - мне проще раз в год заменить плату контроллера, и еще немного заработать при этом.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 8919 ]    , , , , 5, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Phyxick и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y