Разрешение ADC STM32F091 10 бит вместо 12 бит

Giannidpc
SAT 24 июня 2017 г. 16:04
Я только что проверил АЦП на своей плате Nucleo STM32F091 и показывает 10-битную резолюцию, такую ​​как оригинал Arduino's, но моя доска поддерживает 12-битный. Если я заглядываю на исходный код, я вижу, что разрешение также определено как 12-битная.

Нужно ли мне установить что-то по-другому для достижения 12-битного разрешения?
Исходный код: https: // github.com/stm32duino/arduino_ ... /вариант.час
void setup() { Serial.begin(9600); } void loop() { long sensorValue = analogRead(0); Serial.println(sensorValue); }

Рик Кимбалл
SAT 24 июня 2017 г. 16:17
https: // github.com/stm32duino/arduino_c ... алог.C#L32

Может быть, вызов анагенпиляция (12) в setup ()

Giannidpc
SAT 24 июня 2017 г. 16:31
[Рик Кимбалл - Сб 24 июня 2017 г. 16:17] - https: // github.com/stm32duino/arduino_c ... алог.C#L32

Может быть, вызов анагенпиляция (12) в setup ()
Спасибо! это действительно делает свое дело.

Еще один вопрос, я определил АЦП на порту A0 в своем коде, и он работает нормально, когда я подключаю напряжение к A0. Но если я подключаю свой провод к A1, например, это также показывает мне это значение ADC, даже когда я не сказал своему коду сделать это. Это нормальное поведение?

Rogerclark
SAT 24 июня 2017 г. 11:15 вечера
[Рик Кимбалл - Сб 24 июня 2017 г. 16:17] - https: // github.com/stm32duino/arduino_c ... алог.C#L32

Может быть, вызов анагенпиляция (12) в setup ()
Это интересно.

В нем не понял, что ядро ​​Фредерикс не дефолт в разрешении AVR, мне интересно, что по умолчанию Даниэля по умолчанию.

КСТАТИ. Я не собираюсь менять то, что делает Libmaple, так как для него уже было написано множество кодов и ожидает 12 бит

Стивестронг
Солнце 25 июня 2017 г. 9:07
[Rogerclark - SAT 24 июня 2017 г. 11:15 вечера] - Кстати. Я не собираюсь менять то, что делает Libmaple, так как для него уже было написано множество кодов и ожидает 12 бит
Действительно, это кажется чистой проблемой arduino_core, а не основной.

Даниэфф
Солнце 25 июня 2017 г. 9:36 утра
[Rogerclark - SAT 24 июня 2017 г. 11:15] -
[Рик Кимбалл - Сб 24 июня 2017 г. 16:17] - https: // github.com/stm32duino/arduino_c ... алог.C#L32

Может быть, вызов анагенпиляция (12) в setup ()
Это интересно.

В нем не понял, что ядро ​​Фредерикс не дефолт в разрешении AVR, мне интересно, что по умолчанию Даниэля по умолчанию.

КСТАТИ. Я не собираюсь менять то, что делает Libmaple, так как для него уже было написано множество кодов и ожидает 12 бит
10 бит. анализародование Является ли стандартный API Arduino для изменения аналогичных битов по умолчанию 10.

Ахулл
Солнце 25 июня 2017 г. 10:25
ПРИМЕЧАНИЕ. Глядя на документацию API, кажется, что изменение разрешения с использованием анализародолизации (x) просто изменяет разрешение результата.
12 -битное чтение все еще будет выполнено, в случае ADC STM32FXXX.
Другими словами, снижение разрешения не приведет к более быстрым аналогом вызовов чтения и на самом деле может сделать их медленнее, поскольку вызов также будет включать время, необходимое для масштабирования результата в требуемый диапазон.

Рик Кимбалл
Солнце 25 июня 2017 12:40
[Giannidpc - Сб 24 июня 2017 г. 16:31] - Еще один вопрос, я определил АЦП на порту A0 в своем коде, и он работает нормально, когда я подключаю напряжение к A0. Но если я подключаю свой провод к A1, например, это также показывает мне это значение ADC, даже когда я не сказал своему коду сделать это. Это нормальное поведение?
Я не понимаю вопрос. Это «показывает вам значение АЦП», что это значит? Можете ли вы опубликовать код, который вы используете?

Рик Кимбалл
Солнце 25 июня 2017 12:48
[Ахулл - Солнце 25 июня 2017 г. 10:25] - ПРИМЕЧАНИЕ. Глядя на документацию API, кажется, что изменение разрешения с использованием анализародолизации (x) просто изменяет разрешение результата.
12 -битное чтение все еще будет выполнено, в случае ADC STM32FXXX.
Другими словами, снижение разрешения не приведет к более быстрым аналогом вызовов чтения и на самом деле может сделать их медленнее, поскольку вызов также будет включать время, необходимое для масштабирования результата в требуемый диапазон.
Картирование довольно простое, когда они разные, просто сдвиг. Реальные накладные расходы-гигантская библиотека HAL, сидящая перед ADC в сочетании с менталитетом Arduino Lazy PIN. Если вы хотите выполнить оптимальную выборку АЦП с высокой скоростью, то вы, вероятно, хотите отойти от кода Arduino и реализовать его с кодом, родным для чипа, который вы используете.

Giannidpc
Солнце 25 июня 2017 13:26
[Рик Кимбалл - Солнце 25 июня 2017 12:40] -
[Giannidpc - Сб 24 июня 2017 г. 16:31] - Еще один вопрос, я определил АЦП на порту A0 в своем коде, и он работает нормально, когда я подключаю напряжение к A0. Но если я подключаю свой провод к A1, например, это также показывает мне это значение ADC, даже когда я не сказал своему коду сделать это. Это нормальное поведение?
Я не понимаю вопрос. Это «показывает вам значение АЦП», что это значит? Можете ли вы опубликовать код, который вы используете?
Ну, код такой же, как в моем первом посте. Но я имею в виду, что я определил A0 как свой аналоговый вывод в коде, и я получаю свой вывод от серийного монитора, как и ожидалось, то есть 4095 при использовании 12-битного разрешения.

Но когда я отключаю 5V от A0 и подключаю его к A1, серийный монитор все еще показывает мне тот же результат, так что 4095. Я не ожидаю этого, так как я определил A0 как свой аналоговый PIN -код в коде, а не A1.

Рик Кимбалл
Солнце 25 июня 2017 г. 13:35
Я уверен, что вы должны использовать A0, а не 0 и A1, а не 1, так я и тестировал. В противном случае это не собирается поступить правильно:

Читать A0: void setup() { Serial.begin(9600); analogReadResolution(12); } void loop() { long sensorValue = analogRead(A0); Serial.println(sensorValue); }

Рик Кимбалл
Солнце 25 июня 2017 14:21
[Giannidpc - Солнце 25 июня 2017 г. 13:26] - Но когда я отключаю 5V от A0 и подключаю его к A1, серийный монитор все еще показывает мне тот же результат, так что 4095. Я не ожидаю этого, так как я определил A0 как свой аналоговый PIN -код в коде, а не A1.
Кроме того, вы не должны подключать 5 В к какому -либо аналоговому штифту. При использовании в качестве аналогового ввода максимальное напряжение составляет 3.3В. Вы рискуете жарить аналоговое периферийное устройство.

Из таблицы данных:
TTA 3.3 V-толерантный ввод/вывод, непосредственно подключенный к ADC ..
PA1 помечен TTA

Ахулл
Солнце 25 июня 2017 г. 14:25
[Giannidpc - Солнце 25 июня 2017 г. 13:26] -
[Рик Кимбалл - Солнце 25 июня 2017 12:40] -
[Giannidpc - Сб 24 июня 2017 г. 16:31] - Еще один вопрос, я определил АЦП на порту A0 в своем коде, и он работает нормально, когда я подключаю напряжение к A0. Но если я подключаю свой провод к A1, например, это также показывает мне это значение ADC, даже когда я не сказал своему коду сделать это. Это нормальное поведение?
Я не понимаю вопрос. Это «показывает вам значение АЦП», что это значит? Можете ли вы опубликовать код, который вы используете?
Ну, код такой же, как в моем первом посте. Но я имею в виду, что я определил A0 как свой аналоговый вывод в коде, и я получаю свой вывод от серийного монитора, как и ожидалось, то есть 4095 при использовании 12-битного разрешения.

Но когда я отключаю 5V от A0 и подключаю его к A1, серийный монитор все еще показывает мне тот же результат, так что 4095. Я не ожидаю этого, так как я определил A0 как свой аналоговый PIN -код в коде, а не A1.
Я не уверен, что следую. Если вы смотрите на PIN A1, но ваш вход находится на выводе A0, то если A1 не связан с высоким или низким уровнем, он вполне может дрейфовать к уровню соседнего штифта (ы).

Я получил бы пару линейных ям 100 тыс., Строил их между 5 В и ГНД, и указал бы дворники на контактах A0 и A1, и медленно вращал стеклоочиститель с конца GND к концу 5V.

Вы должны увидеть значения на аналоговых выводах, которые пройдут, пока не достигнет максимума, когда выходной разделитель напряжения, образованный 100 -километровым горшком, попадает около 3.3В .. Что произойдет дальше, если вы перемещаете стеклоочиститель дальше, скорее зависит от того, насколько надежны выводы STM32F103, которые вы выбрали.

Если они терпимы на 5 В (помните, что STM32F103 - 3.3V устройство, а не 5 В, один), затем они останутся на максимальном значении, и когда вы поверните стеклоочиститель обратно в сторону GND, значение снова начнет падать. Если они не терпимы на 5 В, будет много тепла, возможно, немного дыма, и вы принесете себе почетное членство в нашем хорошо посещенном клубе Magic Smoke Club. : Twisted:

Еще лучше, проверьте спецификацию. Сначала из булавок в таблице данных STM32F103, чтобы убедиться, что они пострадают от такого неправильного использования.

РЕДАКТИРОВАТЬ: Спасибо, Рик, я должен признать.

Рик Кимбалл
Солнце 25 июня 2017 14:28
[Ахулл - Солнце 25 июня 2017 г. 14:25] - Если они терпимы на 5 В (помните, что STM32F103 - 3.3V устройство, а не 5 В, один), затем они останутся на максимальном значении, и когда вы поверните стеклоочиститель обратно в сторону GND, значение снова начнет падать. Если они не терпимы на 5 В, будет много тепла, возможно, немного дыма, и вы принесете себе почетное членство в нашем хорошо посещенном клубе Magic Smoke Club. : Twisted:

Еще лучше, проверьте спецификацию. Сначала из булавок в таблице данных STM32F103, чтобы убедиться, что они пострадают от такого неправильного использования.

РЕДАКТИРОВАТЬ: Спасибо, Рик, я должен признать.
Он использует STM32F091RC, материал Cortex-M0 с ядром STM.

Ахулл
Солнце 25 июня 2017 г. 14:38
[Рик Кимбалл - Солнце 25 июня 2017 г. 14:28] -
[Ахулл - Солнце 25 июня 2017 г. 14:25] - Если они терпимы на 5 В (помните, что STM32F103 - 3.3V устройство, а не 5 В, один), затем они останутся на максимальном значении, и когда вы поверните стеклоочиститель обратно в сторону GND, значение снова начнет падать. Если они не терпимы на 5 В, будет много тепла, возможно, немного дыма, и вы принесете себе почетное членство в нашем хорошо посещенном клубе Magic Smoke Club. : Twisted:

Еще лучше, проверьте спецификацию. Сначала из булавок в таблице данных STM32F103, чтобы убедиться, что они пострадают от такого неправильного использования.

РЕДАКТИРОВАТЬ: Спасибо, Рик, я должен признать.
Он использует STM32F091RC, материал Cortex-M0 с ядром STM.
В этом случае, от моего короткого трали через таблица данных (Глава 6 - Электрические характеристики) Я подозреваю, что выкапывать аналоговые булавки с 5V, вероятно, довольно хороший способ вступить в клуб Magic Smoke Club. ;)

Giannidpc
Солнце 25 июня 2017 г. 14:52
[Ахулл - Солнце 25 июня 2017 г. 14:38] -
[Рик Кимбалл - Солнце 25 июня 2017 г. 14:28] -
[Ахулл - Солнце 25 июня 2017 г. 14:25] - Если они терпимы на 5 В (помните, что STM32F103 - 3.3V устройство, а не 5 В, один), затем они останутся на максимальном значении, и когда вы поверните стеклоочиститель обратно в сторону GND, значение снова начнет падать. Если они не терпимы на 5 В, будет много тепла, возможно, немного дыма, и вы принесете себе почетное членство в нашем хорошо посещенном клубе Magic Smoke Club. : Twisted:

Еще лучше, проверьте спецификацию. Сначала из булавок в таблице данных STM32F103, чтобы убедиться, что они пострадают от такого неправильного использования.

РЕДАКТИРОВАТЬ: Спасибо, Рик, я должен признать.
Он использует STM32F091RC, материал Cortex-M0 с ядром STM.
В этом случае, от моего короткого трали через таблица данных (Глава 6 - Электрические характеристики) Я подозреваю, что выкапывать аналоговые булавки с 5V, вероятно, довольно хороший способ вступить в клуб Magic Smoke Club. ;)
Спасибо, что указали на это! Я действительно глуп, делая что -то, прежде чем прочитать лист данных. По крайней мере, все все еще работает, и я не видел никакого дыма, ха -ха.

Рик Кимбалл
Солнце 25 июня 2017 г. 15:01
[Giannidpc - Солнце 25 июня 2017 г. 14:52] - Спасибо, что указали на это! Я действительно глуп, делая что -то, прежде чем прочитать лист данных. По крайней мере, все все еще работает, и я не видел никакого дыма, ха -ха.
Это то, что люди из 60 -х годов сказали о ЛСД :) Просто подожди ...

Ахулл
Солнце 25 июня 2017 г. 16:03
Изображение

Что нет волшебного дыма... Я почти разочарован. ;)

fpistm
Вт 27 июня 2017 12:20
вау, здесь много дыма :)

Подводя итог, STM32 - 3.3V, основанная таким образом, предоставить 5V в качестве входного АЦП должен принести какое -то странное поведение... В основном для чтения АЦП.

К вашему сведению, на следующем выпуске анализа (0) и анализа (A0) будут эквивалентны.
Принимая во внимание, что аналог (0) эквивалентна аналоге (D0) .

Rogerclark
Вт 27 июня 2017 12:52
На тему Волшебного дыма, я уверен, что я случайно освоил доску F103VET или в нескольких часах 5 В, и он выжил !

Я думаю, что в целом MCU STM32F103 довольно устойчив

ZMEMW16
Вт 27 июня 2017 г. 15:26
Роджер,
не могли бы вы попробовать это с 7.5 В / 9 В / 12 В и сообщите о ваших выводах : D
на самом деле 12V был бы излишним, так как я уже знаю, что ответ обилен.
Стивен

Рик Кимбалл
Вт 27 июня 2017 г., 17:39
[fpistm - Вт 27 июня 2017 12:20] - вау, здесь много дыма :)

Подводя итог, STM32 - 3.3V, основанная таким образом, предоставить 5V в качестве входного АЦП должен принести какое -то странное поведение... В основном для чтения АЦП.

К вашему сведению, на следующем выпуске анализа (0) и анализа (A0) будут эквивалентны.
Принимая во внимание, что аналог (0) эквивалентна аналоге (D0) .
Я попробовал последнюю версию исходного кода GitHub с этим изменением, и я могу убедиться, что она действительно работает всего лишь 1 сейчас в дополнение к A1.

Rogerclark
Вт 27 июня 2017 г., 21:32
[ZMEMW16 - Вт 27 июня 2017 г. 15:26] - Роджер,
не могли бы вы попробовать это с 7.5 В / 9 В / 12 В и сообщите о ваших выводах : D
на самом деле 12V был бы излишним, так как я уже знаю, что ответ обилен.
Стивен
Я могу попробовать 5В еще раз, потому что у меня есть 2 старых красных досок таблеток, которые уже частично разбиты, так как USB -соединения продолжают ломаться