STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 7360
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

спасибо, но reference manual мне цитировать не нужно. Я в нём постоянно верчусь и написал только тогда, когда сломал мозг: или не вижу ответа в даташите, или делаю какую-то глупость. Просто из даташита ясно не понять поведение флага ALRAWF. Полагал, что если установлен ALRAE, то ALRAWF должен быть постоянно равен 0. Только после снятия ALRAE этот флаг установится спустя сколько-то там RTC клоков. Но получается, что не так... Этот ALRAWF может быть установлен даже и при установленном ALRAE? Но явного описания про это я не вижу. Во всяком случае, исходя из такого предположения я строил программу - теперь приходится переделывать.

кстати, строчка /* 11 */ у меня вызывает подозрения.

Да и вообще, кристалл стрёмный. Я уже тащился от флага INITS. Не понимаю я ихнюю логику. И нахрена в ембеддедном приложении время считать в БКД?!
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

uldemir писал(а):Просто из даташита ясно не понять...
Есть еще у производителя AN3371 Using the hardware real-time clock (RTC) in STM32 F0, F2, F3, F4 and L1 series of MCUs,
там есть таблица Table 4. Steps to configure the alarm
шагов всего шесть
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7360
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

Ой блин, оне снова свой сайт перекрасили.
Не нашел ответа на свой вопрос. Ну да ладно, я только убедился, что это ALRAWF может стоять как угодно и как признак, что я залез править будильник, использовать нельзя. Хотя, действительно, это было ошибочное решение.
Придётся обходить эти грабли стороной.
Встал на лапы
Сообщения: 87
Зарегистрирован: Вс ноя 15, 2015 05:54:13

Сообщение Alex_Golubev »

В iar 7.40 сломались breakpoint. В момент выполнения программы устанавливаю breakpoint а в этом месте не срабатывает точка останова. Хотя принудительно программа останавливается. Это глюк иара или что?
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 7360
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Сообщение uldemir »

Может, вы установили слишком высокий уровень оптимизации? У меня при самом высоком уровне брейкпоинты работают только в ассемблерном листинге.
Реклама
Встал на лапы
Сообщения: 87
Зарегистрирован: Вс ноя 15, 2015 05:54:13

Сообщение Alex_Golubev »

Не оптимизацию не трогал. До этого точки останова работали в настройках не лазил а тут раз и сломались. При чем если сначала принудительно остановить программу после выставить точку останова и запустить программу то все работает. Но как только уберешь точку останова и поставишь заново (при выполнение программы) то все сразу ломается (не останавливается программа). Я просто не разу с таким не сталкивался.
Реклама
Встал на лапы
Сообщения: 87
Зарегистрирован: Вс ноя 15, 2015 05:54:13

Сообщение Alex_Golubev »

Скажите можно синхронизировать два таймера для шим? Чтоб начали счет одновременно?
Родился
Сообщения: 14
Зарегистрирован: Вт окт 30, 2012 23:34:54

Сообщение alexi$ »

добрый день. Немного не в тему, но скиньте мне на мыло Stm32cubeMX(последнею версию 4,14), и библиотеку для f1 (посл.версия 1,3,0). 5 дней не могу скачать с моим интернетом. С сайта после обрыва качается сначала. alex555cs@yandex.ru
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 369
Зарегистрирован: Пт фев 01, 2013 21:05:30

Сообщение es131245 »

Возможно ли вообще подключить 2 slave moda на 1 таймер? Хочу таймер что работает в режиме IC подключить еще 2ой таймер для увеличения разрядности.
Это вообще возможно?
Родился
Сообщения: 7
Зарегистрирован: Вт мар 15, 2016 20:09:33

Сообщение JustinTime »

alexi$ писал(а):добрый день. Немного не в тему, но скиньте мне на мыло Stm32cubeMX(последнею версию 4,14), и библиотеку для f1 (посл.версия 1,3,0). 5 дней не могу скачать с моим интернетом. С сайта после обрыва качается сначала. alex555cs@yandex.ru
Я уже несколько дней вообще практически ничего не могу скачать с сайта ST.com (как раз Cube нужен был) - выдает SORRY, PAGE NOT FOUND.

Это у меня одного такая фигня ?
Встал на лапы
Сообщения: 87
Зарегистрирован: Вс ноя 15, 2015 05:54:13

Сообщение Alex_Golubev »

Нет у меня также PAGE NOT FOUND.
Открыл глаза
Аватара пользователя
Сообщения: 63
Зарегистрирован: Пн апр 20, 2015 14:00:32

Сообщение Мяукните! »

es131245

Каскадирование счётчиков, это стандартная фишка у многих камней. Включается битиком в настройках..
Контактная информация:
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 369
Зарегистрирован: Пт фев 01, 2013 21:05:30

Сообщение es131245 »

На почту же выслал свой старый установщик.
Могу сам куб кинуть
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

Обнаружил непонятную для себя вещь при измерении температуры по внутреннему сенсору STM32F030. В примерах (codesnippets) от ST температуру вычисляет следующая функция:

Код: Выделить всё

/**
  * @brief  This function computes the temperature from the temperature sensor measure
  *         The computation uses the following formula :
  *         Temp = (Vsense - V30)/Avg_Slope + 30
  *         Avg_Slope = (V110 - V30) / (110 - 30)
  *         V30 = Vsense @30°C (calibrated in factory @3.3V)
  *         V110 = Vsense @110°C (calibrated in factory @3.3V)
  *         VDD_APPLI/VDD_CALIB coefficient allows to adapt the measured value
  *         according to the application board power supply versus the 
  *         factory calibration power supply.
  * @param  measure is the a voltage measured from the temperature sensor (can have been filtered)
  * @retval returns the computed temperature
  */
int32_t ComputeTemperature(uint32_t measure)
{
  int32_t temperature;
  
  temperature = ((measure * VDD_APPLI / VDD_CALIB) - (int32_t) *TEMP30_CAL_ADDR ) ;	
  temperature = temperature * (int32_t)(110 - 30);                      
  temperature = temperature / (int32_t)(*TEMP110_CAL_ADDR - *TEMP30_CAL_ADDR);                 
  temperature = temperature + 30;
  return(temperature);
}
И все с ней было бы понятно, если б не таинственный параметр TEMP110_CAL_ADDR. То, что он должен означать, понятно -- это указатель на сохраненное значение АЦП, полученное при температуре кристалла в 110 градусов. Таинственным же я называю его потому, что в даташите на STM32F030, каких либо упоминаний о нем мне отыскать не удалось. Есть TEMP30_CAL_ADDR (в даташите он называется TS_CAL1), есть Avg_Slope (и это именно его вычисляют в вышеприведенной функции с использованием значения TEMP110_CAL -- опять же не понятно, зачем его вычислять, если его значение приведено в даташите), но никаких калибровочных данных, сохраненных в чипе для температуры 110 градусов, даташит не упоминает.

С одной стороны, вполне можно допустить, что производитель забыл в мануале описать этот самый TS_CAL2 для STM32F030. Ну мало ли и с кем не бывает. Да вот только вышеприведенная функция вычисляет температуру с точностью не лучше 4 градусов, если ее использовать в оригинальном веде и об этом я говорю на основе личного опыта после проверок на нескольких экземплярах STM32F030F4P6. Если же не вычислять Avg_Slope по TEMP110_CAL_ADDR, а взять значение из даташита, то этот же алгоритм начинает вычислять температуру с точностью 1 градус. Обнаружив это, я пребываю в некоторой растерянности. В интернетах в куче мест (включая этот форум) используется оригинальный код из снайпетов и всевозможные уроки и примеры настаивают, что именно так и надлежит вычислять температуру. Это все жертвы тупой копипасты или, наоборот, я чего-то не понимаю? Откуда взялся TEMP110_CAL_ADDR ?
Друг Кота
Аватара пользователя
Сообщения: 25492
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Страница 738 референс-мануала RM0360
Пункт A.7.16

Код: Выделить всё

/* Temperature sensor calibration value address */
#define TEMP110_CAL_ADDR ((uint16_t*) ((uint32_t) 0x1FFFF7C2))
#define TEMP30_CAL_ADDR ((uint16_t*) ((uint32_t) 0x1FFFF7B8))
Вообще то все уже рассматривали: http://radiokot.ru/forum/viewtopic.php? ... &p=2342163
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

a5021 писал(а):С одной стороны, вполне можно допустить, что производитель забыл в мануале описать этот самый TS_CAL2 для STM32F030
да забыл - в документации, например на STM32F042, TS_CAL2 присутствует
Вымогатель припоя
Аватара пользователя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Сообщение scorpi_0n »

В DocID024849 Rev 1 присутствуют оба. Это в Rev 2 TS_CAL2 потеряли.
Родился
Сообщения: 7
Зарегистрирован: Вт мар 15, 2016 20:09:33

Сообщение JustinTime »

Alex_Golubev писал(а):Нет у меня также PAGE NOT FOUND.
Оказывается, если повторно зайти на страницу загрузки (кликнув еще раз на ссылку, присланную в письме в ответ на заполнение формы получения софта), то на второй раз все срабатывает...
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

Полез перепроверять еще раз и к своему стыду нашел, где у меня шла потеря точности. Теперь вижу, что Avg_Slope в снайпетах вычисляется правильно и значение температуры эта функция возвращает правдоподобное. Таким образом, все указывает на то, что TS_CAL2 реально существует, хоть в мануале и не описана.

Насчет забывчивости производителя, как-то теперь мне начинает казаться, что это особого вида маркетинговая забывчивость, стимулирующая потребителя покупать более дорогие модели, где производитель ухитрился "забыть" значительно меньше. Вообще-же, глядя на область памяти, где эти самые TS_CALx храняться, создается впечатление, что там еще чего-нибудь забытого может отыскаться.

Изображение
Вложения
2016-04-10_220836.jpg
(81.84 КБ) 1168 скачиваний
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

Сообщение pokk »

Подскажите какие дополнительные возможности открывает отладка stm32 через jtag вместо swd?
В общем в чем разница?
Ответить

Вернуться в «ARM»