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

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
Andrew Martin
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Вт июн 25, 2013 18:45:07

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

Сообщение Andrew Martin »

Отсутствие аппаратного отладчика заставляет тщательно и вдумчиво читать RMы и PMы, а не страдать ерундой вроде SPL и потом висеть на детских ошибках.

А на fault handlers сразу вешать включалки каких-нибудь индикаторов. Обратился по неправильному адресу - светодиод включился.
Через уарт тоже можно выбрасывать какие-то данные для отладки.

STM32 в отношении прошивки/отладки ушел гораздо дальше "народных" ПИКов и АВРов. Хорошая штука, к ним бы ещё симулятор...
Реклама
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

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

Сообщение a5021 »

Andrew Martin писал(а):Отсутствие аппаратного отладчика заставляет тщательно и вдумчиво читать RMы и PMы,
Самостоятельной ценностью это не является. В 99% случаях достаточно умения быстро найти необходимую информацию. Вред от отсутствия отладчика при разработке не может быть легко скомпенсирован зубрежкой манулов, т.к. значительная часть ошибок проистекает от невнимательности при написании кода.
STM32 в отношении прошивки/отладки ушел гораздо дальше "народных" ПИКов и АВРов. Хорошая штука, к ним бы ещё симулятор...
В протеусе появились модели АРМов, правда пока филипсовских. Cortex-M0 точно и вроде бы Cortex-M3 (пишу по памяти).
Реклама
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

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

Сообщение scorpi_0n »

Тормоза и глючность небось между собой соревнуются?
Аватара пользователя
Andrew Martin
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Вт июн 25, 2013 18:45:07

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

Сообщение Andrew Martin »

a5021 писал(а): В протеусе появились модели АРМов, правда пока филипсовских. Cortex-M0 точно и вроде бы Cortex-M3 (пишу по памяти).
Только М3. Толку от этого мало - ядро можно симулировать и в кейле, главная загвоздка - это периферия. А STM и разработчики протеуса видать не шибко сотрудничают.
Реклама
Эиком - электронные компоненты и радиодетали
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

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

Сообщение a5021 »

Не, сейчас специально полез посмотреть, есть там М0. Некий ряд LPC111x. M3 побогаче, т.к. кроме филипсов еще стеларисы и атмелы. Хоть я в этой братии не особо шарю, но в симуляции примера по стеларису он ногами шевелит, графики рисует.

Изображение

То, что нет стм-ов -- пичалька.
Вложения
stellaris.jpg
(135.91 КБ) 2058 скачиваний
Реклама
Аватара пользователя
Andrew Martin
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Вт июн 25, 2013 18:45:07

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

Сообщение Andrew Martin »

STM делает всякие кубы вместо действительно полезных вещей.

Какой версии у вас протеус?
Реклама
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

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

Сообщение scorpi_0n »

СТМ Кубом наркоманит новичков. И в этом СТМ знает своё дело. Это агрессивная политика завоевания рынка. Что толку от стеларисов, атмелов и филипков если их нет в местном ларе. А СТМ есть в ассортименте и по приемлемой цене. И что толку от них в протезе если у СТМ есть Куб которым можно что-то натыкать и получить какой-то результат. Всё это неспроста.
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

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

Сообщение baghear »

Добрый день, подскажите как правильно отправлять и считывать данные по SPI. Так как выводом CS управляю программно и флаг проверки занятости проверять при каждой посылке не желательно, делаю так

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

SPI_WRITE_DATA(uint8_t data)
{
    CS_LOW
    while(!(SPI2->SR & SPI_SR_TXE));
    SPI->DR = data;
    while(!(SPI2->SR & SPI_SR_RXE));
    data = SPI->DR;
    CS_HIGH
}

Код работает, интересует его правильность.
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

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

Сообщение scorpi_0n »

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

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

Сообщение a5021 »

Andrew Martin писал(а):STM делает всякие кубы вместо действительно полезных вещей.
Куб тоже может быть полезен. Ноги распределить, тактирование поразглядывать.
Какой версии у вас протеус?
8.3 SP 2
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

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

Сообщение Mishany »

Можно глупый вопрос?
обработчик прерывания CAN:
Спойлер

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

void USB_LP_CAN1_RX0_IRQHandler(void)
{
  CanRxMsg RxMessage;
  CAN_Receive(CAN1,CAN_FIFO0, &RxMessage);
  CAN_ID=RxMessage.StdId;
  CAN_DATA0=RxMessage.Data[0];
  CAN_DATA1=RxMessage.Data[1];
  CAN_DATA2=RxMessage.Data[2];
  CAN_DATA3=RxMessage.Data[3];
  CAN_DATA4=RxMessage.Data[4];
  CAN_DATA5=RxMessage.Data[5];
  CAN_DATA6=RxMessage.Data[6];
  CAN_DATA7=RxMessage.Data[7];
  CAN_ClearITPendingBit(CAN1,CAN_IT_FMP0);
}
можно ли забирать только несколько байт, а не все 8?
И еще, пока с фильтрами не разбирался, хотел в прерывании фильтровать ID из 30 нужны только 3 ID и в каждом от 1 до 3 байт.
А то все пока в главном цикле крутятся(по другому пока не умею).
Сам только c AVR слез, а тут пока конструкторы собираю из примеров (хотя бы работает :solder: ), потихоньку въезжая в тему.
Skitalec777
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт ноя 12, 2015 08:13:38

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

Сообщение Skitalec777 »

О сколько нам открытий чудных...
В процессе изучения ARM открываются все новые и новые факты, которые вынуждают постоянно корректировать свои планы. Например, оказалось, что имеется такая штука, как модуль операций с плавающей запятой, или FPU, который впервые появляется у Cortex-M4.

Скажите, пожалуйста, т.е. если я подключу датчик температуры к STM32F103, то смогу получать данные в виде, например, 36 С, а в виде 36,6 С не смогу? Или я что-то неправильно понял?

Заранее спасибо за ответ!
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

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

Сообщение scorpi_0n »

Надо отличать софтварное выполнение математических операций и хардварное. На всех линейках и даже на F4 (на F3 тоже есть) математика будет крутиться софтварно. На младших линейках чуть медленнее на старших быстрее из-за разницы команд ядра. На F4 (F3) есть ещё возможность включить и FPU. Это типа математического сопроцессора где некоторые математические операции будут выполняться хардварно на уровне ядра.
Skitalec777
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт ноя 12, 2015 08:13:38

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

Сообщение Skitalec777 »

scorpi_0n писал(а):Надо отличать софтварное выполнение математических операций и хардварное. На всех линейках и даже на F4 (на F3 тоже есть) математика будет крутиться софтварно. На младших линейках чуть медленнее на старших быстрее из-за разницы команд ядра. На F4 (F3) есть ещё возможность включить и FPU. Это типа математического сопроцессора где некоторые математические операции будут выполняться хардварно на уровне ядра.
Другими словами, у STM32F103 с десятыми долями все нормально? Просто немного медленнее?
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

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

Сообщение scorpi_0n »

Я бы сказал по другому. Не медленнее. Просто у МК с FPU математика с большим количеством вычислений будет быстрее. FPU для этого и затевалось когда вычислений уж слишком много и надо считать быстрее.
Skitalec777
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Чт ноя 12, 2015 08:13:38

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

Сообщение Skitalec777 »

scorpi_0n писал(а):Я бы сказал по другому. Не медленнее. Просто у МК с FPU математика с большим количеством вычислений будет быстрее. FPU для этого и затевалось когда вычислений уж слишком много и надо считать быстрее.
Теперь понял. Большое Вам спасибо за терпение и хорошее объяснение!
Аватара пользователя
Mishany
Электрический кот
Сообщения: 1031
Зарегистрирован: Чт июн 20, 2013 00:00:58
Откуда: москва, м.Сходненская

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

Сообщение Mishany »

Разобрался с CAN фильтром(скажем быдлокоду НЕТ!), делюсь рабочим примером, т.к. на просторах, как оказалось - это является большым секретом.
пропускает только 4 ID: 0x54A, 0x54B, 0x625, 0x23D
Спойлер

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

  CAN_FilterInitStructure.CAN_FilterNumber=1;
  CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;
  CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;
  CAN_FilterInitStructure.CAN_FilterIdHigh=0x54B<<5;
  CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;
  CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x54B<<5;
  CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;
  CAN_FilterInitStructure.CAN_FilterFIFOAssignment=0;
  CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;
  CAN_ITConfig(CAN1,CAN_IT_FMP0, ENABLE);
  CAN_FilterInit(&CAN_FilterInitStructure);
	///////////////////////////
	CAN_FilterInitStructure.CAN_FilterNumber=2;
  CAN_FilterInitStructure.CAN_FilterIdHigh=0x54A<<5;
  CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x54A<<5;
  CAN_FilterInit(&CAN_FilterInitStructure);
	//////////////////////////
	CAN_FilterInitStructure.CAN_FilterNumber=3;
  CAN_FilterInitStructure.CAN_FilterIdHigh=0x625<<5;
  CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x625<<5;
  CAN_FilterInit(&CAN_FilterInitStructure);
	//////////////////////////
	CAN_FilterInitStructure.CAN_FilterNumber=4;
  CAN_FilterInitStructure.CAN_FilterIdHigh=0x23D<<5;
  CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x23D<<5;
  CAN_FilterInit(&CAN_FilterInitStructure);
Аватара пользователя
Alexey_N
Сверлит текстолит когтями
Сообщения: 1273
Зарегистрирован: Вт фев 01, 2011 17:56:40
Откуда: г. Жуковка, Брянская обл.

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

Сообщение Alexey_N »

Разбираюсь тут с arm thumb инструкциями, не могу понять, есть ли инструкции, которыми можно оптимально организовать сравнение двух массивов байт, подобно, например rep scasb в x86, кроме как cmp?
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
Аватара пользователя
Andrew Martin
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Вт июн 25, 2013 18:45:07

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

Сообщение Andrew Martin »

Alexey_N писал(а):Разбираюсь тут с arm thumb инструкциями, не могу понять, есть ли инструкции, которыми можно оптимально организовать сравнение двух массивов байт, подобно, например rep scasb в x86, кроме как cmp?
В V7-M вроде нет.
Вообще есть документы для каждой линейки, наподобие PM0056.
Тут хотя бы в V6-M автоинкремент/автодекремент нормально запилили, а то ldm/stm только с 32-битными работает.
Аватара пользователя
slavokhire5
Прорезались зубы
Сообщения: 202
Зарегистрирован: Пн сен 26, 2011 13:48:25
Откуда: Харьков

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

Сообщение slavokhire5 »

привет котам:)
у кого есть опыт перевода платы с stm32f051 на stm32f091, какие следует ждать подводные камни, кроме некоторой повыводной несовместимости?
Осилит дорогу идущий
--------------------------
Пишу на Си за еду
Ответить

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