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

Кто любит RISC в жизни, заходим, не стесняемся.
Foks
Поставщик валерьянки для Кота
Сообщения: 2108
Зарегистрирован: Пт авг 29, 2008 16:28:19
Откуда: Киев

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

Сообщение Foks »

Сравнивать значения АЦП? :shock: Там же шум присутствует.
Giggity giggity goo!
Реклама
TripleKill
Вымогатель припоя
Сообщения: 671
Зарегистрирован: Вт июн 29, 2010 12:31:49

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

Сообщение TripleKill »

Так они же одновременно снимаются, значит и шум одновременно попадает.
Реклама
Foks
Поставщик валерьянки для Кота
Сообщения: 2108
Зарегистрирован: Пт авг 29, 2008 16:28:19
Откуда: Киев

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

Сообщение Foks »

Но ведь разные каналы АЦП? Я бы не был так уверен, что шум там идентичен.
Giggity giggity goo!
TripleKill
Вымогатель припоя
Сообщения: 671
Зарегистрирован: Вт июн 29, 2010 12:31:49

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

Сообщение TripleKill »

В STM32F4 три модуля АЦП, которые могут работать независимо или одновременно.
В примере используются 2 модуля.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

И что? У двух совершенно разных АЦП должны совпасть шумы? С чего это? Шумы АЦП имеются ввиду, а не сигнала.
Реклама
TripleKill
Вымогатель припоя
Сообщения: 671
Зарегистрирован: Вт июн 29, 2010 12:31:49

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

Сообщение TripleKill »

Ой, а про них я и не подумал, каюсь.
Завтра же проверю, на сколько один от другого отстаёт. Именно разность в Watch поставлю.
Просто сами значения в дебагере отстоят друг от друга на достаточно большие значения. Не знаю, стоит ли ему верить.
Реклама
Foks
Поставщик валерьянки для Кота
Сообщения: 2108
Зарегистрирован: Пт авг 29, 2008 16:28:19
Откуда: Киев

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

Сообщение Foks »

Где-то здесь уже говорили, что при большой скорости обновления значений в памяти, дебаггер жутко врёт.
Лучше снимите пару периодов в память, затем остановите DMA и смотрите через дебаггер снятые значения.
Giggity giggity goo!
TripleKill
Вымогатель припоя
Сообщения: 671
Зарегистрирован: Вт июн 29, 2010 12:31:49

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

Сообщение TripleKill »

Разность показаний колеблется в пределах 0-2. Значит, всё нормально.
А вот сами показания в дебаггере так и различаются на 100-200.
TripleKill
Вымогатель припоя
Сообщения: 671
Зарегистрирован: Вт июн 29, 2010 12:31:49

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

Сообщение TripleKill »

Подскажите, а как можно замутить MAC (Multiply-Accumulate) на той же F4? В CMSIS есть функции вроде arm_mult_f32, но они пробегают по массивам, а не складывают всё в одну переменную.
Т.е. есть A[i]=B[i]*C[i], а надо A+=B[i]*C[i]. Куда копать?

Спасибо.
TripleKill
Вымогатель припоя
Сообщения: 671
Зарегистрирован: Вт июн 29, 2010 12:31:49

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

Сообщение TripleKill »

UPD: в кортексе M4 как таковом есть инструкции UMLAL, SMLAL, как раз для сложения с накоплением. Как бы заставить кейл их использовать? Или проще писать ассемблерную вставку?

UPD2: вроде разобрался. Нужно просто типы данных подобрать, компилятор додумается использовать одну инструкцию.

Изображение
Аватара пользователя
КАШАК
Это не хвост, это антенна
Сообщения: 1303
Зарегистрирован: Вс апр 19, 2009 17:20:22
Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик
Контактная информация:

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

Сообщение КАШАК »

Приобрел плату STM32 VL. Начал разбираться: помигал светодиодами, поопрашивал кнопки, запустил дисплей от NOKIA3310. В общем наигравшись решил перейти к более углубленному изучению. Первой строчкой попавшей в поле зрения оказалась

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

RCC->APB2ENR |= RCC_APB2ENR_IOPBEN;


После изучения различных примеров и описаний было установлено назначение данной строки, НО в этих самых предметах ни слова не было сказано почему надо тактировать выходы именно от APB2ENR. Дальнейшие поиски тоже ни к чему не привели. :cry: Вот мне и хотелось бы узнать назначение всех регистров RCC, а их там целых 10 штук:

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

  __IO uint32_t CR;
  __IO uint32_t CFGR;
  __IO uint32_t CIR;
  __IO uint32_t APB2RSTR;
  __IO uint32_t APB1RSTR;
  __IO uint32_t AHBENR;
  __IO uint32_t APB2ENR;
  __IO uint32_t APB1ENR;
  __IO uint32_t BDCR;
  __IO uint32_t CSR;


Заранее спасибо :)
Опыт растет прямо пропорционально выведенному из строя оборудованию...
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

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

Сообщение HHIMERA »

Смотрите Figure 1 и Figure 2 даташита... и содержимое файла stm32f10x.h...

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

/******************  Bit definition for RCC_APB2ENR register  *****************/
#define  RCC_APB2ENR_AFIOEN                  ((uint32_t)0x00000001)         /*!< Alternate Function I/O clock enable */
#define  RCC_APB2ENR_IOPAEN                  ((uint32_t)0x00000004)         /*!< I/O port A clock enable */
#define  RCC_APB2ENR_IOPBEN                  ((uint32_t)0x00000008)         /*!< I/O port B clock enable */
#define  RCC_APB2ENR_IOPCEN                  ((uint32_t)0x00000010)         /*!< I/O port C clock enable */
#define  RCC_APB2ENR_IOPDEN                  ((uint32_t)0x00000020)         /*!< I/O port D clock enable */
#define  RCC_APB2ENR_ADC1EN                  ((uint32_t)0x00000200)         /*!< ADC 1 interface clock enable */

#if !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD_VL)
#define  RCC_APB2ENR_ADC2EN                  ((uint32_t)0x00000400)         /*!< ADC 2 interface clock enable */
#endif

#define  RCC_APB2ENR_TIM1EN                  ((uint32_t)0x00000800)         /*!< TIM1 Timer clock enable */
#define  RCC_APB2ENR_SPI1EN                  ((uint32_t)0x00001000)         /*!< SPI 1 clock enable */
#define  RCC_APB2ENR_USART1EN                ((uint32_t)0x00004000)         /*!< USART1 clock enable */

#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL)
#define  RCC_APB2ENR_TIM15EN                 ((uint32_t)0x00010000)         /*!< TIM15 Timer clock enable */
#define  RCC_APB2ENR_TIM16EN                 ((uint32_t)0x00020000)         /*!< TIM16 Timer clock enable */
#define  RCC_APB2ENR_TIM17EN                 ((uint32_t)0x00040000)         /*!< TIM17 Timer clock enable */
#endif

#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL)
 #define  RCC_APB2ENR_IOPEEN                 ((uint32_t)0x00000040)         /*!< I/O port E clock enable */
#endif /* STM32F10X_LD && STM32F10X_LD_VL */

#if defined (STM32F10X_HD) || defined (STM32F10X_XL)
 #define  RCC_APB2ENR_IOPFEN                 ((uint32_t)0x00000080)         /*!< I/O port F clock enable */
 #define  RCC_APB2ENR_IOPGEN                 ((uint32_t)0x00000100)         /*!< I/O port G clock enable */
 #define  RCC_APB2ENR_TIM8EN                 ((uint32_t)0x00002000)         /*!< TIM8 Timer clock enable */
 #define  RCC_APB2ENR_ADC3EN                 ((uint32_t)0x00008000)         /*!< DMA1 clock enable */
#endif

#if defined (STM32F10X_HD_VL)
 #define  RCC_APB2ENR_IOPFEN                 ((uint32_t)0x00000080)         /*!< I/O port F clock enable */
 #define  RCC_APB2ENR_IOPGEN                 ((uint32_t)0x00000100)         /*!< I/O port G clock enable */
#endif

#ifdef STM32F10X_XL
 #define  RCC_APB2ENR_TIM9EN                 ((uint32_t)0x00080000)         /*!< TIM9 Timer clock enable  */
 #define  RCC_APB2ENR_TIM10EN                ((uint32_t)0x00100000)         /*!< TIM10 Timer clock enable  */
 #define  RCC_APB2ENR_TIM11EN                ((uint32_t)0x00200000)         /*!< TIM11 Timer clock enable */
#endif

"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
Солнцеворот
Встал на лапы
Сообщения: 141
Зарегистрирован: Вт июн 03, 2008 01:39:47

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

Сообщение Солнцеворот »

КАШАК писал(а):Приобрел плату STM32 VL. Начал разбираться: помигал светодиодами, поопрашивал кнопки, запустил дисплей от NOKIA3310. В общем наигравшись решил перейти к более углубленному изучению. Первой строчкой попавшей в поле зрения оказалась

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

RCC->APB2ENR |= RCC_APB2ENR_IOPBEN;


После изучения различных примеров и описаний было установлено назначение данной строки, НО в этих самых предметах ни слова не было сказано почему надо тактировать выходы именно от APB2ENR. Дальнейшие поиски тоже ни к чему не привели. :cry: Вот мне и хотелось бы узнать назначение всех регистров RCC, а их там целых 10 штук:
...

В Reference Manual написано какая периферия к какой шине тактирования подключена. Вы посмотрите бегло этот документ и поймете. Регистры RCC преимущественно для настройки частот тактирования разных шин и выбор источника тактирования для МК (внутренний или внешний кварц).
КАШАК писал(а): почему надо тактировать выходы именно от APB2ENR.
...

Потому что IOPBEN намертво прикреплен к шине APB2, и тактировать его можно только от нее. Вы не сможете затактировать этот модуль от другой шины, короче.
Аватара пользователя
КАШАК
Это не хвост, это антенна
Сообщения: 1303
Зарегистрирован: Вс апр 19, 2009 17:20:22
Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик
Контактная информация:

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

Сообщение КАШАК »

Спасибо :))
Опыт растет прямо пропорционально выведенному из строя оборудованию...
Аватара пользователя
Солнцеворот
Встал на лапы
Сообщения: 141
Зарегистрирован: Вт июн 03, 2008 01:39:47

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

Сообщение Солнцеворот »

КАШАК писал(а):Спасибо :))

Ставьте плюсик к сообщению, чтобы не засорять тему сообщениями благодарностей :music:
Аватара пользователя
КАШАК
Это не хвост, это антенна
Сообщения: 1303
Зарегистрирован: Вс апр 19, 2009 17:20:22
Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик
Контактная информация:

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

Сообщение КАШАК »

Пытаюсь разобраться с таймерами STM32 VL. Вроде все просто, но при этом ничего не работает :)))

Итак, я пишу:

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

#include "src/stm32f10x.h"

#define LED_ON  GPIOB->BSRR = 0x00000100
#define LED_OFF GPIOB->BSRR = 0x01000000

void TIM6_DAC_IRQHandler(void)
{
 //убедиться, что причина прерывания - событие от TIM6
 if(TIM6->SR & TIM_SR_UIF)
 {
   TIM6->SR &= ~TIM_SR_UIF;     //сбросить флаг
   LED_ON;
 }
}

int main(){

   RCC->APB2ENR |= RCC_APB2ENR_IOPBEN;

   GPIOB->CRH &=~ ( GPIO_CRH_CNF8 | GPIO_CRH_MODE8);
   GPIOB->CRH |= ( GPIO_CRH_MODE8_1);

   //настройка таймера TIM6
   RCC->APB1ENR |= RCC_APB1ENR_TIM6EN;     //подаем тактирование на TIM6
   TIM6->PSC = 24000-1;                    //настроить делитель для формирования миллисекунд
   TIM6->ARR = 500;                        //500 миллисекунд
   TIM6->DIER = TIM_DIER_UIE;              //разрешить событие от таймера
   TIM6->CR1 = TIM_CR1_CEN | TIM_CR1_ARPE; //разрешить перезагрузку и включить таймер
   NVIC_EnableIRQ (TIM6_DAC_IRQn);         //разрешить прерывания от таймера

   __enable_irq();                    //разрешить "глобальные" прерывания

   while(1){

   }

   return 0;
}


Вот этот самый код и не работает, прерывания не срабатывают, светодиод не светится. Что я делаю не так?

P.S.
Код пишу в Eclipse.
Опыт растет прямо пропорционально выведенному из строя оборудованию...
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

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

Сообщение Satyr »

В таблицу прерываний то TIM6_DAC_IRQHandler попадает ? :)))
Аватара пользователя
КАШАК
Это не хвост, это антенна
Сообщения: 1303
Зарегистрирован: Вс апр 19, 2009 17:20:22
Откуда: г.Ростов-на-Дону/г.Таганрог/г.Геленджик
Контактная информация:

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

Сообщение КАШАК »

А как это проверить? Пример брал из инета...

Ха. Если этот код скомпилировать в CooCox, то все работает. Вопрос, что за Х...???
Опыт растет прямо пропорционально выведенному из строя оборудованию...
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

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

Сообщение uk8amk »

Сравнить название обработчика с тем что прописано в стартапе. У меня бывало тоже не работали примеры скопипастенные с разных мест из за различий в названиях функций.
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

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

Сообщение Satyr »

Так стартап это тоже часть исходников (в не детских пакетах :))) ) так что смена компилятора на повторяемость результата влиять не должна -))
Ответить

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