Пакеты поддержки модулей для ЗОСРВ «Нейтрино» > ARMv7 > BSP для Xilinx Zynq 7000 > Описание компонентов > Список компонентов, входящих в состав ППМ > xadc-zynq7000



xadc-zynq7000

Менеджер XADC для Xilinx Zynq 7000

Синтаксис:

xadc-zynq7000

Платформы:

ЗОСРВ «Нейтрино»

Целевые архитектуры:

armv7

Описание:

Менеджер XADC предоставляет программный интерфейс для доступа к встроенному аналогово-цифровому преобразователю (XADC). Он позволяет читать внутренние параметры, такие как температура кристалла, напряжения питания, а также настраивать режимы преобразования, управлять внешними аналоговыми входами, задавать пороги срабатывания тревог.

Менеджер XADC создаёт устройство /dev/xadc. Открытие устройства автоматически включает XADC.

Команды devctl() для XADC в блоке регистров devcfg:

Команда
Тип данных
Описание
DCMD_XADC_CFG_INIT
-
Включить XADC
DCMD_XADC_SET_CFG_REG
uint32_t
Задать конфигурацию XADC
DCMD_XADC_GET_CFG_REG
uint32_t
Прочитать конфигурацию XADC
DCMD_XADC_GET_MISC_STATUS
uint32_t
Прочитать статусы из Interface Miscellaneous Status
DCMD_XADC_GET_MISC_CTRL_REG
uint32_t
Прочитать параметры из Interface Miscellaneous Control
DCMD_XADC_RESET
-
Сбросить XADC
DCMD_XADC_INTR_ENABLE
uint32_t
Включить заданные прерывания
DCMD_XADC_INTR_DISABLE
uint32_t
Выключить заданные прерывания
DCMD_XADC_INTR_GET_ENABLED
uint32_t
Прочитать маску включённых прерываний
DCMD_XADC_INTR_GET_STATUS
uint32_t
Прочитать статус прерываний
DCMD_XADC_INTR_CLEAR
uint32_t
Очистить заданные прерывания

Команды devctl() для внутренних регистров XADC:

Команда
Тип данных
Описание
DCMD_XADC_GET_ADC_DATA
zynq7000_xadc_data_read_t
Прочитать преобразованные данные АЦП для указанного канала
DCMD_XADC_GET_CALIB_COEFF
zynq7000_xadc_calib_coeff_read_t
Прочитать данные калибровочного коэффициента для указанного параметра
DCMD_XADC_GET_MIN_MAX_MSRMT
zynq7000_xadc_min_max_measure_read_t
Прочитать максимальное/минимальное значение для указанного параметра
DCMD_XADC_SET_AVG
uint8_t
Задать количество выборок, используемых для усреднения, для всех каналов
DCMD_XADC_GET_AVG
uint8_t
Прочитать количество выборок, используемых для усреднения, для всех каналов
DCMD_XADC_SET_SINGLE_CH_PARAM
zynq7000_xadc_single_ch_params_t
Установить параметры для Configuration Register 0 в режиме одиночного канала
DCMD_XADC_SET_ALARM_ENABLES
zynq7000_xadc_alarm_enables_write_t
Установить маску включаемых тревог
DCMD_XADC_GET_ALARM_ENABLES
uint16_t
Прочитать маску включаемых тревог
DCMD_XADC_SET_CALIB_ENABLES
uint16_t
Установить маску включаемых типов калибровки
DCMD_XADC_GET_CALIB_ENABLES
uint16_t
Прочитать маску включаемых типов калибровки
DCMD_XADC_SET_SEQUENCER_MODE
uint8_t
Установить маску режима секвенсора каналов
DCMD_XADC_GET_SEQUENCER_MODE
uint8_t
Прочитать маску режима секвенсора каналов
DCMD_XADC_SET_ADC_CLK_DIVISOR
uint8_t
Задать делитель DCLK
DCMD_XADC_GET_ADC_CLK_DIVISOR
uint8_t
Прочитать значение делителя DCLK
DCMD_XADC_SET_SEQ_CH_ENABLES
zynq7000_xadc_seq_write_t
Включить указанные каналы в регистрах секвенсора АЦП
DCMD_XADC_GET_SEQ_CH_ENABLES
uint32_t
Прочитать маску включённых каналов в регистрах секвенсора АЦП
DCMD_XADC_SET_SEQ_AVG_ENABLES
zynq7000_xadc_seq_write_t
Включить усреднение для указанных каналов в регистрах секвенсора включения усреднения АЦП
DCMD_XADC_GET_SEQ_AVG_ENABLES
uint32_t
Прочитать маску включённых усреднений для указанных каналов в регистрах секвенсора включения усреднения АЦП
DCMD_XADC_SET_SEQ_INPUT_MODE
zynq7000_xadc_seq_write_t
Установить режим аналогового входа для указанных каналов в регистрах секвенсора аналоговых входов АЦП
DCMD_XADC_GET_SEQ_INPUT_MODE
uint32_t
Прочитать режим аналогового входа для всех каналов в регистрах секвенсора аналоговых входов АЦП
DCMD_XADC_SET_SEQ_ACQ_TIME
zynq7000_xadc_seq_write_t
Установить количество циклов выборки в регистрах секвенсора времени выборки АЦП
DCMD_XADC_GET_SEQ_ACQ_TIME
uint32_t
Прочитать количество циклов выборки в регистрах секвенсора времени выборки АЦП
DCMD_XADC_SET_ALARM_THRESHOLD
zynq7000_xadc_alarm_threshold_t
Задать пороговое значение для срабатывания тревоги
DCMD_XADC_GET_ALARM_THRESHOLD
zynq7000_xadc_alarm_threshold_t
Прочитать пороговое значение для срабатывания тревоги
DCMD_XADC_ENABLE_USER_OVER_TEMP
-
Разрешить возможность задания пороговой температуры отключения по сигналу OverTemp
DCMD_XADC_DISABLE_USER_OVER_TEMP
-
Запретить возможность задания пороговой температуры отключения по сигналу OverTemp
DCMD_XADC_SET_SEQUENCER_EVENT
int
Включить режим событий (1) или непрерывный режим (0)
DCMD_XADC_GET_SAMPLING_MODE
int
Прочитать режим выборки (режим событий или непрерывный режим)
DCMD_XADC_SET_MUX_MODE
zynq7000_xadc_mux_mode_t
Установить режим внешнего мультиплексора
DCMD_XADC_SET_POWER_DOWN_MODE
uint32_t
Настроить режим отключения питания. Используются макросы XADC_PD_MODE_*
DCMD_XADC_GET_POWER_DOWN_MODE
uint32_t
Прочитать конфигурацию режима отключения питания
DCMD_XADC_WRITE_INTERNAL_REG
zynq7000_xadc_internal_reg_t
Записать данные во внутренние регистры XADC
DCMD_XADC_READ_INTERNAL_REG
zynq7000_xadc_internal_reg_t
Прочитать данные из внутренних регистров XADC

Структура zynq7000_xadc_data_read_t:

typedef struct {
uint8_t channel;
uint16_t data;
} zynq7000_xadc_data_read_t;

Поля структуры:

channel
Номер канала:
ZYNQ7000_XADC_CH_*
data
Считанное значение.

Структура zynq7000_xadc_calib_coeff_read_t:

typedef struct {
uint8_t coeff_type;
uint16_t calib_coeff;
} zynq7000_xadc_calib_coeff_read_t;

Поля структуры:

coeff_type
Тип калибровочного коэффициента:
ZYNQ7000_XADC_CALIB_*
calib_coeff
Считанный калибровочный коэффициент.

Структура zynq7000_xadc_min_max_measure_read_t:

typedef struct {
uint8_t measurement_type;
uint16_t min_max_measure;
} zynq7000_xadc_min_max_measure_read_t;

Поля структуры:

measurement_type
Тип измерения:
ZYNQ7000_XADC_MAX_*
ZYNQ7000_XADC_MIN_*
min_max_measure
Считанное минимальное/максимальное значение измерения.

Структура zynq7000_xadc_single_ch_params_t:

typedef struct {
uint8_t channel;
int increase_acq_cycles;
int is_event_mode;
int is_differential_mode;
int result_code;
} zynq7000_xadc_single_ch_params_t;

Поля структуры:

channel
Номер канала:
ZYNQ7000_XADC_ATR_*
ZYNQ7000_XADC_AUX*
increase_acq_cycles
Флаг, определяющий время выборки для внешних каналов как 10 тактов ADCCLK (1) или 4 такта ADCCLK (0).
is_event_mode
Флаг, определяющий режим непрерывной выборки (0) или выборки управляемой событиями (1).
is_differential_mode
Флаг, определяющий однополярный (0) или дифференциальный (1) режим для аналоговых входов.
result_code
Код завершения.

Структура zynq7000_xadc_alarm_enables_write_t:

typedef struct {
uint16_t mask;
struct sigevent event;
int enable;
} zynq7000_xadc_alarm_enables_write_t;

Поля структуры:

mask
Битовая маска включаемых сигналов тревоги:
ZYNQ7000_XADC_CFR1_ALM_*
event
Идентификатор для отправки уведомления при срабатывании тревоги.
enable
Флаг, определяющий включение тревоги:
ZYNQ7000_XADC_ALARM_ENABLE
Тревога включена
ZYNQ7000_XADC_ALARM_DISABLE
Тревога выключена

Структура zynq7000_xadc_seq_write_t:

typedef struct {
uint32_t mask;
int result_code;
} zynq7000_xadc_seq_write_t;

Поля структуры:

mask
Битовая маска включаемых сигналов:
ZYNQ7000_XADC_SEQ_CH_*
result_code
Код завершения.

Структура zynq7000_xadc_alarm_threshold_t:

typedef struct {
uint8_t alarm_thr_reg;
uint16_t value;
} zynq7000_xadc_alarm_threshold_t;

Поля структуры:

alarm_thr_reg
Регистр порогового значения тревоги:
ZYNQ7000_XADC_ATR_*
value
Пороговое значение срабатывания тревоги.

Структура zynq7000_xadc_mux_mode_t:

typedef struct {
int mux_mode;
uint8_t channel;
} zynq7000_xadc_mux_mode_t;

Поля структуры:

mux_mode
Флаг, определяющий использование внешнего мультиплексора. 1 - включен, 0 - выключен.
channel
Номер канала, используемый внешним мультиплексором.

Структура zynq7000_xadc_internal_reg_t:

typedef struct {
uint32_t offset;
uint32_t data;
} zynq7000_xadc_internal_reg_t;

Поля структуры:

offset
Сдвиг внутреннего регистра XADC.
data
Данные для записи/чтения.


Caution: При использовании необходимо убедиться, что PL не препятствует работе XADC.

Для использования вышеупомянутых макросов и структур необходимо подключить заголовочный файл hw/xadc.h.

Классификация:

BSP для систем на базе процессора Zynq 7000, драйверы




Предыдущий раздел: перейти