Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32 – вопросы – проблемы - решения.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
ViKo
Цитата(Сергей Борщ @ Feb 2 2012, 17:26) *
Итого: BRR = 22*16 + 12 = 364. Две записи в регистр, одно чтение и операция "Или".
(42e6 * 16)/(16*115200) = 42e6 / 115200 = 364. Мистика, не правда ли?
...
Одна запись в регистр. Не трогая калькулятор. И если скорость или частоту изменить понадобится - тоже калькулятор не понадобится, не говоря уже о том, чтобы внимательно просматривать весь исходник в поисках таких магических цифр как ваши 22 и 12.

Есть тонкость, связанная с нецелым делением частоты на скорость. Я тоже делил просто:
Код
USART2->BRR = (36000000 / 57600);

Получалось число без остатка (625), все работало идеально.
Но когда пришлось делить 32000000 на 57600, получилось 555,555... И это число желательно округлить до 556, тогда ошибка будет меньше. Делаю так (прибавляю 0,5 к результату, потом дробную часть теряю):
Код
USART1->BRR = (((32000000<<1) / 57600) + 1)>>1;

В результате загружается 556 = 0x22C. В мануале RM0038 на STM32L151 именно это число, разбитое на 0x22 (37) и 0xC (0,75), показано в таблице 129.
Вашему числу, кстати, тоже единички недостает. sm.gif
scifi
Тогда уж лучше так:
Код
USART2->BRR = (36000000 + 57600 / 2) / 57600;

Нагляднее, мне кажется.
А вообще разница между 555 и 556 настолько мала, что и говорить не о чем :-)
ViKo
Цитата(scifi @ Mar 25 2012, 22:18) *
Тогда уж лучше так:
А вообще разница между 555 и 556 настолько мала, что и говорить не о чем :-)

Да, пожалуй. А разница разнице рознь. sm.gif На высоких скоростях при малых частотах уже может быть заметно.
MiklPolikov
Говорят на сайте производителя должна быть библиотека и примеры для STM32L151 . Даёте пожалуйста ссылку по которой её можно скачать.
В гугле по запросу "standard peripheral library stm32" нашёл вот это
http://62.193.238.133/inchtml.php?fdir=pag...p;fnam=stm32lib
Но скачать не могу , говорит "Not Autorized" , хотя я зарегистрировался.
Murk
MiklPolikov Попробуй тут поискать. http://www.st.com/internet/mcu/family/141.jsp
MiklPolikov
Нашёл, спасибо.


Ещё вопрос : выполнил какой-то код, который видимо изменил настройки тех пинов на которых jtag . И при попытке прошить по jtag стала вылезать ошибка jtag comunication failure .
В прошлые разы получалось сбросить питание и сделать FLASH > ERASE . А сейчас всё равно говорит jtag comunication failure .
Как вернуть процессор в рабочее состояние ?
smk
Там от состояния выводов BOOT0 и BOOT1 все зависит.
MiklPolikov
Цитата(smk @ Apr 8 2012, 15:33) *
Там от состояния выводов BOOT0 и BOOT1 все зависит.


У меня BOOT0 на земле, а BOOT1 висит в воздухе. Это означает Main Flash memory is selected as the boot space . А что ещё делать с BOOT , что бы работать по jtag ?

И ещё попрос : почему процессор STM32L151CBU6 вылетает из отладки и keil начинает ругатся на jtag communication falure после вот этой строчки , которая не влияет на пини jtag ?
Все остальные подобные строчки проходятся.

GPIOA->BSRRL=GPIO_BSRR_BS_2 ;
MiklPolikov
Ткнул тестером - оказалось процессор держит NRST в низком уровне. Хотя только что работал . Что с ним случилось ?
bingo
Делаю первые отладки на IAR EWARM v6.21 для STM32F105BG
Вопрос по отладке с помощью Simulator
Не получается запустить счетчик (TIM2 и др.пробовал).
На "живом" CPU ч/з SWD - все работает , счетчик считает отлично. Т.е. TIM2_CNT при каждой остановке показывет насчитананное.
Перехожу на отладку симулятором IAR. Счетчик стоит как замороженный.
Пробовал примеры из библиотеки, а также просто вызовами ф-ций станд.периф. библиотеки. Не хочет считать!
Теперь упростил до минимума- все равно не считает!
Вот упрощенный до предела кодик:

int main(void){

RCC->APB1ENR |= (uint32_t)0x00000001;
TIM2->CR1 |= (uint32_t)0x00000001;
while (1) { }

}

TIM2_CNT не хочет изменяться, стоит на 0.

Подскажите пжста в чем загвоздка?
sad.gif

smk
Цитата(MiklPolikov @ Apr 8 2012, 15:39) *
У меня BOOT0 на земле, а BOOT1 висит в воздухе. Это означает Main Flash memory is selected as the boot space . А что ещё делать с BOOT , что бы работать по jtag ?

Да, я ошибся. На счет ресета, так он может быть подкорочен внутренним транзистором. А условия для внутреннего сброса смотрите в контексте Вашей ситуации.
Сергей Борщ
QUOTE (bingo @ Apr 9 2012, 08:44) *
Вопрос по отладке с помощью Simulator
Не получается запустить счетчик (TIM2 и др.пробовал).
.....
Подскажите пжста в чем загвоздка?
Загвоздка в том, что вы поленились прочитать документацию на симулятор IAR (C-SPY). В ней английским по белому написано, что симулятор симулирует только ядро, и никак не симулирует периферию.
bingo
Цитата(Сергей Борщ @ Apr 9 2012, 18:15) *
Загвоздка в том, что вы поленились прочитать документацию на симулятор IAR (C-SPY). В ней английским по белому написано, что симулятор симулирует только ядро, и никак не симулирует периферию.


Спасибо!

Хотя это несколько не ожиданно!
Это резко затрудняет отладочный процесс. Особенно при отсутствии рабочей платы

C-Spy читал , но повидимому не достаточно внимательно. Не ожидал такого подхода со стороны IAR!
:-(
bingo
Цитата(Сергей Борщ @ Apr 9 2012, 17:15) *
Загвоздка в том, что вы поленились прочитать документацию на симулятор IAR (C-SPY). В ней английским по белому написано, что симулятор симулирует только ядро, и никак не симулирует периферию.


Для того, чтобы разобраться взял "C-SPY® Debugging Guide"
В нем, в разделе "The IAR C-SPY Simulator - FEATURES" стр.38 четко написано:

"...In addition to the general features in C-SPY, the simulator also provides:
...
Peripheral simulation (using the C-SPY macro system in conjunction with immediate breakpoints).
.."

Не смогли бы Вы мне уточнить, где же написано про отсутствие поддержки периферии в Simulator?
Буду Вам благодарен!

:-)
Сергей Борщ
QUOTE (bingo @ Apr 10 2012, 03:59) *
Для того, чтобы разобраться взял "C-SPY® Debugging Guide"
В нем, в разделе "The IAR C-SPY Simulator - FEATURES" стр.38 четко написано:

"...In addition to the general features in C-SPY, the simulator also provides:
...
Peripheral simulation (using the C-SPY macro system in conjunction with immediate breakpoints).
.."
Вот именно. Если вы прочитаете описание этой macro system, то поймете, что вам предлагается использовать макросы C-SPY чтобы самому этими макросами описать поведение вашей периферии. И что же вы будете отлаживать - свою программу или свою модель периферии процессора из этих макросов? Это если у вас хватит терпения описать на этих макросах хотя бы один периферийный модуль.
QUOTE (bingo @ Apr 10 2012, 03:59) *
Не смогли бы Вы мне уточнить, где же написано про отсутствие поддержки периферии в Simulator?
Как раз в отцитированном вами фрагменте.
bingo
Цитата(Сергей Борщ @ Apr 10 2012, 08:59) *
Вот именно. Если вы прочитаете описание этой macro system, то поймете, что вам предлагается использовать макросы C-SPY чтобы самому этими макросами описать поведение вашей периферии. И что же вы будете отлаживать - свою программу или свою модель периферии процессора из этих макросов? Это если у вас хватит терпения описать на этих макросах хотя бы один периферийный модуль.
Как раз в отцитированном вами фрагменте.


Спасибо!
MiklPolikov
Разбираюсь с прерываниями, хочу сделать прерывание от TIM7

Вопрос : почему в документации RM0038 Reference manual в разделе interrupts and events нет ничего про регистры NVIC ?
Там только про регистры EXTI , но ведь это контролер прерываний от портов.
mcheb
Цитата(MiklPolikov @ Apr 11 2012, 05:19) *
Разбираюсь с прерываниями, хочу сделать прерывание от TIM7

Вопрос : почему в документации RM0038 Reference manual в разделе interrupts and events нет ничего про регистры NVIC ?
Там только про регистры EXTI , но ведь это контролер прерываний от портов.

Надо обратиться к документу PM0056 STM32F10xxx/20xxx/21xxx/L1xxxx Cortex-M3 programming manual раздел NVIC
demiurg_spb
Цитата(mcheb @ Apr 11 2012, 08:58) *
Надо обратиться к документу PM0056 STM32F10xxx/20xxx/21xxx/L1xxxx Cortex-M3 programming manual раздел NVIC
Ибо NVIC в кортексах разработан ARM как и само ядро, поэтому и дока на них общая.
MiklPolikov
Спасибо.
Ещё вопрос : почему в файле кейла stm32l1xx.h нет определений регистров NVIC например ISER, ICER и др , хотя определения их битов - есть ?
ReAl
Сами регистры — часть NVIC, который, как уже сказали, сделан ARM-ом, а не ST. Региcтры определены в core_cm3.h от ARM, в структуре NVIC_Type. Там же привязка структуры к адресу. stm32l1xx.h должен сам делать #include core_cm3.h
А вот биты — какая периферия приписана к какому входу NVIC — это уже ответственность ST, они у себя и описали.
MiklPolikov
Вопрос по потреблению :

Почему у STM32L151 при частоте 2МГц и отключенных тактированиях всей периферии потребление 3мА ? Документация обещает 233мкА/МГц , стало быть потребление должно быть 466мкА .

bingo
Подскажите пожалуйста, сколько раз можно перепрограммировать flash память?
Например, для Atmel AVR эта цифра указана явно - ~10 000 раз
Для STM32 я такого параметра не встречал
Наверное это также важно и для эмуляции EEPROM на встроенной flash-памяти
demiurg_spb
AN2594 Application note
EEPROM emulation in STM32F101xx and STM32F103xx microcontrollers
Цитата
3.2 Wear leveling: Flash memory endurance improvement
In the STM32F10xxx on-chip Flash memory, each page can be programmed or erased reliably around 10 000 times.
skripach
Где-то обсуждали, не могу найти.
Можно ли сделать USB connect(резистор 1.5к) без транзисторов тупо выводом контроллера?
MiklPolikov
Цитата(skripach @ Apr 15 2012, 12:43) *
Можно ли сделать USB connect(резистор 1.5к) без транзисторов тупо выводом контроллера?

На AT91SAM7 всегда так делал. Не вижу причин по которым это может незаработать.
KnightIgor
Цитата(skripach @ Apr 15 2012, 10:43) *
Можно ли сделать USB connect(резистор 1.5к) без транзисторов тупо выводом контроллера?

Можно вполне. Транзистор (PNP или P-MOS) берут, по моему мнению, по двум причинам:
- в силу традиции включать некий сигнал активно логическим "0" (не все микроконтроллеры переводят свои порты в высокоимпедансное состояние по сбросу, некоторые - в "слабую" "1");
- дабы "изолировать" длиную линию USB от микроконтроллера и исключить повреждение его порта помехами.
MiklPolikov
Хочу включить в микроконтролере спящий режим, но Keil ругается

CPU_hard.c(248): error: #1113: Inline assembler not permitted when generating Thumb code

на строку

__asm {wfi};

От галочки thumb mode в настройках проекта ничего не меняется .
Что сделать, что бы keil не ругался ?
vlad_new
#include <stm32f10x_lib.h> // STM32F10x Library Definitions
#include "STM32_Reg.h" // Missing bit definitions
...
PWR->CR |= PWR_Regulator_LowPower; // In the STOP mode in low power mode
__WFE(); // Stop
MiklPolikov
Цитата(vlad_new @ Apr 15 2012, 17:27) *
#include <stm32f10x_lib.h> // STM32F10x Library Definitions
#include "STM32_Reg.h" // Missing bit definitions
...
PWR->CR |= PWR_Regulator_LowPower; // In the STOP mode in low power mode
__WFE(); // Stop


Спасибо, получилось !
В файле core_cmInstr.h написано #define __WFI __wfi
но __wfi вроде бы ни где не определён. Выходит что __wfi - это команда , которую понимает Keil ?
demiurg_spb
Цитата(MiklPolikov @ Apr 15 2012, 15:30) *
CPU_hard.c(248): error: #1113: Inline assembler not permitted when generating Thumb code
на строку
__asm {wfi};
От галочки thumb mode в настройках проекта ничего не меняется .
Что сделать, что бы keil не ругался ?
Читать доки.
В Keil для тумбы-2 (иначе говоря для кортексов) недопустимы асм вставки вообще, но допустимы асм-функции. Например:
Код
static __inline __asm uint32_t get_interrupt_state(void)
{
    mrs r0, primask
    bx lr
}

Цитата(MiklPolikov @ Apr 15 2012, 18:27) *
Выходит что __wfi - это команда , которую понимает Keil ?
Считайте что так.
http://www.keil.com/support/man/docs/armcc...cc_CHDFGFAB.htm
IgorKossak
90% сообщений в этой теме носят общий характер и лишь косвенно соответствуют её названию.
Закрываю и переношу в шапку раздела.
Модератор.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.