Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32 – вопросы – проблемы - решения.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Danis
Цитата(AHTOXA @ Jun 29 2011, 22:24) *
Что касается тактирования - я ничего специально не включал и не отключал, работал от HSE.


Не помню точно в какой ветке, но я где-то на форуме читал обсуждения, якобы STM32 можно просто «убить» при едино разовом не корректном обращении с flash, камень потом перестает программироваться, читаться и т.п. В чем там прикол? Или просто слухи?
AHTOXA
Я тоже это читал. К сожалению, точные причины/алгоритм "убиения" там не были описаны, так что пока считаю на уровне слухов.
Кстати, в примере от ST (AN2557 - "in-application programming using the USART") тактирование также производится от HSE.
demiurg_spb
УРААА!!!! Заработала хреновина!
Я слопушил - адрес страницы для стирания это адрес её первого байта а не порядковый номер страницы как я подумал.
Получалось что моя программа сама себя затирала. Вот такой вот заскок мозга случился.
Всем большущее спасибо за участие! cheers.gif

Извлёк урок: Чтобы такого геморроя с отладкой не было нужно сразу ставить защиту от стирания на область прошивки и быть внимательнее.
Вот выстраданное:
Код
int flash_page_erase(uint32_t page_address) // page_address not page_number
{
    static const uint32_t FPEC_KEY1 = 0x45670123;
    static const uint32_t FPEC_KEY2 = 0xCDEF89AB;

    int res;

    ENTER_CRITICAL_SECTION();
    {
        FPEC->KEYR = FPEC_KEY1;     // Authorize the FPEC Access
        FPEC->KEYR = FPEC_KEY2;

        while (FPEC->SR & FPEC_SR_BSY) {;}

        FPEC->SR = FPEC_SR_EOP | FPEC_SR_WRPRTERR | FPEC_SR_PGERR; // clr bits by writing 1
        FPEC->CR = FPEC_CR_PER;                // page erase operation w/o fpec interrupts
        FPEC->AR = page_address;               // page address
        FPEC->CR = FPEC_CR_STRT | FPEC_CR_PER; // start operation    
        FPEC->SR;                               // according to errata: must be dummy cycle before polling BSY after START operation

        while (FPEC->SR & FPEC_SR_BSY) {;}

        res = ((FPEC->SR & FPEC_SR_EOP)  != 0);// EOP is asserted at the end of each successful program or erase operation

        FPEC->CR = FPEC_CR_LOCK;  // Set the Lock Bit to lock the FPEC and the FCR
    }
    LEAVE_CRITICAL_SECTION();

    return (res);
}
Flexz
В каком порядке ST нумерует ревизии чипов?
У меня stm32f217 rev Z, а в доках фигурирует только Y, кто из них новее?
Danis
Цитата(AHTOXA @ Jun 30 2011, 09:40) *
Я тоже это читал. К сожалению, точные причины/алгоритм "убиения" там не были описаны, так что пока считаю на уровне слухов.
Кстати, в примере от ST (AN2557 - "in-application programming using the USART") тактирование также производится от HSE.



Поработал с Flash, вроде бы все нормально и адекватно. Смотрел примеры из периферийной библиотеки, официальный Programming manual и код пользователя AHTOXA. Кстати в Programming manual клик все таки оговаривается о HSI на стр.10:
”For write and erase operations on the Flash memory (write/erase), the internal RC oscillator (HSI) must be ON.”
Но я просто тактировал от HSE, и все нормально было, надобы разобраться что за там прикол. Скорее «убиени проца» у людей происходило из за многократного стирания/записи flash в цикле, просто выработали ресурс поди.

Цитата(demiurg_spb @ Jun 30 2011, 10:55) *
Код
             ...........................................
    ENTER_CRITICAL_SECTION();
             ...........................................
    LEAVE_CRITICAL_SECTION();
}


Что там определено, можете привести эти функции?
demiurg_spb
Цитата(Danis @ Jul 1 2011, 14:26) *
Что там определено, можете привести эти функции?
Пожалуйста.
Код
#ifndef _ATOMIC_H_
#define _ATOMIC_H_

#ifdef __cplusplus
  extern "C" {
#endif

//=============================================================================
static __asm __inline uint32_t get_interrupt_state(void)
{
    mrs r0, primask
    bx lr
}

//=============================================================================
static __asm __inline void set_interrupt_state(uint32_t status)
{
    msr primask, r0
    bx lr
}

#define ENTER_CRITICAL_SECTION()  do {uint32_t sreg_temp = get_interrupt_state(); __disable_irq()
#define LEAVE_CRITICAL_SECTION()  set_interrupt_state(sreg_temp);} while (0)

#ifdef __cplusplus
  }
#endif

#endif


Цитата(Danis @ Jul 1 2011, 14:26) *
Кстати в Programming manual клик все таки оговаривается о HSI на стр.10
Да я об этом писал несколькими постами ранее.
Pat
Цитата(Danis @ Jun 30 2011, 07:04) *
Не помню точно в какой ветке, но я где-то на форуме читал обсуждения, якобы STM32 можно просто «убить» при едино разовом не корректном обращении с flash, камень потом перестает программироваться, читаться и т.п. В чем там прикол? Или просто слухи?


Сделал собственный бутлоадер. При простой записи ничего с флешью не происходит, при оладке кода некоректности было много, но все решалось
простой перепрошивкой в отладчике.

Когда начал прорабатывать варианты зашиты кода, вот тут впервые немного поволновался.
После установки битов зашиты записи отладчик контроллер не увидел, думал все приплыли надо перепаивть.
Но потом SEGGER J-Flash ARM меня спас, закладка Target->Unsecure chip.

Так что не получилось пока убить флеш.

Пытался использовать USER option byte, но крайне неудобно сделано, особенно если использовать совместно с write protect и закрытым загрузчиком.
Думаю пока хватит одной защиты от чтения.

MK2
Заинтересовал вопрос прошивки stm32f217 через USB, там вроде как в нем есть встроенный загрузчик DFU
но что-то ни в одном документе "USB DFU protocol used in the STM32™ bootloader" и "STM32™ microcontroller system memory boot mode" и на сайте стм не нашел ничего про прошивающий софт?! Есть ли для DFU что-то типа Flash_Loader_Demonstrator_v2.2.0_Setup ?
MK2
Цитата(Flexz @ Jul 9 2011, 23:49) *


Спасибо большое, ща тоже нашел её в Design support у 103 их
Но что-то странно к 217 стмцы не выкладывают, а в файле что идет в архиве написано что тока недавно появилась поодержка Connectivity Line, хотя они вроде как древние
кто-нить испытывал прогу на F2 ?
Flexz
DfuSe на 217 не испытывал, нужды не было пока. Но во-первых у f2xx и f105/f107 одинаковый модуль USB OTG FS (сам использую библиотеки от connectivity line для F217) а во-вторых описание DFU общее на всех. Так что не вижу препятствий.
wedmeed
Какие еще программы существуют для прошивки стандартным бутлоадером кроме Flash Loader Demonstrator? Им прошить не получается - говорит то устройства нет, то что не попал в секцию первичного загрузчика, то команда неизвестная. На разные комбинации бута0 и ресета реагирует по-разному (т.е. контроллер живой), повторяемость 100%. В идеале хотелось бы посмотреть логи попыток прошивки (может быть вариант в непропае ножек).

МК - stm32f100
Может кто из старших видео снимал когда-либо. или схемками может поделиться - буду очень признателен!!!

Вот моя схемка. На ней перепутаны rx и tx между переходником и контроллером. но на практике собрал правильно.
Нажмите для просмотра прикрепленного файла
Danis
Цитата(wedmeed @ Jul 15 2011, 01:58) *
Какие еще программы существуют для прошивки стандартным бутлоадером кроме Flash Loader Demonstrator?


Думаю, другая программа Вам не поможет, проблема явно не в ней. Советую осциллографом поработать и посмотреть, что там у Вас на линиях твориться, проверьте уровни, фронты обязательно. Если я правильно понял, MCP2200 у вас в качестве виртуального COM порта, если через него данные пытаетесь зашить, как раз он может быть источником проблемы. А схему лучше в jpg выкладывать.

alekseyb
Цитата(wedmeed @ Jul 15 2011, 06:58) *
Какие еще программы существуют для прошивки стандартным бутлоадером кроме Flash Loader Demonstrator? Им прошить не получается - говорит то устройства нет, то что не попал в секцию первичного загрузчика, то команда неизвестная. На разные комбинации бута0 и ресета реагирует по-разному (т.е. контроллер живой), повторяемость 100%. В идеале хотелось бы посмотреть логи попыток прошивки (может быть вариант в непропае ножек).

МК - stm32f100
Может кто из старших видео снимал когда-либо. или схемками может поделиться - буду очень признателен!!!

Вот моя схемка. На ней перепутаны rx и tx между переходником и контроллером. но на практике собрал правильно.
Нажмите для просмотра прикрепленного файла


RX МК нужно подтянуть к +3В через сопротивление примерно 10к, должно заработать.
И еще там есть исходники Flash Loader Demonstrator для работы с bootloader ,можно самому дописать что надо.
wedmeed
На выходных набрел на статью в эйзиэлектроникс про прошивку как раз моего чипа. Их рекомендации не помогли, но там была ссылка на програмку termit. Попробовал с помощью неё поговорить с контроллером - отвечает, причем на описанные в даташите комбинации - нормально. Про версию чипа прислал мне 0x1F1F. На комбинации, не описанные в даташите стабильно отвечает 0xFB, причем отвечает столько байт, сколько байт я ему и послал.

Цитата(alekseyb @ Jul 17 2011, 06:02) *
RX МК нужно подтянуть к +3В через сопротивление примерно 10к, должно заработать.

Спасибо, попробую.
Цитата(alekseyb @ Jul 17 2011, 06:02) *
И еще там есть исходники Flash Loader Demonstrator для работы с bootloader ,можно самому дописать что надо.

Насколько я понял - в исходниках только графическая оболочка, все остальное - в dll. Сам не смотрел, прочитал где-то на форумах. На досуге покопаюсь.

StAlexy
Товарищи, здорова!
Кто-нибудь работал на стм32ф107?
Затык с прерываниями!!
Не могу настроить прерывания от SPI и UART. Ну SPI ладно, выкрутился без прерываний, на уарт никак!!
Главное от таймера2 работает прерывание по обнулению!

Проблема:
инициализирую клок для проца и всего остального:
Код
  RCC_HSEConfig(RCC_HSE_ON);  
  RCC_WaitForHSEStartUp();
  
  RCC_HCLKConfig(RCC_SYSCLK_Div1);
  RCC_PLLConfig(RCC_PREDIV1_Source_HSE,RCC_PLLMul_4);
  RCC_PCLK1Config(RCC_HCLK_Div1);
  RCC_PCLK2Config(RCC_HCLK_Div1);
  
  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
  RCC_PLLCmd(ENABLE);
  
  //ïîäàåì òàêòîâûé ñèãíàë íà ïîðòû
  //RCC_AHBPeriphClockCmd ( );  
  
  RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE);
  
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE);  
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
  
  SystemInit();


Далее инициализация USART2:
Код
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Pin =GPIO_Pin_2;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Pin =GPIO_Pin_3;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
  
  NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
  
  USART_InitStructure.USART_BaudRate = 9600;
  USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  USART_InitStructure.USART_StopBits = USART_StopBits_1;
  USART_InitStructure.USART_Parity = USART_Parity_Even;
  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  USART_Init(USART2, &USART_InitStructure);  

  USART_ClearFlag(USART2,USART_FLAG_TC);  
  USART_ClearITPendingBit(USART2,USART_IT_TC);
  
  USART_ITConfig(USART2, USART_IT_TC, ENABLE);

  USART_Cmd(USART2, ENABLE);


...и все. Здесь уже висит.
В программу прерывания не заходит:
Код
void USART2_IRQHandler(void)
{
  if(USART_GetITStatus(USART2,USART_IT_RXNE)==SET)  
  {
    USART_ClearFlag(USART2,USART_FLAG_RXNE);    
    USART_ClearITPendingBit(USART2,USART_IT_RXNE);    

  }

  if(USART_GetITStatus(USART2,USART_IT_TC)==SET)  
  {
    if (GPIO_ReadOutputDataBit(GPIOC,GPIO_Pin_8) == 1) GPIO_ResetBits(GPIOC,GPIO_Pin_8);
    else GPIO_SetBits(GPIOC,GPIO_Pin_8);
    
    USART_ClearFlag(USART2,USART_FLAG_TC);    
    USART_ClearITPendingBit(USART2,USART_IT_TC);
  }
}


Может чо-то где забыл поставить в заголовочных файлах?
Подскажите, если кто через такое проходил?

Главное, на 103-м такое прерывание работает!!
wedmeed
Во! Только что на работе нашел осциллограф и нормальную програмку для UARTа. Пообщаться с бутлоадером получилось, но вот в чем беда:
для того, чтобы бутлоадер в МК понял команду, помимо идентификатора команды ему надо послать ее инверсию следующим байтом (01 - FE). Если посылать байты поочередно - все гуд. Если послать байты сразу - на первую попытку молчит, на вторую выдает ошибку. Получается он не успевает впоймать второй байт. Попробовал ставить 2 стоповых бита - не видит второй байт. Попробовал вставить между этими двумя байтами 0xFF - заработало! Картина стала такова: МК ловит первый байт, стартового бита второго байта не видит, дальше идут 1, которые МК воспринимает как молчание на линии, дальше ловит третий байт, считая его вторым.

Вопрос - почему МК не воспринимает нормально следующие сразу друг за другом байты?
Oleg Galizin
Цитата(wedmeed @ Jul 18 2011, 09:50) *
На выходных набрел на статью в эйзиэлектроникс про прошивку как раз моего чипа.
Про версию чипа прислал мне 0x1F1F.

Вот эти два предложения противоречат друг другу. С одной стороны чип тот же, с другой - другой идентификатор.
1F1F выглядит странно. Попробуйте уменьшить скорость порта.
Twen
Добрый день. У меня возникла следующая проблема, есть 2 программатора : внешний ST-LINK(рис.1) и универсальный J-link(рис.2) под ядра ARM.

St-Link-ом не получается прошить микроконтроллер stm32L152, а j-Link-ом шьется без проблем...при чем когда шью ST-link-ом, загрузка как бы начинается, но потом все виснет...

Может кто-нибудь сталкивался с этой проблемой...
Спасибо.
StAlexy
Все, нормально, починилось! 08.gif
Действительно, как писал кто-то выше, надо просто выспаться!
Aaron
Цитата(StAlexy @ Jul 19 2011, 07:05) *
Все, нормально, починилось! 08.gif

Вы бы поделились, в чём косяк был. А то такие куски кода выложили...
Alhen
У меня проблема с компиляцией простейшей тестовой программки для STM32 Discovery под IAR-ом V6.2.
Код нормально компилился под 5.5, но после установки 6.2 ругается:

Error[Pe337]: linkage specification is incompatible with previous «__WFI»……и т.д.

Эта ошибка появляется для проекта С++, под С ошибки другого характера.
Помогите побороть пожалуйста! (может это как-то связано с CMSIS?)
A. Fig Lee
Цитата(wedmeed @ Jul 18 2011, 08:32) *
Во! Только что на работе нашел осциллограф и нормальную програмку для UARTа. Пообщаться с бутлоадером получилось, но вот в чем беда:
для того, чтобы бутлоадер в МК понял команду, помимо идентификатора команды ему надо послать ее инверсию следующим байтом (01 - FE). Если посылать байты поочередно - все гуд. Если послать байты сразу - на первую попытку молчит, на вторую выдает ошибку. Получается он не успевает впоймать второй байт. Попробовал ставить 2 стоповых бита - не видит второй байт. Попробовал вставить между этими двумя байтами 0xFF - заработало! Картина стала такова: МК ловит первый байт, стартового бита второго байта не видит, дальше идут 1, которые МК воспринимает как молчание на линии, дальше ловит третий байт, считая его вторым.

Вопрос - почему МК не воспринимает нормально следующие сразу друг за другом байты?

parity какой? должен быть even, наскоко помню
StAlexy
Цитата
Вы бы поделились, в чём косяк был. А то такие куски кода выложили...

Решение оказалось очень простым:
1. Инициализацию не трогал.
2. Удалил из проекта stm32f10x_it.h и stm32f10x_it.c
И все заработало.

Видимо "процессор" обращался в эти файлы за подпрограммой обработки прерывания и не находил ее.
Следовательно, зависание.

Без них все работает просто отлично!
Flexz
Ну тогда уж наоборот - обращался и находил, но не ту которую вы ожидали (ваша обработка прерываний, видимо, в другом файле, так?). Сдается мне, что кто-то игнорирует ворнинги sm.gif
StAlexy
Цитата
Сдается мне, что кто-то игнорирует ворнинги sm.gif

Обижаете, товарищ!
Не было ворнингов.
Именно поэтому долго не мог допереть.
Пишу в ЫАРе.
Цитата
Ну тогда уж наоборот - обращался и находил, но не ту которую вы ожидали (ваша обработка прерываний, видимо, в другом файле, так?).

Да, обработка прерываний в main.c.
В *_it.h и *_it.c нет и не было строчки "void USART2_IRQHandler(void);"!

Компилер почему-то лезет в *_it.h и *_it.c, игнорируя п/п прерывания в main.c!
Отключил *_it.h и *_it.c - тогда заработало laughing.gif
wedmeed
Цитата(A. Fig Lee @ Jul 20 2011, 07:15) *
parity какой? должен быть even, наскоко помню


именно такой и есть
uu5jkb
Привет всем.
А можно от STM32F10x получить с какой-нибудь ноги клок 32 кГц от его LSE с часовым кварцем, да еще и чтобы в standby mode работал? Вычитал пока только про ногу RTC-TAMPER, на которую можно выпульнуть 32/64 кГц

Хотя, пораскинув мозгами, понял, что можно использовать ногу OSC32_OUT
KnightIgor
Цитата(uu5jkb @ Jul 20 2011, 15:46) *
Привет всем.
А можно от STM32F10x получить с какой-нибудь ноги клок 32 кГц от его LSE с часовым кварцем, да еще и чтобы в standby mode работал? Вычитал пока только про ногу RTC-TAMPER, на которую можно выпульнуть 32/64 кГц

Хотя, пораскинув мозгами, понял, что можно использовать ногу OSC32_OUT

Поаккуратней с этой ногой: там слабый сигнал - чуть ткнул щупом, генератор заткнулся. Да и по уровню совсем не CMOS/TTL. Надо высокоомный компаратор подключать, с подстройкой уровня.
Serj78
Цитата(wedmeed @ Jul 18 2011, 16:32) *
Во! Только что на работе нашел осциллограф и нормальную програмку для UARTа. Пообщаться с бутлоадером получилось, но вот в чем беда:
для того, чтобы бутлоадер в МК понял команду, помимо идентификатора команды ему надо послать ее инверсию следующим байтом (01 - FE). Если посылать байты поочередно - все гуд. Если послать байты сразу - на первую попытку молчит, на вторую выдает ошибку. Получается он не успевает впоймать второй байт. Попробовал ставить 2 стоповых бита - не видит второй байт. Попробовал вставить между этими двумя байтами 0xFF - заработало! Картина стала такова: МК ловит первый байт, стартового бита второго байта не видит, дальше идут 1, которые МК воспринимает как молчание на линии, дальше ловит третий байт, считая его вторым.

Вопрос - почему МК не воспринимает нормально следующие сразу друг за другом байты?


Очень вероятно, что он в это время подстраивает генератор usart-a. (скорость определяется автоматически).

Столкнулся с тем, что версии загрузчика, описанные на сайте ST и в чипах STM32F103- разные.
Антоха приводил ссылку несколькими страницами ранее на open sourse проект, который не работает с STM32F103, но прекрасно работает с F100.

У FlashLoader Demo есть версия для командной строки, на основе ее удобно делать приложения для прошивки. (просто запускаете батник). Или запускать ее из своей графической оболочки.


ReAl
Цитата(Serj78 @ Jul 24 2011, 08:48) *
Столкнулся с тем, что версии загрузчика, описанные на сайте ST и в чипах STM32F103- разные.
Антоха приводил ссылку несколькими страницами ранее на open sourse проект, который не работает с STM32F103, но прекрасно работает с F100.
Работает он с STM32F103, но только с достаточно новыми. Или, точнее, не работает со слишком старыми.
http://electronix.ru/forum/index.php?s=&am...st&p=952862

_____________
Вот таки зря такая длиннющая тема «про всё» сделана.
ELEKTROS
Добрый день, что то с АЦП не ладиться у меня пните в нужном направлении или подскажите что не так?
Код
  RCC->CFGR &= ~RCC_CFGR_ADCPRE;
  RCC->CFGR |= RCC_CFGR_ADCPRE_DIV2;
  RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;
  ADC1->CR1=ADC_CR1_SCAN|ADC_CR1_JAUTO;
  ADC1->CR2=ADC_CR2_ADON|ADC_CR2_CONT|ADC_CR2_JSWSTART;
  ADC1->SMPR2=ADC_SMPR2_SMP4_1|ADC_SMPR2_SMP5_1;
  ADC1->JSQR=ADC_JSQR_JL_0|ADC_JSQR_JSQ1_2|ADC_JSQR_JSQ2_0|ADC_JSQR_JSQ2_2;
  //// калибровка АЦП ////
  ADC1->CR2 |= ADC_CR2_RSTCAL;
  while ((ADC1->CR2 & ADC_CR2_RSTCAL) == ADC_CR2_RSTCAL);
  ADC1->CR2 |= ADC_CR2_CAL;
  while ((ADC1->CR2 & ADC_CR2_RSTCAL) == ADC_CR2_CAL);
  ADC1->CR2=ADC_CR2_ADON;

Хочу использовать ижекционных канала два 4 и 5-й в непрерывном преобразовании.
потом считываю просто из регистров ADC_JDR1_JDATA и ADC_JDR2_JDATA в любой момент времени. А там постоянно висят единицы.
IgorKossak
Цитата(ReAl @ Jul 24 2011, 09:51) *
Вот таки зря такая длиннющая тема «про всё» сделана.

Ах, как же я с Вами согласен!
Не очень прилично было бы говорить в таком случае автору "аятебечтоговорил". Но, чёрт возьми, АЯТЕБЕЧТОГОВОРИЛ!
Буду думать как весь этот хлам в божеский вид привести.
Danis
Цитата(IgorKossak @ Jul 27 2011, 12:26) *
Но, чёрт возьми, АЯТЕБЕЧТОГОВОРИЛ!


Ну, раз уж так, отцепите тему из шапки. Я не буду возражать. Вы мудрее и опытнее. Все таки, изначально я просил создать под форум STM32, и на мой взгляд это было бы куда лучше. В форуме ARM чуть ли каждая 3-я тема о STM32, с продвижением F2 их будет еще больше.
IgorKossak
Цитата(Danis @ Jul 28 2011, 21:24) *
В форуме ARM чуть ли каждая 3-я тема о STM32 ...

Другие две трети - это LPC и то, что от атмела, что тоже не мало.
Кроме того, существенная доля вопросов в этой теме относятся скорее к ядру Cortex-M3, к GCC, IAR, программированию вообще и т. д.
ReAl
Цитата(Danis @ Jul 28 2011, 21:24) *
Все таки, изначально я просил создать под форум STM32, и на мой взгляд это было бы куда лучше. В форуме ARM чуть ли каждая 3-я тема о STM32, с продвижением F2 их будет еще больше.
И в итоге в том отдельном подфоруме часть вопросов касалась бы не STM32, а CM3 вообще. Часть аналогичных вопросов по CM3 оказалась бы в подфоруме по LPC17 (ведь его тогда тоже нужно создать, не правда ли?). Итого всё равно смотреть всё.
А у тех же CM3-шных LPC17 периферия аналогична ARM7-ным LPC23/24, где тут резать?

На мой взгляд, гораздо лучше просто в теме указывать
STM32 - SPI - bla-bla-bla
CM3 (STM32) - NVIC - bla-bla-bla (тут конкретно у спрашивающего STM32, но с тем же успехом _ответить_ может пользователь LPC17, который в отдельный форум по STM32 может и не полезть).
CM3 - GCC - bla-bla-bla (а тут вообще STM32 равноправен с LPC17 и люминари)

Правда, это требует самодисциплины от участников форума, проще попросить администрацию сделать разметку...
smk
Крайне интересно опробовать STM32F100C4T6B. Пытаюсь определиться с IDE и прошиванием. Как я понял, Keil их не поддерживает? Есть ли у них встроеный бутлоадер и можно ли из шить через СОМ-порт (MAX232)? Спасибо.
scifi
Цитата(smk @ Aug 2 2011, 09:54) *
Крайне интересно опробовать STM32F100C4T6B. Пытаюсь определиться с IDE и прошиванием. Как я понял, Keil их не поддерживает? Есть ли у них встроеный бутлоадер и можно ли из шить через СОМ-порт (MAX232)? Спасибо.

Да, Keil поддерживает.
По поводу загрузчика - ну это просто неприлично. Вы бы хоть в даташит заглянули бы. Там чёрным по белому написано:
Цитата
The boot loader is located in System Memory. It is used to reprogram the Flash memory by using USART1. For further details please refer to AN2606.
smk
Цитата(scifi @ Aug 2 2011, 10:16) *
Да, Keil поддерживает.
По поводу загрузчика - ну это просто неприлично. Вы бы хоть в даташит заглянули бы. Там чёрным по белому написано:

На счет загрузчика виноват. Исправлюсь. По поддержке Keil: пытался завести новый проект и не нашел STM32F100. Keil uVision 4.00 . Может нужен новее?
scifi
Цитата(smk @ Aug 2 2011, 11:51) *
пытался завести новый проект и не нашел STM32F100. Keil uVision 4.00 . Может нужен новее?

В более новой версии должно быть. Можно и в старой, если там есть STM32F101. Они почти идентичны. STM32F100 чуть помедленнее и в нём добавлен ЦАП.
ViKo
Цитата(smk @ Aug 2 2011, 10:51) *
По поддержке Keil: пытался завести новый проект и не нашел STM32F100. Keil uVision 4.00 . Может нужен новее?

В версии 4.20 есть 19 типов STM32F100xx.
smk
Переставил на 4.21. Да, есть то, что надо, но не могу найти в примерах. В частности не ясно какой хидер подключать. Подскажите, кто в курсе. В примерах полазил, но ничего похожего не нащел. Спасибо.
ELEKTROS
по АЦП подскажет кто нить?
smk
При компиляции программы в Keil получаю вот такую ошибку:
Код
STM32F100.axf: Error: L6218E: Undefined symbol SystemInit (referred from startup_stm32f10x_ld_vl.o).

Как с этим бороться? Спасибо.
brag
Цитата(smk @ Aug 4 2011, 08:55) *
При компиляции программы в Keil получаю вот такую ошибку:
Код
STM32F100.axf: Error: L6218E: Undefined symbol SystemInit (referred from startup_stm32f10x_ld_vl.o).

Как с этим бороться? Спасибо.

найти в каком файле лежит функция SystemInit и подключить его.
smk
Я так понимаю, что всю периферию ST32F100 в симуляторе Keil посмотреть не удастся?
DeniDoman
Всем доброго времени суток.

Хочу создать проект в учебных целях. По сути - связка акселерометра + РФ-трансивер.

Соответственно, как только объект начинает двигаться, МК записывает к себе в память показания по осям XYZ, а раз в минуту - передает Большому Брату (второму устройству). Полагаю, при таком режиме, будет потребляться минимум энергии, т.к. питается все от "таблетки".

Акселерометром будет MMA7455L от Freescale, а вот над связкой MK+Радио надо подумать. Сначала выбор пал на CC2530 от TI. Но он на процессоре 8051, а хочется поработать с чем-то более современным (проект то учебный). Поэтому, взгляд переместился на STM32W108CB. Но появились вопросы.

1) Никогда не имел дела с программированием МК. Это будет очень "больно"? С чего начать?

2) СС2530 зашит в LGA корпус, а STM32W108CB - в VFQFPN. Как паять первый в домашних условиях - понятно, а вот про второй тип - слышу в первый раз. Реально его дома развести и припаять к плате? Фен и прочие радости жизни есть.

3) Наконец, правильный ли я сделал выбор? Может есть более подходящий SoC с радио? Но должно быть большое комьюнити, т.к. вопросов будет много sm.gif
smk
Я бы рекомендовал начать с LPC2103. Про них книжка есть, примеры от Keil просты и понятны. Макетку под их корпус тоже не трудно купить. Радиомодуль к нему докупите. Будет отличный набор чтобы попрактиковаться.
DeniDoman
Посмотрел, спасибо за совет, но мне нужно (в перспективе) минимизировать размеры устройства. Поэтому и хочу 2-в-1, да и внешнее радио - тоже может превратится в проблему. Но если совсем туго будет, то пожертвую размерами и так и поступлю.

Но пока что хотелось бы выбрать именно связку МК+Радио, просто по STM32W информации почти 0.
Aleksandr Baranov
Цитата(DeniDoman @ Aug 6 2011, 07:50) *
STM32W информации почти 0.

Я видел datasheet на 220 страниц
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.