Например TDA7294

Форум РадиоКот • Просмотр темы - STM32f205: ADC меня игнорирует!
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пн дек 22, 2025 23:11:40

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


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 37 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: STM32f205: ADC меня игнорирует!
СообщениеДобавлено: Пн дек 09, 2013 11:40:44 
Прорезались зубы

Зарегистрирован: Пн окт 21, 2013 07:33:45
Сообщений: 210
Рейтинг сообщения: 0
Добрый день!
программирую АЦП. В конечном счете оно должно работать в трипл-моде, но как то с ходу не задалось.
По пути упрощений я снизошел до самого элементарного (код и лог приведены ниже)- программный опрос 1го преобразования без пдп и прерываний...
Однако ж, АЦП вроде как и работает, и выдает достаточно правдоподобные данные, но чихать оно хотело, на то что я подаю на вход...
Раз 5 перепроверял, а точно ли нога та: ТА!
Посмотрите пожалуйста опытным и незамыленным взглядом. Наверняка подвох на поверхности. (если чип, конечно, не подгорел :cry: )

собственно код:
Цитата:
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); // а надо ли тактировать аналоговый вход???
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = 0;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AN;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; // я так понимаю, это не имеет значения
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; // и соответственно это тоже
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz; // и это...
GPIO_Init(GPIOA, &GPIO_InitStruct);

//0 й канал АЦП висит на PA0
// (pin 14 для 64ножечного корпуса. в него и тыкаем тестовым сигналом)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);

ADC_InitTypeDef ADC_InitStructure;
ADC_InitStructure.ADC_Resolution = 12;
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfConversion = 1;
ADC_Init(ADC1, &ADC_InitStructure);
for (i=1; i<17; i++)
ADC_RegularChannelConfig(ADC1, ADC_Channel_0,i,ADC_SampleTime_3Cycles);//can be 3,15, 28, 56, 84, 112, 144, 480 cycles

ADC_Cmd(ADC1, ENABLE);
while (1)
{
if (i++ == 0x1000000)
{
if (ADCTestStatus()) {
ADC_SoftwareStartConv(ADC1);
j=0;//для посмотреть сколько времени висит в цикле
while (!(ADC1->SR & ADC_SR_EOC)) {
j++;
}
uint16_t data = ADC_GetConversionValue(ADC1);
//отсылаем лог по виртуальному ком порту
uint16tohex(j,&c1,&c2,&c3,&c4);
sendchar('j');sendchar('='); //к-во циклов на преобразование
sendchar(c1);sendchar(c2);
sendchar(c3);sendchar(c4);
sendchar(' ');
uint16tohex(data,&c1,&c2,&c3,&c4); //собственно данные с АЦП
sendchar('V');sendchar('=');
sendchar(c1);sendchar(c2);
sendchar(c3);sendchar(c4);
sendchar(10);
sendchar(13);
}
i = 0;
}
}

и лог:
Цитата:
j=0005 V=0039
j=0005 V=003A
j=0005 V=0039
j=0005 V=003A
j=0005 V=0039
j=0005 V=003A
j=0005 V=0039
j=0005 V=003B
j=0005 V=003C
j=0005 V=003B
j=0005 V=0039

_________________
Шоб я польку танцевал..


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32f205: ADC меня игнорирует!
СообщениеДобавлено: Пн дек 09, 2013 11:55:13 
Прорезались зубы

Зарегистрирован: Пн окт 21, 2013 07:33:45
Сообщений: 210
Рейтинг сообщения: 0
перепрограммировал ногу на выход, ради эксперимента: результат тот же!
АЦП что то преобразует, а что - не понятно...
Цитата:
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;

_________________
Шоб я польку танцевал..


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32f205: ADC меня игнорирует!
СообщениеДобавлено: Пн дек 09, 2013 12:12:27 
Это не хвост, это антенна
Аватар пользователя

Карма: 12
Рейтинг сообщений: 102
Зарегистрирован: Вс дек 02, 2012 03:13:48
Сообщений: 1433
Откуда: Калининград
Рейтинг сообщения: 0
Вот эта строчка вызывает подозрения...
for (i=1; i<17; i++)

вроде бы надо один канал указывать...

еще неплохо бы калибрацию провести.
Код:
ADC_ResetCalibration(ADC1);
while (ADC_GetResetCalibrationStatus(ADC1));
/* Start ADC1 calibration */
ADC_StartCalibration(ADC1);
/* Check the end of ADC1 calibration */
while (ADC_GetCalibrationStatus(ADC1));


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32f205: ADC меня игнорирует!
СообщениеДобавлено: Пн дек 09, 2013 12:33:22 
Прорезались зубы

Зарегистрирован: Пн окт 21, 2013 07:33:45
Сообщений: 210
Рейтинг сообщения: 0
balmer писал(а):
еще неплохо бы калибрацию провести

в библиотеке периферии для F2xx (по крайней мере в stm32f2xx_adc.c) таких функций нет.
Попробую ручками, через регистры. хотя буквально на днях курил RM033 (раздел про ADC) не припомню, что бы калибрация мне встретилась(хотя мог и пролистать).
По поводу
Цитата:
for (i=1; i<17; i++)

тут ничего страшного нет:
тут основной смысл, вроде бы как имеет
Цитата:
ADC_InitStructure.ADC_NbrOfConversion = 1;

кроме того если я эти поля не заполню - там все равно будет что то лежать. Уж лучше знать, чем догадываться.
В любом случае я и без цикла только для 1го измерения заполнял с тем же результатом.

_________________
Шоб я польку танцевал..


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: STM32f205: ADC меня игнорирует!
СообщениеДобавлено: Пн дек 09, 2013 12:57:44 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 156
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
Задолбало уже :
указывайте какой камень, STM32f205 - это ни о чем .
Может камень в 100pin или выше и Vref висят в воздухе ...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32f205: ADC меня игнорирует!
СообщениеДобавлено: Пн дек 09, 2013 13:03:10 
Прорезались зубы

Зарегистрирован: Пн окт 21, 2013 07:33:45
Сообщений: 210
Рейтинг сообщения: 0
Цитата:
Может камень в 100pin или выше и Vref висят в воздухе ...

прошу прощения, не на самом видном месте было :-)
Цитата:
(pin 14 для 64ножечного корпуса. в него и тыкаем тестовым сигналом)

камень STM32F205RBT6

_________________
Шоб я польку танцевал..


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32f205: ADC меня игнорирует!
СообщениеДобавлено: Пн дек 09, 2013 13:20:39 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 156
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
FPGAlover, к сожаление нет у мну 205 .
Могу посоветовать , если юзаешь Keil, потыкать прямиком в биты в отладчике .
Весьма информативно. Глядишь и SPL лесом пойдет... :)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32f205: ADC меня игнорирует!
СообщениеДобавлено: Пн дек 09, 2013 13:29:23 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 156
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
FPGAlover писал(а):
По поводу
Цитата:
for (i=1; i<17; i++)

тут ничего страшного нет:



Страшного то ничего, но это танцы с бубном .
Как по твоему сколько каналов сконфигурирует и каких сия шняга ? :)))
ИЛи за что там i отвечает в конфиге ? :)))

Точней сколько раз будет вызвана
Код:
ADC_RegularChannelConfig(ADC1, ADC_Channel_0,i,ADC_SampleTime_3Cycles);

и с каким(и) i ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32f205: ADC меня игнорирует!
СообщениеДобавлено: Пн дек 09, 2013 13:54:25 
Прорезались зубы

Зарегистрирован: Пн окт 21, 2013 07:33:45
Сообщений: 210
Рейтинг сообщения: 0
dosikus, пользую IAR, однако SPL я проверил и убедился, что он тыкает нужные регистры в нужные точки. По началу я все делал ручками, потом пообъединял в функции и получил тот же SPL, вид с боку :-)
Ну что ж... попробую камень перепаять :(
dosikus писал(а):
Как по твоему сколько каналов сконфигурирует и каких сия шняга ? :)))

что значит каналов? что по Вашему делает
dosikus писал(а):
сия шняга
? и как Вы понимаете физический смысл Rank(параметр i в ADC_RegularChannelConfig), ADC_SampleTime?

функция вызовется 16 раз и соответственно заполнит 16 логических регистров по 5бит номером канала ADC_Channel_0 и 16 логических регистров по 3бит со временем выборки.
i тут по сути индекс логического регистра. Можно даже сказать элемента массива.
И все. Танцы с бубном тут не при чем. Я вполне отдаю себе отчет что это и для чего это надо.
даже при
FPGAlover писал(а):
ADC_InitStructure.ADC_ScanConvMode = ENABLE;

будет всегда опрашиваться 0-й канал, как не крути.

_________________
Шоб я польку танцевал..


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32f205: ADC меня игнорирует!
СообщениеДобавлено: Пн дек 09, 2013 14:03:27 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 156
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
FPGAlover писал(а):
и как Вы понимаете физический смысл Rank(параметр i в ADC_RegularChannelConfig), ADC_SampleTime?


Ну да, я тут неверно сформулировал, точней неполно .
Алаверды - а ты сам понимаешь сущность RANK ?
Это вообще-то длина группы в преобразованиях и сама группа . :)))

FPGAlover писал(а):
функция вызовется 16 раз и соответственно заполнит 16 логических регистров по 5бит номером канала ADC_Channel_0 и 16 логических регистров по 3бит со временем выборки.
И все. Танцы с бубном тут не при чем. Я вполне отдаю себе отчет что это и для чего это надо.
даже при
FPGAlover писал(а):
ADC_InitStructure.ADC_ScanConvMode = ENABLE;

будет всегда опрашиваться 0-й канал, как не крути.


А теперь без надумок :
функция вызовется 1 единственный раз с i==16 ....


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32f205: ADC меня игнорирует!
СообщениеДобавлено: Пн дек 09, 2013 15:12:54 
Прорезались зубы

Зарегистрирован: Пн окт 21, 2013 07:33:45
Сообщений: 210
Рейтинг сообщения: 0
Ну да.... сампл тайм привязан к конкретному каналу АЦП а не номеру выборки в регулярной последовательности. был не прав.
а на счет rank это действительно номер в опросе регулярной группы.
Кстати, не сильно логично объединение этих 2х функционалов в одну функцию ...
Цитата:
Это вообще-то длина группы в преобразованиях и сама группа

длинна группы это L[3:0], а если точнее, то ADC_SQR1[23:20]

а то что rank это индекс выборки очень неплохо вытекает хотя бы из того же SPL

Цитата:
if (Rank < 7)
{
tmpreg1 = ADCx->SQR3;
tmpreg2 = SQR3_SQ_SET << (5 * (Rank - 1));
tmpreg1 &= ~tmpreg2;
tmpreg2 = (uint32_t)ADC_Channel << (5 * (Rank - 1));
tmpreg1 |= tmpreg2;
ADCx->SQR3 = tmpreg1;
}

очевидно, что в зависимости от него номер канала кладется в нужную пятерку бит.

да, и
Цитата:
функция вызовется 1 единственный раз с i==16 ....

вызвалась 16 раз с i=1..16, доказано отладчиком :-)
в общем, камень я перепаял... результат тот же :(

_________________
Шоб я польку танцевал..


Последний раз редактировалось FPGAlover Пн дек 09, 2013 15:23:05, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32f205: ADC меня игнорирует!
СообщениеДобавлено: Пн дек 09, 2013 15:21:10 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 156
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
FPGAlover писал(а):

в общем, камень я перепаял... результат тот же :(



Да попробуй в Keil .
И может здесь что поможет http://ziblog.ru/2011/01/15/stm32-chast ... -atsp.html
Пока могу только гадать, ибо как и писал в железе не проверить .


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32f205: ADC меня игнорирует!
СообщениеДобавлено: Пн дек 09, 2013 15:24:19 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 156
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
FPGAlover писал(а):
вызвалась 16 раз с i=1..16, доказано отладчиком :-)

Упс , просмотрел- точки с запятой после цикла нет.
Да и не суть, один хрен танцы с бубном .
Посмотри как у ZIB конфигурируется , отличии от F205 минимальные должны быть .


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32f205: ADC меня игнорирует!
СообщениеДобавлено: Пн дек 09, 2013 16:11:59 
Прорезались зубы

Зарегистрирован: Пн окт 21, 2013 07:33:45
Сообщений: 210
Рейтинг сообщения: 0
dosikus писал(а):
Посмотри как у ZIB конфигурируется , отличии от F205 минимальные должны быть .

Видимо имеются :-) . Это ж для 1й серии.
Прям с ходу :
делитель входной частоты для АЦП там на RCC сделан, тут же родной регистр.
калибровка во 2й серии отсутствует как класс.
можно и дальше рыть, но одно знаю точно: когда я подобное на первой серии делал у меня все взвелось с первого раза...

_________________
Шоб я польку танцевал..


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32f205: ADC меня игнорирует!
СообщениеДобавлено: Пн дек 09, 2013 16:18:49 
Это не хвост, это антенна
Аватар пользователя

Карма: 12
Рейтинг сообщений: 102
Зарегистрирован: Вс дек 02, 2012 03:13:48
Сообщений: 1433
Откуда: Калининград
Рейтинг сообщения: 0
Похоже FPGAlover ты тут единственный специалист по STM32F2xx . У меня только STM32F1xx, STM32L1xx и STM32F303 есть.
STM32F2xx - какое-то специфическое семейство...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32f205: ADC меня игнорирует!
СообщениеДобавлено: Пн дек 09, 2013 16:31:54 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 156
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
FPGAlover писал(а):
Прям с ходу :
делитель входной частоты для АЦП там на RCC сделан, тут же родной регистр.
калибровка во 2й серии отсутствует как класс.
можно и дальше рыть, но одно знаю точно: когда я подобное на первой серии делал у меня все взвелось с первого раза...


Это все мелочи и легко обходятся , ядро АЦП аналогичное.
Вот только SPL тебе в этом нисколько не поможет , только чтение даташита .
И как попугай повторюсь - Keil и потыкать биты ...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32f205: ADC меня игнорирует!
СообщениеДобавлено: Пн дек 09, 2013 16:40:17 
Прорезались зубы

Зарегистрирован: Пн окт 21, 2013 07:33:45
Сообщений: 210
Рейтинг сообщения: 0
Цитата:
Вот только SPL тебе в этом нисколько не поможет , только чтение даташита

согласен. его то я и курю в основном(RM0033), а потом SPL трассирую. пока расхождений не найдено... нужные биты идут в нужные места :-)
Цитата:
все это мелочи

дьявол в нюансах!
balmer писал(а):
STM32F2xx - какое-то специфическое семейство

да, это я понял пока усб поднимал :-)

_________________
Шоб я польку танцевал..


Последний раз редактировалось FPGAlover Пн дек 09, 2013 21:17:58, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32f205: ADC меня игнорирует!
СообщениеДобавлено: Пн дек 09, 2013 18:10:59 
Прорезались зубы

Зарегистрирован: Пн окт 21, 2013 07:33:45
Сообщений: 210
Рейтинг сообщения: 0
Вобщем расклад регистров после инициализации такой:
Common Regs:
Common Regs:
CCR=00000000
CDR=00000000
CSR=00000000
ADC1 Regs:
CR1=0000000C
CR2=00000001
HTR=00000FFF
LTR=00000000
SMPR1=00000000
SMPR2=00000000
SQR1=00000000
SQR2=00000000
SQR3=00000000
SR=00000000
Но стоит хоть раз снять показания АЦП
Код:
       
        ADC_SoftwareStartConv(ADC1); 
        j=0;//для посмотреть сколько времени висит в цикле
        while (!(ADC1->SR & ADC_SR_EOC)) {
          j++;
        }
        uint16_t data = ADC_GetConversionValue(ADC1);

Как флаг STRT в регистре SR взводится и никуда не девается... Ручками то сбрасывается, но это ничего не дает
RM0033 писал(а):
Bit 4
STRT:
Regular channel start flag
This bit is set by hardware when regular channel conversion starts. It is cleared by software.
0: No regular channel conversion started
1: Regular channel conversion has started


Будем курить дальше :-)

_________________
Шоб я польку танцевал..


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32f205: ADC меня игнорирует!
СообщениеДобавлено: Пн дек 09, 2013 22:18:27 
Прорезались зубы

Зарегистрирован: Пн окт 21, 2013 07:33:45
Сообщений: 210
Рейтинг сообщения: 0
АААААААА!!!!! я уже практически все биты во всех регистрах наизусть знаю!!!!
Должно быть что то очевидное упущено!!!!

_________________
Шоб я польку танцевал..


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32f205: ADC меня игнорирует!
СообщениеДобавлено: Вт дек 10, 2013 10:50:49 
Прорезались зубы

Зарегистрирован: Пн окт 21, 2013 07:33:45
Сообщений: 210
Рейтинг сообщения: 0
Опросил 16 канал (температурный сенсор) - работает как надо! проверял феном :-)
т.е. блок АЦП настроен правильно...
но тогда в чем же дело??? GPIO неправильно настроен на нулевой канал???
проверял и 0й и 1й и 2й (все 3 разведены на плате)

_________________
Шоб я польку танцевал..


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 37 ]  1,  

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


Кто сейчас на форуме

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


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

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


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y