Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года

Калибровка E-502

Вы не вошли.

 Поиск | Регистрация | Вход 

Дмитрий Денисов
10.09.2020 16:29:10
#1

Гость

Калибровка E-502

Добрый день!
При конфигурировании модуля E502 необходимо записать коэффициенты смещения и шкалы в регистры ADC_COEF_xxx (блок IO_ARITH). Эти регистры являются 32-разрядными (Таблица 3.16 Низкоуровнего описания программиста).
Эти коэффициенты считываются из Flash-памяти в виде переменных типа double (Таблица 3.28 Низкоуровнего описания программиста).
Как перевести значение считанных коэффициентов из типа double в 32-разрядное значение, которое нужно записать в регистры ADC_COEF_xxx (блок IO_ARITH)?

11.09.2020 00:26:36
#2

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,292

Re: Калибровка E-502

Добрый день.
Да, действительно, похоже формат значений остался не описанным.
Коэффициент k представлен как число с фиксированной точкой, где 30 младших бит - дробная часть, т.е. код  0x400000 соответствует единичному коэффициенту.
Коэффициент b уже представлен во flash в виде кода АЦП, поэтому дробная часть просто отбрасывается как не информативная, Единственное  коэффициент, записываемый в ПЛИС, и коэффициент вл flash отличаются по знаку.
Код библиотеки для преобразования коэффициентов в значения регистров выгладит следующим образом:

        uint32_t kval = (uint32_t)(k*0x400000);
        uint32_t offs_val = (uint32_t)(-offs);

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2

Многоканальный телефон:
+7 (495) 785-95-25

Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск