Stm32 с чего начать изучение...

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

Re: Stm32 с чего начать изучение...

Сообщение Satyr »

IfoR писал(а)::facepalm:
Да что же вы сразу меня в эту надпись не тыкнули? Я то думал оно АЦП питает. Не заметил я этого.
Теперь всё заработало. Спасибо! :)

Зачем додумать то, что явно написано ?
Теперь ты осознаешь, что все эти твои страдания от того, что надо было реально 2-3 странички из выложенного мной документа прочитать ?
Почитай хотя бы этот документ от и до. 28 страниц, включая содержание и ссылки, уже от кучи глупостей и непониманий избавит.
Galizin
Мучитель микросхем
Сообщения: 477
Зарегистрирован: Ср окт 15, 2008 09:33:03
Откуда: Воронеж

Re: Stm32 с чего начать изучение...

Сообщение Galizin »

http://www.youtube.com/watch?v=5Y_5xxmk ... re=channel - на русском обзор документации по stm32
Sergi
Мучитель микросхем
Сообщения: 412
Зарегистрирован: Ср янв 04, 2012 11:57:40
Откуда: Алчевск

Re: Stm32 с чего начать изучение...

Сообщение Sergi »

Ну вот начал изучать stm32 + MMC + FatFs. В принципе все заработало. В примерах подключения карты часто используется программный SPI. При работе на частоте 24 МГц получается скорость SPI около 1 Мбита. Захотелось перевести на аппаратный SPI2, но при этом карта инициализируется на скорости до 125 кбит. Быстрее-вылазит ошибка. Вот кусочек инициализации и чтения /записи.

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

 RCC->APB1ENR |= RCC_APB1ENR_SPI2EN; //подать тактирование                                      /
           SPI2->CR1     = 0x0000;             //очистить первый управляющий регистр
           SPI2->CR2     = 0x0000;             //очистить второй управляющий регистр
           SPI2->CR1    |= SPI_CR1_MSTR;       //контроллер должен быть мастером   
           SPI2->CR1    |=  0x30;         //задаем скорость 30=8*4мкс
           SPI2->CR1    |= SPI_CR1_SPE;        //разрешить работу модуля SPI


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

void xmit_spi(unsigned char data)    
  {/*
    unsigned char i;
   for (i=0;i<8;i++) //Цикл перебора битов отправляемого байта
    {
     if ((data&0x80)==0x00)//Если все данные переданы
     {
     GPIOB->ODR &=~0x0001; //Выставить бит данных
     }
     else GPIOB->ODR|=0x0001;
     data=data<<1;
     GPIOB->ODR|=0x0004; //Импульс
     GPIOB->ODR&=~0x0004;
    }
  */
     while (SPI2->SR & SPI_SR_BSY);
     while (!(SPI2->SR & SPI_SR_TXE));    
     SPI2->DR = data;             // Передача данных
  }


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

static
BYTE rcvr_spi (void)
{ /*
  //Декларация переменных
  unsigned char i, res=0;
  for(i=0;i<8;i++)
   {
   GPIOB->ODR|=0x0004; //Фронт импульса
   res=res<<1;
   if ((GPIOB->IDR&0x0002)!=0x00) res=res|0x01; //Считать бит данных
   GPIOB->ODR&=~0x0004; //Спад испульса
   }
  */
     while (SPI2->SR & SPI_SR_BSY);
     SPI2->DR = 0xff;
     while (!(SPI2->SR & SPI_SR_RXNE));
     res = SPI2->SR;
     res = SPI2->DR;   
  return res ;
}


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

Re: Stm32 с чего начать изучение...

Сообщение Satyr »

А чем STM32 Peripheral library не угодил ?
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

Re: Stm32 с чего начать изучение...

Сообщение SubDia »

Господа, а кто-нибудь использовал FreeRTOS в своих проектах?
Если таковые люди имеются, я попросил бы, если не сложно, разъяснить мне один момент по поводу приоритетов задач. У Курница я вычитал следующую вещь:

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

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

Таким образом, не значит ли это, что если я имею две задачи (скажем, светодиодные те же мигалки - пусть будут синяя и красная) с одинаковым приоритетом (пусть tskIDLE_PRIORITY=0), и вдруг установлю приоритет первой задачи равным (tskIDLE_PRIORITY+1), то выполняться будет только лишь эта самая первая задача - вплоть до принудительной приостановки или понижения приоритета? А вторая задача что - уйдет в суспенд?
Непонятен мне этот нюанс. Если так, то с приоритетами вообще становится опасно баловаться..
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Re: Stm32 с чего начать изучение...

Сообщение Satyr »

Это уж как ты задачу с высшим приоритетом организуешь
"пока она не будет блокирована или приостановлена"

Приостанволена - это ж не значит, что снаружи. Если ты вызвал внутри Sleep(), ожидание события или разблокировки мутекса - это и есть блокировка, по которой шедулер начинает выполнять менее приоритетные задачи до наступления события, ведущего к разблокировке
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

Re: Stm32 с чего начать изучение...

Сообщение SubDia »

Спасибо, с блокировкой понятно.
А насчет организации задачи - имеется в виду, будет ли задача ожидать наступления какого-либо события (иное условие для блокировки), чтобы планировщик мог выделить процессорное время другим задачам? Скажем, если задача будет постоянно в состоянии готовности (те же шморгалки ведь не требуют наступления особых условий), и ее приоритет будет выше приоритетов других задач, то планировщик будет выделять время только ей?
Я просто запутался с приоритетами - считал, что задача с высшим по отношению к другим приоритетом будет выполняться первой (какой-то квант времени), а потом планировщик переключится на другую задачу..
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Re: Stm32 с чего начать изучение...

Сообщение Satyr »

SubDia писал(а):Я просто запутался с приоритетами - считал, что задача с высшим по отношению к другим приоритетом будет выполняться первой (какой-то квант времени), а потом планировщик переключится на другую задачу..

Будет время - конечно переключится -)))

Если будешь вместо Sleep пользовать конструкции типа for(volatile int i=0; i < 1000000; ++i) ; то проблемы будут -)))

Да и в FreeRTOS, насколько помню, есть разные настройки и режимы. Вплоть до выбора вытесняющая/добровольная многозадачность.
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

Re: Stm32 с чего начать изучение...

Сообщение SubDia »

Satyr писал(а):Если будешь вместо Sleep пользовать конструкции типа for(volatile int i=0; i < 1000000; ++i) ; то проблемы будут -)))

Уже были. :)))
Благодарю за ответ. Я пока только начал изучать эту ОС.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

Re: Stm32 с чего начать изучение...

Сообщение SubDia »

Satyr писал(а):Да и в FreeRTOS, насколько помню, есть разные настройки и режимы. Вплоть до выбора вытесняющая/добровольная многозадачность.

Все верно, добрел наконец-то до этого. У меня в конфиге политика планирования - преимущественная (configUSE_PREEMPTION=1), то есть всегда (постоянно) выполняется задача с наивысшим приоритетом, задачи с одинаковым приоритетом делят процессорное время.
На практике давно дошло, вот нашел и теоретическое подтверждение. =)
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
Аватара пользователя
IfoR
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Сб ноя 15, 2008 10:09:56
Откуда: г. Тула
Контактная информация:

Re: Stm32 с чего начать изучение...

Сообщение IfoR »

А у меня такой вопрос немного не в тему:
У STM32 есть регистры для атомарного управления битами в порту: BSRR и BRR. Первый может как устанавливать, так и сбрасывать биты, а второй только сбрасывать. Зачем тогда нужен BRR?
Изображение
/dev/urandom - гигабайты информации.

OS: openSUSE 13.2 (x86_64)
Аватара пользователя
_AHTOXA_
Встал на лапы
Сообщения: 130
Зарегистрирован: Пт янв 21, 2011 14:16:36
Откуда: Уфа
Контактная информация:

Re: Stm32 с чего начать изучение...

Сообщение _AHTOXA_ »

Sergi писал(а):Захотелось перевести на аппаратный SPI2, но при этом карта инициализируется на скорости до 125 кбит. Быстрее-вылазит ошибка.

Это так и должно быть, по спецификации SD-карт. Инициализация - на скорости 100..400КГц, потом можно переключать на бОльшую скорость (20МГц вроде).
Аватара пользователя
_AHTOXA_
Встал на лапы
Сообщения: 130
Зарегистрирован: Пт янв 21, 2011 14:16:36
Откуда: Уфа
Контактная информация:

Re: Stm32 с чего начать изучение...

Сообщение _AHTOXA_ »

IfoR писал(а):У STM32 есть регистры для атомарного управления битами в порту: BSRR и BRR. Первый может как устанавливать, так и сбрасывать биты, а второй только сбрасывать. Зачем тогда нужен BRR?

У них маска одного бита на одном и том же месте. То есть, сбросить бит номер N - BRR = 1<<N, установить - BSRR = 1<<N. Иногда это может быть удобно, не надо двигать маску туда-сюда.
Аватара пользователя
IfoR
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Сб ноя 15, 2008 10:09:56
Откуда: г. Тула
Контактная информация:

Re: Stm32 с чего начать изучение...

Сообщение IfoR »

А-а, понятно. Спасибо!
Изображение
/dev/urandom - гигабайты информации.

OS: openSUSE 13.2 (x86_64)
Аватара пользователя
СЦБист
Это не хвост, это антенна
Сообщения: 1337
Зарегистрирован: Сб июн 09, 2012 02:14:11
Откуда: ХАРЬКОВ

Re: Stm32 с чего начать изучение...

Сообщение СЦБист »

скачал описание на STM32F042xx.

почему тут нету не описания регистров и т.д. как на атмелы ?

http://www.farnell.com/datasheets/1886881.pdf
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: Stm32 с чего начать изучение...

Сообщение Мурик »

Регистры в Reference Manual, а не в даташите.
Аватара пользователя
СЦБист
Это не хвост, это антенна
Сообщения: 1337
Зарегистрирован: Сб июн 09, 2012 02:14:11
Откуда: ХАРЬКОВ

Re: Stm32 с чего начать изучение...

Сообщение СЦБист »

ага - щас. голяк.

а че бесплатных компиляторов под эти чипы нету ?
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: Stm32 с чего начать изучение...

Сообщение Мурик »

СЦБист писал(а):ага - щас. голяк.
Шутите? :shock: http://www.st.com/resource/en/reference ... 031936.pdf

СЦБист писал(а):а че бесплатных компиляторов под эти чипы нету ?
GCC. :)
В качестве бесплатной IDE можно использовать EmBitz. Компилятор, отладчик в составе IDE и ничего больше скачивать не нужно.
Аватара пользователя
СЦБист
Это не хвост, это антенна
Сообщения: 1337
Зарегистрирован: Сб июн 09, 2012 02:14:11
Откуда: ХАРЬКОВ

Re: Stm32 с чего начать изучение...

Сообщение СЦБист »

а бесплатного компилятора от фирмы разработчика я как понял нету ?


что-то в той документации ни структур не черта нету (((((

где брать описание структур на конкретную периферию ?
Galizin
Мучитель микросхем
Сообщения: 477
Зарегистрирован: Ср окт 15, 2008 09:33:03
Откуда: Воронеж

Re: Stm32 с чего начать изучение...

Сообщение Galizin »

Мурик писал(а):что-то в той документации ни структур не черта нету

Если Вы о stm32, то документация состоит из datasheet - описание электрических параметров и reference manual - описание периферии в том числе ее регистров. reference manual обычно один на все семейство в datasheet перечислено какая конкретно периферия есть в конкретном контроллере и на какие ноги она выведена.
Ответить

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