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

Errata GD32F103, проблемы с АЦП

Поиск ерраты на GD32F103 ни к чему не привел. Может, кто-то знает что по этому поводу?

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


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

2 часа назад, Arlleex сказал:

Может, кто-то знает что по этому поводу?

AN004 GD32F1 silicon limitations (rev2.1).pdf

Брал на сайте GD, сейчас ни в лоб, ни через гуглю не нашел. Странно, видимо плохо искал.

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


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

29 минут назад, Сергей Борщ сказал:

AN004 GD32F1 silicon limitations (rev2.1).pdf 86.77 кБ · 0 загрузок

Брал на сайте GD, сейчас ни в лоб, ни через гуглю не нашел. Странно, видимо плохо искал.

файл от 2015 года, я у них в 2019 году точно такой-же скачивал)

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


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

Спасибо, Сергей!

Я ожидал еррату посолиднее:biggrin:

Не уж то китайцы нормально окучивают сторонние IP-ядра?

У тех же STM даже в реализации самого ядра Cortex-M успели навертеть так, что в еррате во всех чипах первым пунктом...

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


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

Я просто к чему это все. Вот внизу этой статьи наткнулся на документ (статья, кстати, забавная, для любителей задержек на длительностях интсрукций CPU:wink:).

Мне нужно триггерить АЦП по таймеру, как я это делал в STM32F103 без каких-либо проблем. И вот глядя в вышепоказанный документ, вижу

image.png.f55c65094ee2aa4f6aca2a9576d84c79.png


Что-то я как-то не увидел этот момент в RM на GD. И в эррате нет. Откуда тогда это?

С пропускаемыми триггерами каши не сваришь, у меня 4 канала, нужно как-то знать последовательность завершения преобразований. Хотя с самой последовательностью, может, проблем и не будет, но точно прослеживается вероятность пропуска точек семплирования. Не хорошо. Их решение с "PWM trigger" мне вот вообще картину яснее не помогло увидеть. Я всегда предполагал, что триггер формируется внутри таймера всегда нужной длительности вне зависимости от того, как этот самый таймер настроен.

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


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

Я так понимаю, что замечание относится к триггеру от внешнего сигнала (extern pulse signal), и подразумевает, что длительность внешнего импульса должна быть больше чем период тактирования АЦП.

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


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

В общем, не заводится как-то АЦП на GD32F103.

Тактовая 72 МГц, на этой же тактовой сидит таймер TIMER0, по его событию переполнения (частота любая) пинается триггер АЦП.

В итоге: от пересброса к пересбросу (под отладчиком тыкаю на сброс) то встаю в точку останова (прерывание АЦП), то нет. Запускается 1 раз на 10.

Причем когда если запускается, то работает стабильно. Стоит снова сбросить МК - опять затуп. Таймер щелкает, АЦП-регистры настроены, а конверсия не запускается.

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

Такое чувство, что реально где-то на уровне клоковых доменов АЦП и шины APB импульс таймера то нормальный, то короткий (не успевает защелкнуться ADCCLK).

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


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

Пример инициализации, запуск АЦП по таймеру 100 мкс. Работает на GD32F105.   InitDevice.cpp

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


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

54 минуты назад, Edit2007 сказал:

Пример инициализации, запуск АЦП по таймеру 100 мкс. Работает на GD32F105.

Вижу, что Вы задействовали как раз режим сравнения таймера для формирования на CH1 сигнала, достаточного для обнаружения клоковым доменом ADC.

Полагаю, не с проста? Т.е. Вы тоже сначала настраивали триггер на событие UPDATE таймера? Или сразу настроили на COMPARE?

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


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

5 минут назад, Arlleex сказал:

Минус PWM-режима в том, что можно нарваться на грабли, когда частоты в процессе разработки будут двигаться и импульс PWM снова окажется коротким))

Записывать в compare-регистр значение, зависимое от делителя, задающего частоту? Например - в 2 раза меньше. На этом МК это невозможно?

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


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

Только что, jcxz сказал:

Записывать в compare-регистр значение, зависимое от делителя, задающего частоту? Например - в 2 раза меньше. На этом МК это невозможно?

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

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


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

В 11.04.2023 в 11:46, Arlleex сказал:

image.png.f55c65094ee2aa4f6aca2a9576d84c79.png

 


Что-то я как-то не увидел этот момент в RM на GD. И в эррате нет. Откуда тогда это?

А это не в эррате, это в другом документе: compatibility sumup between GD32 and STM32_V2.0.pdf

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


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

2 минуты назад, AHTOXA сказал:

А это не в эррате, это в другом документе...

Ну по сути тот же документ, который я выше прикрепил ссылкой)

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


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

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

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

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

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

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

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

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

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

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