Easyelectronics.ru

Электроника для всех
Текущее время: 24 сен 2020, 18:45

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 1116 ]  На страницу 1, 2, 3, 4, 5 ... 45  След.
Автор Сообщение
 Заголовок сообщения: CMSIS | StdPeriph (Холивар)
СообщениеДобавлено: 04 ноя 2014, 21:09 
Заглядывает иногда

Зарегистрирован: 13 июн 2012, 18:39
Сообщения: 123
Всем доброго времени суток!
Не так давно начал осваивать Cortex-M3 на примере STM32F103RET6.
Периферии у STMов много а режимов её работы еще больше.
Собственно вопрос, второй день не могу определиться что выбрать для себя использовать CMSIS или же все таки функции из SPL ???
Чувства двоякие с одной стороны с функциями SPL код читабельнее (на то он и HAL) и через год можно будет понять что к чему без даташиты.

С другой с CMSIS и даташит както привычнее. Например так:

ADC1->CR2 |= ADC_CR2_ADON; // ADconverter ON

ADC1->CR2 |= ADC_CR2_RSTCAL; // Initialize calibration register
while((ADC1->CR2 & ADC_CR2_RSTCAL)!=0)
{}// Calibration register initialized

ADC1->CR2 |= ADC_CR2_CAL; // Enable calibration
while((ADC1->CR2 & ADC_CR2_CAL)!=0)
{}// Calibration completed

ADC1->CR2 |= ADC_CR2_EXTTRIG; // Conversion on external event enabled
ADC1->CR2 |= ADC_CR2_SWSTART; // Start conversion of regular channels

Очень хочу услышать мнение бывалых.


Последний раз редактировалось elisey 06 ноя 2014, 13:45, всего редактировалось 1 раз.
Изменено название темы


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CMSIS | StdPeriph
СообщениеДобавлено: 04 ноя 2014, 21:18 
Заглядывает иногда

Зарегистрирован: 13 июн 2012, 18:39
Сообщения: 123
В CMSIS тоже есть свой HAL В конце файлика stm32f10x.h:
/** @addtogroup Exported_macro
* @{
*/

#define SET_BIT(REG, BIT) ((REG) |= (BIT))

#define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT))

#define READ_BIT(REG, BIT) ((REG) & (BIT))

#define CLEAR_REG(REG) ((REG) = (0x0))

#define WRITE_REG(REG, VAL) ((REG) = (VAL))

#define READ_REG(REG) ((REG))

#define MODIFY_REG(REG, CLEARMASK, SETMASK) WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK)))

Можно и так значит SET_BIT(ADC1->CR2, ADC_CR2_SWSTART); // Start conversion of regular channels


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CMSIS | StdPeriph
СообщениеДобавлено: 04 ноя 2014, 22:02 
Старожил
Аватара пользователя

Зарегистрирован: 23 янв 2013, 12:33
Сообщения: 1791
Откуда: Донецк, ДНР
CMSIS - это не HAL, это та же прямая работа с регистрами. И если Вы через год начнёте читать, то CMSIS Вас не спасёт от чтения ДШ.
Поэтому вопрос переформулируется как SPL или регистры.
А это уже религия, по поводу которой вылита бездонная бочка разного холивара и даже личных оскорблений и всё равно каждый при своём.

Поэтому пишите на чём хотите. Как Вам удобнее.
Лично я люблю SPL. С её тормозами столкнулся всего лишь раз. Ну и переписал этот кусочек на регистрах :) . Но это не повод "огульно охаивать" весь SPL.
Багов в ней пока не находил.
Ещё, за что ругают SPL, это большой объём результирующего кода. Да, это так. Согласен. Но если моя прошивка занимает 200 кил из мегабайта или двух флэша проца, то почему нет?

Это как девушки - кому брюнетки, кому блондинки. А кому и те и те :) .


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CMSIS | StdPeriph
СообщениеДобавлено: 04 ноя 2014, 22:13 
Заглядывает иногда

Зарегистрирован: 13 июн 2012, 18:39
Сообщения: 123
Мне почему то думается что SPL это HAL над CMSIS.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CMSIS | StdPeriph
СообщениеДобавлено: 04 ноя 2014, 23:09 
Старожил
Аватара пользователя

Зарегистрирован: 23 янв 2013, 12:33
Сообщения: 1791
Откуда: Донецк, ДНР
Вы откройте любой ST-шный пример (кроме USB хоста/девайса) и посмотрите, что представляет собой SPL. И как он реализован.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CMSIS | StdPeriph
СообщениеДобавлено: 05 ноя 2014, 09:24 
Старожил

Зарегистрирован: 28 май 2012, 09:26
Сообщения: 229
Я почему-то всегда думал, что CMSIS это библиотека работы с ядром АРМ, а SPL и HAL это работа с периферией.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CMSIS | StdPeriph
СообщениеДобавлено: 05 ноя 2014, 10:19 
Заглядывает иногда

Зарегистрирован: 20 фев 2014, 09:25
Сообщения: 95
У куба есть библиотека HAL, аналог SPL. Я так понимаю она поновее и получше будет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CMSIS | StdPeriph
СообщениеДобавлено: 05 ноя 2014, 10:28 
Старожил
Аватара пользователя

Зарегистрирован: 23 янв 2013, 12:33
Сообщения: 1791
Откуда: Донецк, ДНР
Да так то оно может и так, но все примеры ST-шники дают именно на SPL. А с HAL только куб и работает. Пока что.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CMSIS | StdPeriph
СообщениеДобавлено: 05 ноя 2014, 11:03 
Заглядывает иногда

Зарегистрирован: 20 фев 2014, 09:25
Сообщения: 95
Ну насколько я видел они отличаются только внутренне. Внешнии отличии сводятся к добавлению HAL в все имена.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CMSIS | StdPeriph
СообщениеДобавлено: 05 ноя 2014, 11:33 
Старожил
Аватара пользователя

Зарегистрирован: 26 янв 2010, 21:48
Сообщения: 3965
Откуда: Звенигород
Ramirag писал(а):
Ну насколько я видел они отличаются только внутренне. Внешнии отличии сводятся к добавлению HAL в все имена.

Не только. Там связь ДМА с периферией сильно изменена, да и обработка прерываний теперь делается через события.

_________________
От Парижа до Находки с водкой лучше, чем без водки!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CMSIS | StdPeriph
СообщениеДобавлено: 05 ноя 2014, 11:56 
Заглядывает иногда

Зарегистрирован: 20 фев 2014, 09:25
Сообщения: 95
PRC писал(а):
Ramirag писал(а):
Ну насколько я видел они отличаются только внутренне. Внешнии отличии сводятся к добавлению HAL в все имена.

Не только. Там связь ДМА с периферией сильно изменена, да и обработка прерываний теперь делается через события.

Не буду спорить, я и то и то поверхностно смотрел.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CMSIS | StdPeriph
СообщениеДобавлено: 05 ноя 2014, 12:47 
Старожил
Аватара пользователя

Зарегистрирован: 26 янв 2010, 21:48
Сообщения: 3965
Откуда: Звенигород
Я все это дело подключал, что бы с карточки данные читать. Честно говоря не очень понравилось - все стало на редкость высокоуровнево:) Теперь для обработки прерываний нужно объявлять callback функции, зато карточка видится как диск М0 и чтение/запись делается средствами С. Хотя размеры выходного кода конечно печалят - программа из одного файла на С весит около 80кБ. Правда там и операционка и драйвера SD включены.
Если кому интересно, то могу выложить проект где через встроенный ЦАП играется wav файл с SD карты. Хоть размеры программы и получились немаленькие, зато сама программа просто примитивна.

_________________
От Парижа до Находки с водкой лучше, чем без водки!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CMSIS | StdPeriph
СообщениеДобавлено: 05 ноя 2014, 15:00 
Заглядывает иногда

Зарегистрирован: 13 июн 2012, 18:39
Сообщения: 123
Короче говоря далеко на одних регистрах тут не уехать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CMSIS | StdPeriph
СообщениеДобавлено: 05 ноя 2014, 15:21 
Старожил

Зарегистрирован: 08 окт 2012, 00:25
Сообщения: 871
Короче говоря... алльдурина во всей красе... "Алльдурина думает за вас!"(С)... )))
Корм для хомячков измельчённый... и частично переваренный... "Жевать подано!"(С)... )))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CMSIS | StdPeriph
СообщениеДобавлено: 05 ноя 2014, 15:30 
Заглядывает иногда

Зарегистрирован: 13 июн 2012, 18:39
Сообщения: 123
А что предпочитаете Вы dark_user ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CMSIS | StdPeriph
СообщениеДобавлено: 05 ноя 2014, 15:31 
Старожил
Аватара пользователя

Зарегистрирован: 26 янв 2010, 21:48
Сообщения: 3965
Откуда: Звенигород
dark_user писал(а):
Короче говоря... алльдурина во всей красе... "Алльдурина думает за вас!"(С)... )))
Корм для хомячков измельчённый... и частично переваренный... "Жевать подано!"(С)... )))

Сэр ручками и через регистры поднимает usb и fat?

_________________
От Парижа до Находки с водкой лучше, чем без водки!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CMSIS | StdPeriph
СообщениеДобавлено: 05 ноя 2014, 15:38 
Старожил

Зарегистрирован: 08 окт 2012, 00:25
Сообщения: 871
Обана!!! А каким это боком FAT пристегнулась к SPL??? Ась??? )))
Что... Ченовские либы без SPL уже работать не могут??? )))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CMSIS | StdPeriph
СообщениеДобавлено: 05 ноя 2014, 16:11 
Старожил
Аватара пользователя

Зарегистрирован: 27 апр 2011, 07:50
Сообщения: 404
Похоже очередной холивар живописно вырисовывается.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CMSIS | StdPeriph
СообщениеДобавлено: 05 ноя 2014, 16:18 
Старожил
Аватара пользователя

Зарегистрирован: 26 янв 2010, 21:48
Сообщения: 3965
Откуда: Звенигород
У меня весь фат и карта работают из под кейла. А он за собой тащит кучу всего.

_________________
От Парижа до Находки с водкой лучше, чем без водки!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CMSIS | StdPeriph
СообщениеДобавлено: 05 ноя 2014, 16:22 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5883
PRC писал(а):
У меня весь фат и карта работают из под кейла. А он за собой тащит кучу всего.

Какое отношение FatFs имеет к SPL, кроме того что прикручена в Keil'вский пак ?
Точно так же и USB .
Находятся они в папках ...Middlewares\Third_Party\...
Вам что либо сие говорит?


Последний раз редактировалось dosikus_2 05 ноя 2014, 16:32, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CMSIS | StdPeriph
СообщениеДобавлено: 05 ноя 2014, 16:28 
Старожил

Зарегистрирован: 23 фев 2012, 12:32
Сообщения: 338
Откуда: Украина
Ну, у меня FAT без SPL работает. Ченовская. Делов-то - настроить SPI.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CMSIS | StdPeriph
СообщениеДобавлено: 05 ноя 2014, 16:36 
Заглядывает иногда

Зарегистрирован: 13 июн 2012, 18:39
Сообщения: 123
011119xx писал(а):
Похоже очередной холивар живописно вырисовывается.

Нет холивар разводить не будем.
Просто я как новичек в этом деле, всего лишь хочу прояснить для себя нужно ли применять StdPeriph или обойтись регистрами.
Пока что мое мнение таково перифирийный модуль(GPIO, ADC, TIM....) настраивается один раз при старте программы и дальше крутим свой алгоритм.
Получается нужно изучить и перифирийный модуль и плюс еще функции StdPeriph. Пока я на распутье...
Пробовал и так и так... Пример
void InitADC(void)
{
RCC_ADCCLKConfig(RCC_PCLK2_Div4); //
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOC, ENABLE);

/* Configure PC.04 (ADC Channel14) as analog input */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOC, &GPIO_InitStructure);

/* Configure and enable ADC interrupt */
NVIC_InitStructure.NVIC_IRQChannel = ADC1_2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

/* ADC1 configuration */
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel = 1;
ADC_Init(ADC1, &ADC_InitStructure);

ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 1, ADC_SampleTime_239Cycles5);//ADC_SampleTime_28Cycles5
ADC_ITConfig(ADC1, ADC_IT_EOC, ENABLE);
/* Enable ADC1 */
ADC_Cmd(ADC1, ENABLE);

/* Enable ADC1 reset calibaration register */
ADC_ResetCalibration(ADC1);

/* Check the end of ADC1 reset calibration register */
while(ADC_GetResetCalibrationStatus(ADC1));

/* Start ADC1 calibaration */
ADC_StartCalibration(ADC1);

/* Check the end of ADC1 calibration */
while(ADC_GetCalibrationStatus(ADC1));

/* Start ADC1 Software Conversion */
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
}
// ADC_Configuration
void InitADC(void)
{
GPIOC->CRH &=~ GPIO_CRH_CNF14;
GPIOC->CRH &=~ GPIO_CRH_MODE14;

ADC1->CR1 |= ADC_CR1_SCAN; // Scan mode enabled
ADC1->CR2 |= ADC_CR2_EXTSEL; // External event select for regular group SWSTART
ADC1->CR2 |= ADC_CR2_DMA; // DMA mode enabled
ADC1->CR2 |= ADC_CR2_CONT; // Continuous conversion mode
ADC1->SMPR1 |= ADC_SMPR1_SMP14; // Channel 14 Sample time selection 239.5 cycles
ADC1->SQR1 |= ADC_SQR1_SQ14_0; // Channel 14
ADC1->CR2 |= ADC_CR2_ADON; // ADconverter ON

ADC1->CR2 |= ADC_CR2_RSTCAL; // Initialize calibration register
while((ADC1->CR2 & ADC_CR2_RSTCAL)!=0)
{}// Calibration register initialized

ADC1->CR2 |= ADC_CR2_CAL; // Enable calibration
while((ADC1->CR2 & ADC_CR2_CAL)!=0)
{}// Calibration completed

ADC1->CR2 |= ADC_CR2_EXTTRIG; // Conversion on external event enabled
ADC1->CR2 |= ADC_CR2_SWSTART; // Start conversion of regular channels

}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CMSIS | StdPeriph
СообщениеДобавлено: 05 ноя 2014, 16:39 
Старожил
Аватара пользователя

Зарегистрирован: 18 май 2013, 20:43
Сообщения: 4902
Откуда: Кемеровская область, Киселевск
brunnen-g писал(а):
Ну, у меня FAT без SPL работает. Ченовская. Делов-то - настроить SPI.

а если SDIO? ни одним SPI сыт будешь.

_________________
RADIOWOLF.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CMSIS | StdPeriph
СообщениеДобавлено: 05 ноя 2014, 16:43 
Старожил

Зарегистрирован: 23 фев 2012, 12:32
Сообщения: 338
Откуда: Украина
Мне по работе достались без SDIO. Он вроде в больших корпусах? Интересно было бы попробовать


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: CMSIS | StdPeriph
СообщениеДобавлено: 05 ноя 2014, 16:44 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5883
Redrik писал(а):
Получается нужно изучить и перифирийный модуль и плюс еще функции StdPeriph.


+ для каждой линейки своя SPL'ня + постоянно допиливается устраняя одни баги и внося новые .
+ недалек тот час когда разрабы кинут адептов .
И все это ради сомнительного удовольствия ляпнуть на форуме -"SPL более читаема" .
Потому как других преимуществ оно не даст , да и это мнение навязано адептами , другого не знающими.
Обычно к SPL тяготеют выходцы с PC , ибо знать железо для непозволительная роскошь ...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 1116 ]  На страницу 1, 2, 3, 4, 5 ... 45  След.


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB