Наконец у меня появилось время снять характеристику АЦП. Делюсь результатами. Снимал на плате WeAct Studio CH592F. Схема эксперимента:

Для задания напряжения использовались 2 канала ШИМ - грубый и точный, со "склейкой" при переключении грубого канала ШИМ.
Разряд АЦП почти точно соответствует 4 отсчетам точного ШИМ, так что все склейки и дискретности измерения получились с разрешением 1/4 разряда АЦП
Для каждой точки (отсчета точного ШИМ) выполнялось 16 измерений АЦП с усреднением.
Желающим повторить мой подвиг

выкладываю так-же код тестирования (во вложении). Все внешние функции и определения (например функции задержки, настройки GPIO и пр.) можно заменить на свои, там по названиям понятно что они делают.
ЗЫ: Не прикрепляется экселовский файл в .zip размером 1.1М. Выложил в облаке, вот ссылка:
Вам открыли доступ к файлу. Отправлено с помощью Облако Mail
cloud.mail.ru
Столбец A - напряжения в mV
Столбец B - коды АЦП
Столбец I - идеальные рассчитаные кода АЦП (по 2 крайним точкам)
Столбец K - интегральная нелинейность
Столбец M - дифф. нелинейность
Резюме:
интегральная нелинейность = -5...+5 разрядов АЦП
дифф.нелинейность = -1...+3 разряда АЦП
Еще по данным можно отследить, что у кодов АЦП плохая склейка при переходах (переполнении) младших 7 разрядов - на кодах 128, 256, 384... Плохая - имеется в виду относительно других участков.