Closed DmitrijProF closed 6 years ago
@DmitrijProF See 1986VE1T datasheet (Таблица 304 – Описание бит регистра ADCx_CFG)
@DmitrijProF You can use preprocessor to enable this fields for not all MCU.
Current SPL is for 1986VE9x, 1986VE3T, 1901VC1T and 1986VE1T. In datasheets maximum divider is:
We manually checked divider greater then 2048 for 1986VE1T. Result was the same as for 1986VE9x: ADC was clocked directly from system clock. So, it seems there is a bug in 1986VE1T datasheet.
@DmitrijProF you should to report about this issue to milandr support and repost what they say
Finally!
From: Отдел технической поддержки ЦП ИС АО ПКК Миландр To: DmitrijProF
- В спецификации на микроконтроллер 1986ВЕ1Т в таблице 304 (описание бит регистра ADCx_CFG) указано, что максимальный коэффициент деления входной частоты (биты 15..12) составляет 32768. Мы проверили это экспериментально на имеющемся в наличии микроконтроллере (ревизия 4, выпуск 1444) и выяснили, что максимальный коэффициент деления - 2048, как и в других близких МК (1986ВЕ9x, 1986ВЕ3Т, 1901ВЦ1Т). При превышении максимального делителя АЦП начинает тактироваться напрямую. В официальной сборке Standard Peripherals Library для этих микроконтроллеров так же определены делители до 32768 (группа ADC Clock Prescaler в файле MDR32F9Qx_adc.h). Является ли это ошибкой спецификации или нашего макетирования?
Вы правы. В спецификации на 1986ВЕ9х это указано в табл. 294 стр. 315. В 1901ВЦ1 тоже тоже самое. В спецификацию на 1986ВЕ1Т будет внесено исправление, задание писателям поставлено. В SPL значения менять не будем, поскольку возможно в ранних ревизиях коэффициент не имел ограничения.
Мне кажется, что было бы правильнее проверить ранние ревизии и сделать условную трансляцию, если в них ограничения действительно не было. Просто ничего не менять, потому что "может быть раньше это было правильно" - это как-то не очень, прямо скажем, в новых ревизиях-то точно есть ограничение. Хотя бы можно выяснить, начиная с какой ревизии это ограничение точно появилось, и в SPL ввести коррекцию аналогично, а для более ранних ревизий - ничего не менять. Тем более, по SPL с помощью doxygen генерируется хелп, которым иногда пользуются, и который запросто введёт в заблуждение по поводу возможных предделителей. На самом деле, не совсем понятно, чем продиктована боязнь менять SPL. SPL ведь сама собой не обновляется у пользователей на машинах. А если пользователь ее обновляет сам, то он должен быть готов, что что-то может сломаться. Ну и будем честны, люди, которые используют старые ревизии процессоров, вряд ли будут SPL обновлять -_-'
...
- Информация про делитель <...> передана сотруднику отвечающему за SPL.
What do you think about correcting SPL?
@DmitrijProF I'm OK with this corrections. I think we shouldn't make possible to use possibilities that don't support with all MCU in one serie because this break interchangeability of MCU different revisions. I don't understand of support opinion. What about the MDR1986BE4?
I asked support. Here's response:
В свете обсуждения делителя АЦП в 1986ВЕ1Т возник ещё один вопрос: а как обстоят дела в 1986ВЕ4У? И в его спецификации, и в SPL так же указан диапазон 1-32768. Это ошибка? К сожалению, сам проверить не могу: мы ещё не сталкивались с этими МК, у меня его нет.
Да, в 1986ВЕ4У делитель работает так-же. Тикет писателям завели.
So, there is a bug too. Pull request created.
@DmitrijProF thank you
There is a problem with ADC divider.
In Datasheet:
In MDR32F9Qx_adc.h:
So, if you use divider greater then 2048 ADC will be clocked from HCLK directly. Checked experimentally.