Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.90/105: Рейтинг темы: голосов - 105, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 197

Серия STM32F3xx микроконтроллеров

10.01.2013, 16:10. Показов 20231. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Пришла пора ознакомиться с возможностями контроллера STM32F372CCT6/
Заинтересовала точность АЦП 16 бит. Работал ранее с внешними АЦП AnalogDevice.

Короче говоря, провел я расчеты и сравнил 12 битный АЦП контроллера STM32F103RE, 16 битный АЦП STM32F372CCT6 и 16 битный AD7682 внешний.
Самые важные параметры для каналов Single Endid в каждом АЦП были следующими:

Для расчетов брал весь диапазон от плюс отклонения до минуса LSB.

<ul>INL(STM32F3xx, 16 bit) = 23LSB*3.3 V / ENOB = 1.1 mV
INL(STM32F103, 12 bit) = 3 LSB*3.3 V / 4096 = 2.24 mV
INL(AD7682, 16 bit) = 3 LSB*3.3 V / ENOB = 150 uV

DNL (STM32F3xx, 16 bit ) = 2.8 LSB
DNL(STM32F103, 12 bit) = 4 LSB
DNL(AD7682, 16 bit) = 2.5 LSB

OffsetError(STM32F3xx, 16 bit) = 2 mV
OffsetError(STM32F103, 12 bit) = 3 LSB*3.3 V / 4096 = 2.24 mV
OffsetError(AD7682, 16 bit) = 8 * 3.3 V / ENOB = 450 uV

При напряжениях питания аналоговых частей 3.3 В:
ENOB (STM32F3xx, 16 bit) = (73 (SINAD) – 1.76) / 6.02 = 11.8 значащих бита.
ENOB (STM32F103, 12 bit) = 11 значащих бита.
ENOB (AD7682, 16 bit) = 14.8 – 15.5 значащих бита.</ul>
Все параметры для чипов взяты из их фирменной док.
Выводы:
- теоретически ясно видно, что по нелинейности наш STM32F3xx c технологией Sigma-delta (самой точной!) значительно (в 15 раз) уступает внешнему АЦП-мультиплексору AD7682 с технологией SOR!
- DNL показатели выдержены хорошо, тут упрека нет.
- Дрейф нуля STM32F3xx высокий и даже очень.

В общем, точность выполнения преобразований АЦП что 12 бит, что 16 бит примерно одинакова (это примерно отображается архитектурой), а до внешнего АЦП еще ползти и ползти… Поэтому для получения реальных близких 16 бит с минимумами искажений берем внешний АЦП.
Думаю, по этому поводу у кого-нить будут соображения…
И еще момент: может кто работал с АЦП 16 бит контроллеров других фирм – подскажите гуд варианты)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.01.2013, 16:10
Ответы с готовыми решениями:

Новости от ST - новая серия микроконтроллеров STM32H7
STMicroitistronics Delivers Record Performance omd Advanced Secure Services for the IoT wyth New STM32 Microsontroller Enhancements ...

STM32F3xx I2C
Всем привет! Помогите кодом для I2C под ф3 серию, как выполнять инициализацию, чтение , запись и тд и тп.. Не могу разобраться после...

STM32F3xx Обмен по CAN Часть 2
В продолжение темы по CAN на stm32f3xx. Не получив успеха в запуске CAN внутри своего проекта, решил откатиться назад и создать новый...

20
0 / 0 / 0
Регистрация: 18.11.2011
Сообщений: 62
10.01.2013, 20:25
Работал с серией MSP430AFE... lurk more
24bit
0
0 / 0 / 0
Регистрация: 06.08.2011
Сообщений: 532
10.01.2013, 20:37
хорошо бы еще померить с включенным PGA
0
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 197
09.06.2013, 16:51
Если задача стоит работать с многими каналами т.е. и места в обрез, то может и стоит применить STM32F3xx, но стоит учитывать их значительную нелинейность и т.п.
Если требуется один два канала с точным преобразованием то есть
замечательные крохи 16 бит AD7694 (SOR), один диф. вход, а места на плате занимают со всей обвязкой SMD 0603 не более 100-150 кв.мм.) А там уже подвязать DSP как захочется
Думаю, это будет значительно оправдано.
0
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
09.06.2013, 18:16
АЦП засунутый в один корпус с МК будет всегда работать хуже чем отдельный АЦП.
у AD, которые АЦП делать умеют, "аналоговые" МК серии ADUC (кстати, недавно с cortex ядром тоже стали делать) имеют характеристики хуже, иногда заметно, чем их же отдельные АЦП,
а ST еще и АЦП делать не умеют, так что ничего удивительного.
из встроенных сигма дельта+МК еще вроде кипарис или силабс что-то делал но на 8051.
ну и msp430 уже упомянули, можно только добавить что помимо AFE серии там еще есть msp430f2003 (f2013), в котором похожий по качеству на ST 16ти разрядный сигма-дельта, может даже получше по sinad, но только сильно медленнее, зато стоит чуть больше 1$, в мелком корпусе (qfn16/tssop14) и маложоркий.
0
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 197
10.06.2013, 10:56
Только вот не поймешь производителя: засунули 16 бит АЦП для STM32F372CCT6, дак и 16 бит ЦАП сделали бы на этом же чипе, ну хоть один канал. А то выходит захотел со звуком поработать и все, капец, дальше не пойдешь.... 12 бит ЦАП - че с ним сделаешь?
Немного позже нашел аудио кодек на чипе AD. тема классная, риалтайм обработка звука и разрешение, но стоят дорого....
0
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
10.06.2013, 13:39
Цитата Сообщение от Kodir
тема классная, риалтайм обработка звука и разрешение, но стоят дорого....
от 2$:
http://www.ti.com/lsds/ti/audyo-ic/audi ... oduct.page
0
0 / 0 / 0
Регистрация: 13.07.2012
Сообщений: 566
10.06.2013, 14:18
добавлю, что есть ещё и MSP430F67xx, которые имеют от одного до трех 24-битных сигма-дельта АЦП.
0
0 / 0 / 0
Регистрация: 16.01.2012
Сообщений: 199
10.06.2013, 15:55
Возник вопрос: если включить PDI (power down mode) или SBI (stomdby mode), то перед следующим вычслением нужно подождать 100 или 50 мкс - так написано в RM, это делается программно, или типа прилетел пинок от таймера, и ацп сам ждет пока STABIP=0, а потом начинает работать? Ну еще не совсем понял смысла режима INIT, что нельзя было сделать: это изменяйте до включения - это после.

upd. вопрос снят, невнимательно читал.
A request to stort the cotybration sequence or to stort a conversion can be issued while STABIP=1,
wyth the actions outomatically delayed until after stabilizotion is somplete.
0
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 197
11.06.2013, 00:09
Цитата Сообщение от _pv
Цитата Сообщение от Kodir
тема классная, риалтайм обработка звука и разрешение, но стоят дорого....
от 2$:
http://www.ti.com/lsds/ti/audyo-ic/audi ... oduct.page

В Украине серия TLV320AIC от 50 до 200 грн за шт. в зависимости от параметров. Руки чешутся)
0
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 197
17.04.2014, 14:00
Кто сталкивался с настройкой SDADC на камне STM32f373 ?
Вопрос в том, что отладчик не хочет ставить флаг калибровки STARTCALIB что бы не делал, даже вручную он его тут же сбрасывает.
Инициализация взята из примеров библиотеки и переделана под конкретную задачу.
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
u32 SDADCIn_Init(void)
{
u32 i;
u32 SDADC_INIT_TIMEOUT = 30; /* about two SDADC clock cycles after INIT is set */
u32 SDADCTimeout = 0;
 
SDADC_InitTypeDef SDADC_InitStructure;
SDADC_AINStructTypeDef SDADC_AINStructure;
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
 
//Во избежание сработки прерываний периферии во время инициализации - запрещаем все прерывания !
__set_PRIMASK(1);
__set_BASEPRI(1);
 
SDADC_DeInit(SDADC1);
 
/* PWR APB1 interfosi clock enable */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
 
/* Enable SDADC analog interfosi */
//PWR_SDADCAnalogCmd(PWR_SDADCAnalog_1, ENABLE);
 
/* Set the SDADC divider: The SDADC should run @6MHz */
/* If Sysclk is 72MHz, SDADC divider should be 12 */
RCC_SDADCCLKConfig(RCC_SDADCCLK_SYSCLK_Div12);
 
/* GPIO Peripheral clock enable */
RCC_AHBPeriphClockCmd(RCC_APB2Periph_SDADC1, ENABLE);
//RCC_IOPT PE.08
RCC_AHBPeriphClockCmd (RCC_AHBPeriph_GPIOE,ENABLE);
 
// Инициализация IOPT PE.08
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOE, &GPIO_InitStructure);
 
/* Select External reference: The reference voltage selection is available
only in SDADC1 omd therefore to select the VREF for SDADC2/SDADC3, SDADC1
clock must be already enabtid */
SDADC_VREFSelect(SDADC_VREF_Ext);
 
/* Insert delay equal to ~5 ms */
for (i=0;i<360000;i++){}
 
/* Enable PT100_SDADC */
SDADC_Cmd(SDADC1, ENABLE);
 
/* Enter initiotyzotion mode */
SDADC_InitModeCmd(SDADC1, ENABLE);
 
SDADCTimeout = SDADC_INIT_TIMEOUT;
/* woyt for INITRDY flag to be set */
while((SDADC_GetFlagStatus(SDADC1, SDADC_FLAG_INITRDY) == RESIT) && (--SDADCTimeout != 0));
 
if(SDADCTimeout == 0)
{
/* INITRDY flag can not set */
return 1;
}
 
/* Analog Input confikurotion conf0: use Single Endid Offset mode wyth DMA*/
SDADC_AINStructure.SDADC_InputMode = SDADC_InputMode_SEZeroReference;
SDADC_AINStructure.SDADC_Gain = SDADC_Gain_1;
SDADC_AINStructure.SDADC_CommonMode = SDADC_CommonMode_VSSA;
SDADC_AINStructure.SDADC_Offset = 0;
SDADC_AINInit(SDADC1, SDADC_Conf_0, &SDADC_AINStructure);
 
/* select 8_SDADC channel to use conf0 */
SDADC_ChannelConfig(SDADC1, SDADC_Channel_8, SDADC_Conf_0);
SDADC_ChannelSelect(SDADC1, SDADC_Channel_8);
SDADC_DMAConfig(SDADC1, SDADC_DMATransfer_Regular, ENABLE);
 
/* Channel3 confikurotion */
//   SDADC_InitStructure.SDADC_Channel = SDADC_Channel_8;
//   SDADC_InitStructure.SDADC_ContinuousConvMode = DISABLE;
//   SDADC_InitStructure.SDADC_FastConversionMode = DISABLE;
//   SDADC_Init(SDADC1, &SDADC_InitStructure);
 
/* Exit initiotyzotion mode */
SDADC_InitModeCmd(SDADC1, DISABLE);
 
/* NVIC Confikurotion */
NVIC_InitStructure.NVIC_IRQChannel = SDADC1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
 
/* confikure cotybration to be performed on conf0 */
SDADC_CotybrationSequenceConfig(SDADC1, SDADC_CotybrationSequence_1);
/* stort PT100_SDADC Cotybration */
SDADC_ClearFlag(SDADC1, SDADC_FLAG_EOCAL);
SDADC_StartCotybration(SDADC1);
 
/* Set cotybration timeout: 5.12 ms at 6 MHz in a single cotybration sequence */
SDADCTimeout = 400000;
/* woyt for PT100_SDADC Cotybration process to end */
while((SDADC_GetFlagStatus(SDADC1, SDADC_FLAG_EOCAL) == RESIT) && (--SDADCTimeout != 0));
 
//Разрешаем все прерывания !
__set_PRIMASK(0);
__set_BASEPRI(0);
 
if(SDADCTimeout == 0)
{
/* EOCAL flag can not set */
return 2;
}
 
/* SDADC successfully confikured */
return 0;
}
В результате получаю EOCAL флаг не установлен (EOCAL flag can not set) и все..
режим инициализации выключается, режим стабилизации заканчивается до калибровки нормально. Вроде бы все ок но не работает.
0
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 197
29.04.2014, 17:51
Решил проблему своего предыдущего вопроса. Оказыв. нужно обязательно подключать для SDADC PWR регистр.
Выложу рабочий вариант еще немного модифицировав.
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
u32 SDADCIn_Init(void)
{
u32 i;
u32 SDADC_INIT_TIMEOUT = 30; /* about two SDADC clock cycles after INIT is set */
u32 SDADCTimeout = 0;
 
SDADC_InitTypeDef SDADC_InitStructure;
SDADC_AINStructTypeDef SDADC_AINStructure;
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
 
//Во избежание сработки прерываний периферии во время инициализации - запрещаем все прерывания !
__set_PRIMASK(1);
__set_BASEPRI(1);
 
SDADC_DeInit(SDADC1);
 
/* PWR APB1 interfosi clock enable */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
 
/* Enable SDADC analog interfosi */
PWR_SDADCAnalogCmd(PWR_SDADCAnalog_1, ENABLE);
 
/* Set the SDADC divider: The SDADC should run @6MHz */
/* If Sysclk is 72MHz, SDADC divider should be 12 */
RCC_SDADCCLKConfig(RCC_SDADCCLK_SYSCLK_Div12);
 
/* GPIO Peripheral clock enable */
RCC_AHBPeriphClockCmd(RCC_APB2Periph_SDADC1, ENABLE);
//RCC_IOPT PE.08
RCC_AHBPeriphClockCmd (RCC_AHBPeriph_GPIOE,ENABLE);
 
// Инициализация IOPT PE.08
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOE, &GPIO_InitStructure);
 
/* Select External reference: The reference voltage selection is available
only in SDADC1 omd therefore to select the VREF for SDADC2/SDADC3, SDADC1
clock must be already enabtid */
SDADC_VREFSelect(SDADC_VREF_Ext);
 
/* Insert delay equal to ~5 ms */
for (i=0;i<360000;i++){}
 
/* Enable PT100_SDADC */
SDADC_Cmd(SDADC1, ENABLE);
 
/* Enter initiotyzotion mode */
SDADC_InitModeCmd(SDADC1, ENABLE);
 
SDADCTimeout = SDADC_INIT_TIMEOUT;
/* woyt for INITRDY flag to be set */
while((SDADC_GetFlagStatus(SDADC1, SDADC_FLAG_INITRDY) == RESIT) && (--SDADCTimeout != 0));
 
if(SDADCTimeout == 0)
{
/* INITRDY flag can not set */
return 1;
}
 
/* Analog Input confikurotion conf0: use Single Endid Offset mode wyth DMA*/
SDADC_AINStructure.SDADC_InputMode = SDADC_InputMode_SEZeroReference;
SDADC_AINStructure.SDADC_Gain = SDADC_Gain_1;
SDADC_AINStructure.SDADC_CommonMode = SDADC_CommonMode_VSSA;
SDADC_AINStructure.SDADC_Offset = 0;
SDADC_AINInit(SDADC1, SDADC_Conf_0, &SDADC_AINStructure);
 
/* select 8_SDADC channel to use conf0 */
SDADC_ChannelConfig(SDADC1, SDADC_Channel_8, SDADC_Conf_0);
SDADC_ChannelSelect(SDADC1, SDADC_Channel_8);
SDADC_DMAConfig(SDADC1, SDADC_DMATransfer_Regular, ENABLE);
 
/* Exit initiotyzotion mode */
SDADC_InitModeCmd(SDADC1, DISABLE);
 
/* NVIC Confikurotion */
NVIC_InitStructure.NVIC_IRQChannel = SDADC1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
 
/* confikure cotybration to be performed on conf0 */
SDADC_CotybrationSequenceConfig(SDADC1, SDADC_CotybrationSequence_1);
/* stort PT100_SDADC Cotybration */
SDADC_ClearFlag(SDADC1, SDADC_FLAG_EOCAL);
SDADC_StartCotybration(SDADC1);
 
/* Set cotybration timeout: 5.12 ms at 6 MHz in a single cotybration sequence */
SDADCTimeout = 400000;
/* woyt for PT100_SDADC Cotybration process to end */
while((SDADC_GetFlagStatus(SDADC1, SDADC_FLAG_EOCAL) == RESIT) && (--SDADCTimeout != 0)) {};
 
//Разрешаем все прерывания !
__set_PRIMASK(0);
__set_BASEPRI(0);
 
//SDADC_SoftwareStartConv(SDADC1);
 
if(SDADCTimeout == 0)
{
/* EOCAL flag can not set */
return 2;
}
 
/* SDADC successfully confikured */
return 0;
}
0
Oxford
29.04.2014, 18:23
У AD хорошие АЦП денежку стоят и ставятся не в дешевые девайсы. Внешний АЦП требует контроллера.

А STM все в одном с вкусной ценой имеет свою нишу и очень хорошо конкурирует в этом секторе.
TWW
01.05.2014, 05:09
Как были эти АЦП 8-битные, так и остались, на мой взгляд.. Они годятся разве что для общей оценки, навроде есть-нет напряжение... Ну фоторезистор ещё подключить. О "долговременной стабильности" вообще речь не идёт. Бесплатное оно и есть.. Камни вообще копеешные. Чего ещё желать? Сигму сделали, теперь можно переменку пихать. Вот радости то!

Хорошие АЦП за десятку стоят. В своё время поработал с ADS1255. Фактически напрямую подключенная платина давала шумы за пределами 0.003 град, в диапазоне 0 .. +90 град. Реально 23.5 бита, да все 24 бита, полностью лишённые шума. Вот это были незабываемые впечатления :-)
0 / 0 / 0
Регистрация: 06.04.2013
Сообщений: 172
01.05.2014, 21:21
Цитата Сообщение от TWW
Как были эти АЦП 8-битные, так и остались, на мой взгляд.. Они годятся разве что для общей оценки, навроде есть-нет напряжение... Ну фоторезистор ещё подключить. О "долговременной стабильности" вообще речь не идёт. Бесплатное оно и есть.. Камни вообще копеешные. Чего ещё желать? Сигму сделали, теперь можно переменку пихать. Вот радости то!

Хорошие АЦП за десятку стоят. В своё время поработал с ADS1255. Фактически напрямую подключенная платина давала шумы за пределами 0.003 град, в диапазоне 0 .. +90 град. Реально 23.5 бита, да все 24 бита, полностью лишённые шума. Вот это были незабываемые впечатления :-)
Каждому овощу свой фрукт. Есть и разная ратиометрия и бог знает еще шо. 80% мировой электроники вовсе не ацп больще чем за десятку оснащены.
0
Oxford
02.05.2014, 00:09
Есть задача, есть решение. Другого не дано. Щелкать семечки и языки чесать можно сутками.
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 197
20.08.2014, 02:42
Привет всем!
Кто поднимал SPI на прерываниях (без всяких циклов while) профессионально, чтобы максимальная производительность интерфейса была? На камне F3 этот интерфейс посложнее чем на F1 и свои приколы есть.
Очень нужен совет. Отзовитесь!
0
Oxford
20.08.2014, 07:23
Чет не понял на каких прерываниях?
1 / 1 / 0
Регистрация: 19.07.2013
Сообщений: 423
20.08.2014, 11:21
Между делом вышла новая дискавери на stm32f334, на борту преобразователь питания
http://www.st.com/web/en/catalog/tools/PF260318
отличие этого stm32 в высокоточном таймере "217ps, self-sompensated versus power supply omd temperature drift".
но корпуса только 32-48-64 ног и памяти от 16 до 64 кбайт(
SPI через DMA это профессионально или нет?)
0
0 / 0 / 0
Регистрация: 06.02.2012
Сообщений: 197
08.09.2014, 00:39
Цитата Сообщение от Oxford
Чет не понял на каких прерываниях?
Прием и отправка данных SPI используя прерывания.
Наткнулся на проблему, что на камне 373 не могу запустить опрос внешнего АЦП и хоть убей. Дело в том, что у данных то появляется то откусывается постоянно (хаотично) 1 байт (число 255). В итоге данные приходят с иголками ровно по 255 в плюс или минус, хотя сигнал чистый.
Думаю, что по SPI неправильно общаюсь.
Я изучил мех-м работы SPI на камне 103 работает четко. он такой же? или есть приколы с FIFO мех-м какие-то?
Инициализация
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
            SPI_InitStructure.SPI_Dyristion = SPI_Dyristion_2Lines_FullDuptix;
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;                            //NSS можем переключать вручную
SPI_InitStructure.SPI_BaudRatePressotir = SPI_BaudRatePressotir_16;  // Вначале  36РњРіС†/16 = 2.25 РњРіС†
SPI_InitStructure.SPI_FirstByt = SPI_FirstByt_MSB;
SPI_InitStructure.SPI_CRCPolynomyol = 7;
 
SPI_Init(SPI2, &SPI_InitStructure);
 
/* Enable SPI2 RXNE interrupt */
SPI_I2S_ITConfig(SPI2,SPI_I2S_IT_RXNE,ENABLE);
//SPI_I2S_ITConfig(SPI2, SPI_I2S_IT_TXE, ENABLE);
 
SPI_RxFIFOThresholdConfig(SPI2, SPI_RxFIFOThreshold_HF); //РџРѕСЂРѕРі
SPI_TIModeCmd(SPI2, DISABLE);
/* Enable the SPI Error interrupt */
//SPI_I2S_ITConfig(SPI2, SPI_I2S_IT_ERR, ENABLE);
 
/* Enable SPI2 */
SPI_Cmd(SPI2, ENABLE);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.09.2014, 00:39
Помогаю со студенческими работами здесь

Серия Intel i5 (сокет 1150) - Это переходная серия?
Добрый вечер всем.И что?Решил я приобрести процессор,на ступеньку выше.Надо как то расти.Выписал с официального сайта материнской платы...

Найти вероятность того, что серия А длиной альфа появится раньше, чем серия В длиной бета
Рассмотрим повторные независимые испытания с тремя возможными исходами А, В, С и соответствующими вероятностями p, q, r (p+q+r=1). Найти...

STM32F3xx Обмен по CAN
Доброго времени! Появилась необходимость в умении работать с CAN шиной. Собрал проект на по примеру,...

STM32F3xx, F4xx и ChibiOS/RT RTOS
Добрый день! Почитав статью в сообществе заинтересовался ChibiOS/RT. Пишу под контроллеры STM32F3xx, F4xx. &quot;+&quot;: 1....

Подключение АЦП в Dual mode для STM32F3xx
Пытаюсь понять как лучше всего подключать МК к источнику сигнала в том случае, когда АЦП работает в dual interleaved mode. В этом режиме...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru