Перейти к содержанию
    

ой. что то я в даташит не нашел даже упоминания о регистре с заводской калибровкой. поиск по адресу 0x1FF80078 тоже не дал результатов. у STM32F303VCT6 такой навороченный ADC не может быть чтоб у него не было этой опции.

0x1FFFF7BA

Учу читать даташиты. Дорого :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

весь даташит перерыл.

Есть понятие RM - там описывается семейство МК, и нет сведений о конкретных моделях: распиновке, особенностях питания и "заводским" регистрам.

А есть понятие даташита — там описывается конкретная линейка с распиновкой и всякой всячиной.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Фигасе :laughing:

спасибки. теперь вижу. у меня поиск почему то не находит.

 

а что значит 0x1FFF F7BA - 0x1FFF F7BB? данные лежат в двух регистрах? получается громадное знечение.

Изменено пользователем Jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

спасибки. теперь вижу. у меня поиск почему то не находит.

 

а что значит 0x1FFF F7BA - 0x1FFF F7BB? данные лежат в двух регистрах? получается громадное знечение.

Аграмадное!!!! 16 бит (;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

спасибки. теперь вижу. у меня поиск почему то не находит.

Искать надо уметь :laughing: Говорят, где-то даже проводят соревнования по поиску в интернете :laughing:

 

а что значит 0x1FFF F7BA - 0x1FFF F7BB? данные лежат в двух регистрах? получается громадное знечение.

Вы будете смеяться, но 16-разрядное число занимает в памяти аккурат 2 байта, то есть 0x1FFFF7BA - 0x1FFFF7BB

 

А почему у вас рядом с ником написано "профессионал"? :smile3009:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Аграмадное!!!! 16 бит (;

как это у вас получается? регистр 32 бита.

 

ура. работает.

vref_data = ADC_Read(ADC1, ADC_Channel_Vrefint);

vref_cal = *(uint16_t*)0x1FFFF7BA;

vref = (3300 * vref_cal) / vref_data;

 

получаю 2.97 вольта. вольтметр меряет 2.94 но это китайский, флюка под рукой нет.

Изменено пользователем Jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

как это у вас получается? регистр 32 бита.

 

ура. работает.

vref_data = ADC_Read(ADC1, ADC_Channel_Vrefint);

vref_cal = *(uint16_t*)0x1FFFF7BA;

vref = (3300 * vref_cal) / vref_data;

 

получаю 2.97 вольта. вольтметр меряет 2.94 но это китайский, флюка под рукой нет.

 

И вас не смутило, что этот якобы "регистр" расположен по некратному 4 адресу?

 

А почему у вас рядом с ником написано "профессионал"?

На день ангела подарили… Ж8-/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А можно настроить АЦП так, чтобы каждую отдельную выборку стартовать программно, а всю серию в буфер сохранять через ПДП с прерыванием после окончания серии? Попробовал, вижу, что EOC не устанавливается. Повторил необходимое ПДП количество выборок - прерывания ПДП не последовало. Наверное это принципиально неправильный подход?

Изменено пользователем ozforester

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Т.е. вас устраивает "пинать" АЦП ради каждого отсчёта, но "ломает" забирать каждый результат?
Может всёже запуск каждого измерения "поручить" таймеру?

EOC не устанавливается...прерывания ПДП не последовало...
Чудеса какие-то... как ПДП может "необходимое ... количество выборок" без соответствующего числа EOC?
Изменено пользователем Obam

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Была лаба на достижение высокой скорости выборок, adc contimuos + dma. Эта просто сразу заработала, без проблем. Всё как в рефренсе сказано. Подал на ацп тестовый сигнал с таймера, засинхронизировал их запуск от третьего таймера. Попробую видео приложить. (там еще один таймер форму сигнала меяет, чтобы боковым зрением подвисание заметить вовремя)

        ADC1->CFGR1 |= ADC_CFGR1_EXTEN_0|ADC_CFGR1_EXTSEL_1|ADC_CFGR1_EXTSEL_0 ;
    ..
        ADC1->CFGR1 |= ADC_CFGR1_CONT|ADC_CFGR1_OVRMOD|ADC_CFGR1_DMAEN ;

А когда стал пробовать одиночные выборки с вызовом dma, что-то пошло не так. Может флаг какой не учитываю. Инициализирую adc и dma, делаю одну выборку и не вижу окончание преобразования. Выглядит так, словно по первой выборке dma вдруг полностью отработал (что ещё чудесатее). Только cmsis и референс. Магии минимум. Думал, уберу continuos и дерну необходимое количество раз adc, который сам дернет пдп столько же раз, и тот, заполнив буфер, скажет всем спасибо из прерывания "передача завершена". В очередной раз отыскалась проблема на ровном месте.

p.s. Получается, что на первый вопрос ответ "Да". Так нужно для понимания процесса. (=

Как бы ни при чем, но еще adc ремаппил на другой канал dma, просто проверил заодно, как оно работает. Связи не ищу, лишь для полноты картины.

Изменено пользователем ozforester

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...