3130 lines
153 KiB
C
3130 lines
153 KiB
C
#ifndef X502API_H
|
|
#define X502API_H
|
|
|
|
|
|
|
|
#include "lcard_pstdint.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#ifdef _WIN32
|
|
#ifndef WIN32_LEAN_AND_MEAN
|
|
#define WIN32_LEAN_AND_MEAN
|
|
#endif
|
|
#include "Windows.h"
|
|
|
|
#define X502_EXPORT(type) type APIENTRY
|
|
#else
|
|
#ifndef APIENTRY
|
|
#define APIENTRY
|
|
#endif
|
|
|
|
#if __GNUC__ >= 4
|
|
#define X502_EXPORT(type) __attribute__ ((visibility("default"))) type
|
|
#else
|
|
#define X502_EXPORT(type) type
|
|
#endif
|
|
#endif
|
|
|
|
|
|
/***************************************************************************//**
|
|
@addtogroup const_list Êîíñòàíòû è ïåðå÷èñëåíèÿ
|
|
@{
|
|
*****************************************************************************/
|
|
|
|
#define E502_DEVICE_NAME "E502"
|
|
#define L502_DEVICE_NAME "L502"
|
|
#define E16_DEVICE_NAME "E16"
|
|
#define LTA37_DEVICE_NAME "LTA37"
|
|
#define LTA11_DEVICE_NAME "LTA11"
|
|
|
|
/** Ìàêñèìàëüíîå êîëè÷åñòâî ëîãè÷åñêèõ êàíàëîâ â òàáëèöå */
|
|
#define X502_LTABLE_MAX_CH_CNT 256
|
|
|
|
/** Ìàêñèìàëüíîå êîëè÷åñòâî ëîãè÷åñêèõ êàíàëîâ â òàáëèöå äëÿ E16 */
|
|
#define E16_LTABLE_MAX_CH_CNT 128
|
|
|
|
/** Êîëè÷åñòâî äèàïàçîíîâ äëÿ èçìåðåíèÿ íàïðÿæåíèé */
|
|
#define X502_ADC_RANGE_CNT 6
|
|
#define E16_ADC_RANGE_CNT 4
|
|
#define LTA11_ADC_RANGE_CNT 4
|
|
|
|
/** Êîëè÷åñòâî êàíàëîâ ÀÖÏ â ðåæèìå ñ îáùåé çåìëåé */
|
|
#define X502_ADC_COMM_CH_CNT 32
|
|
|
|
/** Êîëè÷åñòâî êàíàëîâ ÀÖÏ â äèôôåðåíöèàëüíîì ðåæèìå */
|
|
#define X502_ADC_DIFF_CH_CNT 16
|
|
|
|
|
|
/** Ìàêñèìàëüíîå çíà÷åíèå äëÿ àïïàðàòíîãî óñðåäíåíèÿ ïî ëîãè÷åñêîìó êàíàëó */
|
|
#define X502_LCH_AVG_SIZE_MAX 128
|
|
/** Ìàêñèìàëüíîå çíà÷åíèÿ äåëèòåëÿ ÷àñòîòû ÀÖÏ */
|
|
#define X502_ADC_FREQ_DIV_MAX (1024*1024)
|
|
/** Ìàêñèìàëüíîå çíà÷åíèÿ äåëèòåëÿ ÷àñòîòû ÀÖÏ
|
|
*äëÿ ìîäóëÿ E16 ïî îòíîøåíèþ ê îïîðíîé ÷àñòîòå E16_REF_FREQ_48000KHZ */
|
|
#define E16_ADC_FREQ_DIV_MAX (0x800000)
|
|
#define LTA11_ADC_FREQ_DIV_MAX (0x800000)
|
|
/** Ìàêñèìàëüíîå çíà÷åíèå äåëèòåëÿ ÷àñòîòû ñèíõðîííîãî öèôðîâîãî ââîäà */
|
|
#define X502_DIN_FREQ_DIV_MAX (1024*1024)
|
|
/** Ìàêñèìàëüíîå çíà÷åíèå äåëèòåëÿ ÷àñòîòû ñèíõðîííîãî öèôðîâîãî ââîäà
|
|
*äëÿ ìîäóëÿ E16 ïî îòíîøåíèþ ê îïîðíîé ÷àñòîòå E16_REF_FREQ_48000KHZ */
|
|
#define E16_DIN_FREQ_DIV_MAX (0x800000)
|
|
#define LTA37_DIN_FREQ_DIV_MAX 64
|
|
|
|
/** Çíà÷åíèÿ ÷àñòîòû ÀÖÏ ïî óìîë÷àíèþ,
|
|
* èñïîëüçóåòñÿ â ôóíêöèè X502_SetAdcFreq è X502_CalcAdcFreq2 åñëè ïàðàìåòð f_acq = 0 */
|
|
#define E16_ADC_FREQ_DEFAULT 500000
|
|
#define LTA11_ADC_FREQ_DEFAULT 500000
|
|
#define LTA11_MAX_ADC_FREQ 1000000
|
|
|
|
/** Çíà÷åíèÿ ÷àñòîòû öèôðîâîãî âõîäà DIN ïî óìîë÷àíèþ,
|
|
* èñïîëüçóåòñÿ â ôóíêöèè X502_SetDinFreq è X502_CalcDinFreq2 åñëè ïàðàìåòð f_din = 0 */
|
|
#define E16_DIN_FREQ_DEFAULT 500000
|
|
/** Çíà÷åíèÿ ÷àñòîòû ÖÀÏ è öèôðîâûõ âûõîäîâ ïî óìîë÷àíèþ,
|
|
* èñïîëüçóåòñÿ â ôóíêöèè X502_SetOutFreq è X502_CalcOutFreq2 åñëè ïàðàìåòð f_dout = 0 */
|
|
#define E16_OUT_FREQ_DEFAULT 500000
|
|
|
|
|
|
/** Ìèíèìàëüíîå çíà÷åíèå äåëèòåëÿ ÷àñòîòû ñèíõðîííîãî âûâîäà */
|
|
#define X502_OUT_FREQ_DIV_MIN 2
|
|
/** Ìàêñèìàëüíîå çíà÷åíèå äåëèòåëÿ ÷àñòîòû ñèíõðîííîãî âûâîäà */
|
|
#define X502_OUT_FREQ_DIV_MAX 1024
|
|
/** Ìàêñèìàëüíîå çíà÷åíèå äåëèòåëÿ ÷àñòîòû ñèíõðîííîãî âûâîäà
|
|
*äëÿ ìîäóëÿ E16 ïî îòíîøåíèþ ê îïîðíîé ÷àñòîòå E16_REF_FREQ_48000KHZ */
|
|
#define E16_OUT_FREQ_DIV_MAX 0x8000
|
|
/** Çíà÷åíèå äåëèòåëÿ ÷àñòîòû âûâîäà ïî óìîë÷àíèþ (êîòîðîå òàêæå âñåãäà
|
|
èñïîëüçóåòñÿ â L-502 ñ âåðñèåé ïðîøèâêè ÏËÈÑ íèæå 0.5) */
|
|
#define X502_OUT_FREQ_DIV_DEFAULT 2
|
|
|
|
/** Ìèíèìàëüíîå çíà÷åíèå äåëèòåëÿ ÷àñòîòû ñèíõðîííîãî âûâîäà
|
|
ïðè âíåøíåé îïîðíîé ÷àñòîòå íèæå #X502_OUT_FREQ_REF_LF_VAL */
|
|
#define X502_OUT_FREQ_DIV_MIN_REF_LF 1
|
|
/** Çíà÷åíèå âíåøíåé îïîðíîé ÷àñòîòû, íèæå êîòîðîé ðàçðåøåíî óñòàíàâëèâàòü
|
|
çíà÷åíèå äåëèòåëÿ ÷àñòîòû ãåíåðàöèè äî #X502_OUT_FREQ_DIV_MIN_REF_LF */
|
|
#define X502_OUT_FREQ_REF_LF_VAL 700000
|
|
|
|
|
|
/** Ìàêñèìàëüíîå çíà÷åíèå ìåæêàäðîâîé çàäåðæêè äëÿ ÀÖÏ */
|
|
#define X502_ADC_INTERFRAME_DELAY_MAX (0x1FFFFF)
|
|
/** Ìàêñèìàëüíîå çíà÷åíèå ìåæêàäðîâîé çàäåðæêè äëÿ ÀÖÏ E16*/
|
|
#define E16_ADC_INTERFRAME_DELAY_MAX (0xFFFF)
|
|
|
|
/** Òàéìàóò ïî óìîë÷àíèþ äëÿ âûïîëíåíèÿ êîìàíäû ê BlackFin*/
|
|
#define X502_BF_CMD_DEFAULT_TOUT 500
|
|
|
|
/** Êîä ÀÖÏ, ñîîòâåòñòâóþùèé ìàêñèìàëüíîìó çíà÷åíèþ øêàëû */
|
|
#define X502_ADC_SCALE_CODE_MAX 6000000
|
|
/** Êîä ÀÖÏ, ñîîòâåòñòâóþùèé ìàêñèìàëüíîìó çíà÷åíèþ øêàëû */
|
|
#define E16_ADC_SCALE_CODE_MAX (0x80 * 0x7fff)
|
|
/** Êîä ÀÖÏ, ñîîòâåòñòâóþùèé ìàêñèìàëüíîìó çíà÷åíèþ øêàëû */
|
|
#ifndef LTA11_ADC_SCALE_CODE_MAX
|
|
#define LTA11_ADC_SCALE_CODE_MAX (0x80 * 0x7fff)
|
|
#endif
|
|
/** Êîä ÖÀÏ, ñîîòâåòñòâóþùèé ìàêñèìàëüíîìó çíà÷åíèþ øêàëû */
|
|
#define X502_DAC_SCALE_CODE_MAX 30000
|
|
#define E16_DAC_SCALE_CODE_MAX 0x7fff
|
|
#define LTA37_DAC_SCALE_CODE_MAX 0x650000
|
|
|
|
/** Ìàêñèìàëüíîå êîëè÷åñòâî ñèìâîëîâ â ñòðîêå ñ íàçâàíèåì óñòðîéñòâà */
|
|
#define X502_DEVNAME_SIZE 32
|
|
/** Ìàêñèìàëüíîå êîëè÷åñòâî ñèìâîëîâ â ñòðîêå ñ ñåðèéíûì íîìåðîì */
|
|
#define X502_SERIAL_SIZE 32
|
|
/** Ìàêñèìàëüíîå êîëè÷åñòâî ñèìâîëîâ â ñòðîêå ñ èäåíòèôèêàòîðîì board implementation */
|
|
#define X502_IMPLEMENTATION_SIZE 16
|
|
/** Ìàêñèìàëüíîå êîëè÷åñòâî ñèìâîëîâ â ñòðîêå ñ îïèñàíèåì ïîäêëþ÷åíèÿ */
|
|
#define X502_LOCATION_STR_SIZE 64
|
|
/** Ðàçìåð MAC-àäðåñà äëÿ Ethernet èíòåðôåéñà */
|
|
#define X502_MAC_ADDR_SIZE 6
|
|
/** Ðàçìåð ñòðîêè ñ îïèñàíèåì ýêçåìïëÿðà óñòðîéñòâà */
|
|
#define X502_INSTANCE_NAME_SIZE 64
|
|
/** Ìàêñèìàëüíûé ðàçìåð ñòðîêè ñ ïàðîëåì íà íàñòðîéêè */
|
|
#define X502_PASSWORD_SIZE 32
|
|
|
|
/** Ìàêñèìàëüíî âîçìîæíîå çíà÷åíèå âíåøíåé îïîðíîé ÷àñòîòû */
|
|
#define X502_EXT_REF_FREQ_MAX 1500000
|
|
|
|
/** Ìàêñèìàëüíî âîçìîæíîå çíà÷åíèå âíåøíåé îïîðíîé ÷àñòîòû äëÿ E502-P1 */
|
|
#define E502_P1_EXT_REF_FREQ_MAX 2000000
|
|
|
|
|
|
/** Ðàçìåð ïîëüçîâàòåëüñêîé îáëàñòè Flash-ïàìÿòè */
|
|
#define X502_FLASH_USER_SIZE 0x100000
|
|
|
|
/** Ñòàíäàðòíûé òàéìàóò íà âûïîëíåíèå çàïðîñà ê BlackFin â ìñ */
|
|
#define X502_BF_REQ_TOUT 500
|
|
|
|
|
|
/** Äèàïàçîí ÖÀÏ â âîëüòàõ */
|
|
#define X502_DAC_RANGE 5.
|
|
#define E16_DAC_RANGE 10.
|
|
|
|
/** Âûõîä 1:1 è 1:10 */
|
|
#define LTA37_DAC_RANGE20V 20.
|
|
#define LTA37_DAC_RANGE2V 2.
|
|
|
|
#define LTA37_DACRANGE_CNT 2
|
|
|
|
/** Êîëè÷åñòâî êàíàëîâ ÖÀÏ */
|
|
#define X502_DAC_CH_CNT 2
|
|
#ifndef LTA37_DAC_CH_CNT
|
|
#define LTA37_DAC_CH_CNT 10
|
|
#endif
|
|
|
|
|
|
/** Ìàêñèìàëüíîå êîëè÷åñòâî êàíàëîâ ÖÀÏ ïîääåðæèâàåìîå áèáëèîòåêîé*/
|
|
#define X502_DAC_CH_CNT_MAX 20
|
|
|
|
/** Êîëè÷åñòâî öèôðîâûõ âûõîäîâ ó ìîäóëÿ */
|
|
#define X502_DOUT_LINES_CNT 16
|
|
|
|
|
|
/** ñëîâî â ïîòîêå, îçíà÷àþùåå, ÷òî ïðîèçîøëî ïåðåïîëíåíèå */
|
|
#define X502_STREAM_IN_MSG_OVERFLOW 0x01010000
|
|
|
|
|
|
/** Çíà÷åíèå ïîëÿ ñèãíàòóðû â çàïèñè î óñòðîéñòâå #t_x502_devrec. Ïðèçíàê,
|
|
÷òî çàïèñü äåéñòâèòåëüíà (óñòàíàâëèâàåòñÿ ôóíêöèÿìè ïî ïîëó÷åíèþ çàïèñåé
|
|
î óñòðîéñòâàõ) */
|
|
#define X502_DEVREC_SIGN 0x4C524543
|
|
|
|
|
|
/** Êîäû îøèáîê áèáëèîòåêè */
|
|
typedef enum {
|
|
/** Ôóíêöèÿ âûïîëíåíà áåç îøèáîê */
|
|
X502_ERR_OK = 0,
|
|
/** Â ôóíêöèþ ïåðåäàí íåäåéñòâèòåëüíûé îïèñàòåëü ìîäóëÿ */
|
|
X502_ERR_INVALID_HANDLE = -1,
|
|
/** Îøèáêà âûäåëåíèÿ ïàìÿòè */
|
|
X502_ERR_MEMORY_ALLOC = -2,
|
|
/** Ïîïûòêà îòêðûòü óæå îòêðûòîå óñòðîéñòâî */
|
|
X502_ERR_ALREADY_OPENED = -3,
|
|
/** Óñòðîéñòâî ñ çàäàííûìè ïàðàìåòðàìè íå íàéäåíî â ñèñòåìå */
|
|
X502_ERR_DEVICE_NOT_FOUND = -4,
|
|
/** Äîñòóï ê óñòðîéñòâó çàïðåùåí (Êàê ïðàâèëî èç-çà òîãî, ÷òî óñòðîéñòâî
|
|
óæå îòêðûòî â äðóãîé ïðîãðàììå) */
|
|
X502_ERR_DEVICE_ACCESS_DENIED = -5,
|
|
/** Îøèáêà îòêðûòèÿ óñòðîéñòâà */
|
|
X502_ERR_DEVICE_OPEN = -6,
|
|
/** Â ôóíêöèþ ïåðåäàí íåäåéñòâèòåëüíûé óêàçàòåëü */
|
|
X502_ERR_INVALID_POINTER = -7,
|
|
/** Ôóíêöèÿ íå ìîæåò áûòü âûïîëíåíà ïðè çàïóùåííîì ïîòîêå ñáîðà äàííûõ */
|
|
X502_ERR_STREAM_IS_RUNNING = -8,
|
|
/** Îøèáêà ÷òåíèÿ äàííûõ ñèíõðîííîãî ââîäà, äëÿ tcp-ñîåäèíåíèÿ òèï îøèáêè ñîäåðæèòñÿ â errno */
|
|
X502_ERR_RECV = -9,
|
|
/** Îøèáêà çàïèñè äàííûõ äëÿ ñèíõðîííîãî âûâîäà */
|
|
X502_ERR_SEND = -10,
|
|
/** Ïðîèçîøëî ïåðåïîëíåíèå âíóòðåííåãî áóôåðà äëÿ ïîòîêà ñèíõðîííîãî ââîäà */
|
|
X502_ERR_STREAM_OVERFLOW = -11,
|
|
/** Íåèçâåñòíîå ñîîáùåíèå â ïîòîêå ñèíõðîííîãî ââîäà */
|
|
X502_ERR_UNSUP_STREAM_MSG = -12,
|
|
/** Îøèáêà ñîçäàíèÿ ñèñòåìíîãî ìüþòåêñà */
|
|
X502_ERR_MUTEX_CREATE = -13,
|
|
/** Íåâåðíûé îïèñàòåëü ìüþòåêñà */
|
|
X502_ERR_MUTEX_INVALID_HANDLE = -14,
|
|
/** Èñòåêëî âðåìÿ îæèäàíèÿ îñâîáîæäåíèÿ ìüþòåêñà */
|
|
X502_ERR_MUTEX_LOCK_TOUT = -15,
|
|
/** Îøèáêà îñâîáîæäåíèÿ ìüþòåêñà */
|
|
X502_ERR_MUTEX_RELEASE = -16,
|
|
/** Íåäîñòàòî÷íî ñèñòåìíûõ ðåñóðñîâ */
|
|
X502_ERR_INSUFFICIENT_SYSTEM_RESOURCES= -17,
|
|
/** Äàííàÿ âîçìîæíîñòü åùå íå ðåàëèçîâàíà */
|
|
X502_ERR_NOT_IMPLEMENTED = -18,
|
|
/** Íåäîñòàòî÷íûé ðàçìåð ìàññèâà */
|
|
X502_ERR_INSUFFICIENT_ARRAY_SIZE = -19,
|
|
/** Îøèáêà ÷òåíèÿ ðåãèñòðà FPGA */
|
|
X502_ERR_FPGA_REG_READ = -20,
|
|
/** Îøèáêà çàïèñè ðåãèñòðà FPGA */
|
|
X502_ERR_FPGA_REG_WRITE = -21,
|
|
/** Ñáîð äàííûõ óæå îñòàíîâëåí */
|
|
X502_ERR_STREAM_IS_NOT_RUNNING = -22,
|
|
/** Îøèáêà îñâîáîæäåíèÿ èíòåðôåéñà */
|
|
X502_ERR_INTERFACE_RELEASE = -23,
|
|
/** Îøèáêà çàïóñêà ïîòîêà */
|
|
X502_ERR_THREAD_START = -24,
|
|
/** Îøèáêà îñòàíîâà ïîòîêà */
|
|
X502_ERR_THREAD_STOP = -25,
|
|
/** Óñòðîéñòâî áûëî îòêëþ÷åíî */
|
|
X502_ERR_DEVICE_DISCONNECTED = -26,
|
|
/** Íåâåðíûé ðàçìåð îòâåòà íà óïðàâëÿþùèé çàïðîñ */
|
|
X502_ERR_IOCTL_INVALID_RESP_SIZE = -27,
|
|
/** Íåâåðíûé òèï óñòðîéñòâà */
|
|
X502_ERR_INVALID_DEVICE = -28,
|
|
/** Íåäåéñòâèòåëüíàÿ çàïèñü î óñòðîéñòâå */
|
|
X502_ERR_INVALID_DEVICE_RECORD = -29,
|
|
/** Íåâåðíûé îïèñàòåëü êîíôèãóðàöèè ìîäóëÿ */
|
|
X502_ERR_INVALID_CONFIG_HANDLE = -30,
|
|
/** Ñâÿçü ñ óñòðîéñòâîì çàêðûòà èëè íå áûëà óñòàíîâëåíà */
|
|
X502_ERR_DEVICE_NOT_OPENED = -31,
|
|
/** Äàííàÿ îïåðàöèÿ íå äîñòóïíà äëÿ òåêóùåãî èíòåðôåéñà ñâÿçè ñ óñòðîéñòâîì */
|
|
X502_ERR_INVALID_OP_FOR_IFACE = -32,
|
|
/** Íå çàãðóæåí ÏËÈÑ ìîäóëÿ */
|
|
X502_ERR_FPGA_NOT_LOADED = -33,
|
|
/** Íåâåðíàÿ êîíôèãóðàöèÿ USB-óñòðîéñòâà */
|
|
X502_ERR_INVALID_USB_CONFIGURATION = -34,
|
|
/** Íåâåðíûé îïèñàòåëü êîíòåêñòà ïîèñêà óñòðîéñòâ â ñåòè */
|
|
X502_ERR_INVALID_SVC_BROWSE_HANDLE = -35,
|
|
/** Íåâåðíûé îïèñàòåëü çàïèñè î ñåðâèñå */
|
|
X502_ERR_INVALID_SVC_RECORD_HANDLE = -36,
|
|
/** Íå çàïóùåíà ïðîãðàììà îáíàðóæåíèÿ óñòðîéñòâ â ëîêàëüíîé ñåòè */
|
|
X502_ERR_DNSSD_NOT_RUNNING = -37,
|
|
/** Îøèáêà ïðè îáðàùåíèè ê ïðîãðàììå îáíàðóæåíèÿ óñòðîéñòâ â ëîêàëüíîé ñåòè */
|
|
X502_ERR_DNSSD_COMMUNICATION = -38,
|
|
/** Ïðåâûøåí òàéìàóò çàïðîñà ïàðàìåòðîâ àâòîîáíàðóæåííîãî ñåòåâîãî óñòðîéñòâà */
|
|
X502_ERR_SVC_RESOLVE_TIMEOUT = -39,
|
|
/** Îøèáêà â êîäèðîâêå èìåíè ýêçåìïëÿðà óñòðîéñòâà */
|
|
X502_ERR_INSTANCE_NAME_ENCODING = -40,
|
|
/** Ýêçåìïëÿðû ìîäóëåé íå ñîâïàäàþò */
|
|
X502_ERR_INSTANCE_MISMATCH = -41,
|
|
/** Âîçìîæíîñòü íå ïîääåðæèâàåòñÿ òåêóùåé âåðñèåé ïðîøèâêè óñòðîéñòâà */
|
|
X502_ERR_NOT_SUP_BY_FIRMWARE = -42,
|
|
/** Âîçìîæíîñòü íå ïîääåðæèâàåòñÿ òåêóùåé âåðñèåé äðàéâåðà óñòðîéñòâà */
|
|
X502_ERR_NOT_SUP_BY_DRIVER = -43,
|
|
/** Ïðåâûøåíî âðåìÿ îæèäàíèÿ óñòàíîâëåíèÿ öèêëè÷åñêîãî ñèãíàëà íà âûâîä */
|
|
X502_ERR_OUT_CYCLE_SETUP_TOUT = -44,
|
|
/** Íåèçâåñòíûé êîä ïîääåðæèâàåìîé âîçìîæíîñòè */
|
|
X502_ERR_UNKNOWN_FEATURE_CODE = -45,
|
|
|
|
|
|
/** Çàäàí íåâåðíûé ðàçìåð ëîãè÷åñêîé òàáëèöû */
|
|
X502_ERR_INVALID_LTABLE_SIZE = -102,
|
|
/** Çàäàí íåâåðíûé íîìåð ëîãè÷åñêîãî êàíàëà */
|
|
X502_ERR_INVALID_LCH_NUMBER = -103,
|
|
/** Íåâåðíî çàäàíî çíà÷åíèå äèàïàçîíà ÀÖÏ */
|
|
X502_ERR_INVALID_LCH_RANGE = -104,
|
|
/** Íåâåðíî çàäàí ðåæèì èçìåðåíèÿ äëÿ ëîãè÷åñêîãî êàíàëà */
|
|
X502_ERR_INVALID_LCH_MODE = -105,
|
|
/** Íåâåðíî çàäàí íîìåð ôèçè÷åñêîãî êàíàëà ïðè íàñòðîéêå ëîãè÷åñêîãî */
|
|
X502_ERR_INVALID_LCH_PHY_NUMBER = -106,
|
|
/** Íåâåðíî çàäàí ðàçìåð óñðåäíåíèÿ äëÿ ëîãè÷åñêîãî êàíàëà */
|
|
X502_ERR_INVALID_LCH_AVG_SIZE = -107,
|
|
/** Íåâåðíî çàäàí äåëèòåëü ÷àñòîòû ñáîðà äàííûõ ÀÖÏ */
|
|
X502_ERR_INVALID_ADC_FREQ_DIV = -108,
|
|
/** Íåâåðíî çàäàí äåëèòåëü ÷àñòîòû ñèíõðîííîãî ââîäà öèôðîâûõ ëèíèé */
|
|
X502_ERR_INVALID_DIN_FREQ_DIV = -109,
|
|
/** Íåâåðíî çàäàí ðåæèì ðàáîòû ìîäóëÿ */
|
|
X502_ERR_INVALID_MODE = -110,
|
|
/** Íåâåðíûé íîìåð êàíàëà ÖÀÏ */
|
|
X502_ERR_INVALID_DAC_CHANNEL = -111,
|
|
/** Íåâåðíûé êîä âûáîðà îïîðíîé ÷àñòîòû ñèíõðîíèçàöèè */
|
|
X502_ERR_INVALID_REF_FREQ = -112,
|
|
/** Íåâåðíî çàäàíî çíà÷åíèå ìåæêàäðîâîé çàäåðæêè */
|
|
X502_ERR_INVALID_INTERFRAME_DELAY = -113,
|
|
/** Íåâåðíî çàäàí ðåæèì ñèíõðîíèçàöèè */
|
|
X502_ERR_INVALID_SYNC_MODE = -114,
|
|
/** Íåâåðíî çàäàí íîìåð ïîòîêà äàííûõ */
|
|
X502_ERR_INVALID_STREAM_CH = -115,
|
|
/** Íåâåðíî çàäàí äåëèòåëü ÷àñòîòû ñèíõðîííîãî âûâîäà */
|
|
X502_ERR_INVALID_OUT_FREQ_DIV = -116,
|
|
|
|
/** Îøèáêà çàõâàòà îïîðíîé ÷àñòîòû ñèíõðîíèçàöèè */
|
|
X502_ERR_REF_FREQ_NOT_LOCKED = -131,
|
|
/** Óïðàâëÿþùèé çàïðîñ ê äðàéâåðó çàâåðøåí ñ îøèáêîé */
|
|
X502_ERR_IOCTL_FAILD = -132,
|
|
/** Èñòåê òàéìàóò îæèäàíèÿ çàâåðøåíèÿ âûïîëíåíèÿ óïðàâëÿþùåãî çàïðîñà ê äðàéâåðó */
|
|
X502_ERR_IOCTL_TIMEOUT = -133,
|
|
/** Îøèáêà ïîëó÷åíèÿ èíôîðìàöèè î óñòðîéñòâå îò äðàéâåðà */
|
|
X502_ERR_GET_INFO = -134,
|
|
/** Çà âðåìÿ îæèäàíèÿ íå áûëî ñ÷èòàíî íîâîå ñëîâî ñ öèôðîâûõ ëèíèé */
|
|
X502_ERR_DIG_IN_NOT_RDY = -135,
|
|
/** Ïðèíÿòî íåäîñòàòî÷íî ñëîâ îò ìîäóëÿ */
|
|
X502_ERR_RECV_INSUFFICIENT_WORDS = -136,
|
|
/** Ïîïûòêà âûïîëíèòü îïåðàöèþ, òðåáóþùóþ íàëè÷èå ÖÀÏ, ïðè åãî îòñóòñòâèè */
|
|
X502_ERR_DAC_NOT_PRESENT = -137,
|
|
/** Ïåðåäàíî íåäîñòàòî÷íî ñëîâ â ìîäóëü */
|
|
X502_ERR_SEND_INSUFFICIENT_WORDS = -138,
|
|
/** Íå ïðèøëî îòâåòà íà ïåðåäàííóþ êîìàíäó */
|
|
X502_ERR_NO_CMD_RESPONSE = -139,
|
|
|
|
/** Íåâåðíûé íîìåð êàíàëà â îáðàáàòûâàåìîì ïîòîêå ñèíõðîííîãî ââîäà */
|
|
X502_ERR_PROC_INVALID_CH_NUM = -140,
|
|
/** Íåâåðíûé êîä äèàïàçîíà â îáðàáàòûâàåìîì ïîòîêå ñèíõðîííîãî ââîäà */
|
|
X502_ERR_PROC_INVALID_CH_RANGE = -141,
|
|
/** Çàäàí íåâåðíûé àäðåñ âî Flash-ïàìÿòè */
|
|
X502_ERR_FLASH_INVALID_ADDR = -142,
|
|
/** Çàäàí íåâåðíûé ðàçìåð áëîêà äàííûõ ïðè ðàáîòå ñ Flash-ïàìÿòüþ */
|
|
X502_ERR_FLASH_INVALID_SIZE = -143,
|
|
/** Èñòåê òàéìàóò îæèäàíèÿ çàâåðøåíèÿ çàïèñè âî Flash-ïàìÿòü */
|
|
X502_ERR_FLASH_WRITE_TOUT = -144,
|
|
/** Èñòåê òàéìàóò îæèäàíèÿ çàâåðøåíèÿ ñòèðàíèÿ áëîêà Flash-ïàìÿòè */
|
|
X502_ERR_FLASH_ERASE_TOUT = -145,
|
|
/** Çàäàííàÿ îáëàñòü äëÿ ñòèðàíèÿ Flash-ïàìÿòè íàðóøàåò ãðàíèöó áëîêà â 4 Êáàéò */
|
|
X502_ERR_FLASH_SECTOR_BOUNDARY = -146,
|
|
|
|
/** Íå óäàëîñü îòêðûòü ñîêåò äëÿ ñîåäèíåíèÿ */
|
|
X502_ERR_SOCKET_OPEN = -147,
|
|
/** Ïðåâûøåíî âðåìÿ ïîäêëþ÷åíèÿ */
|
|
X502_ERR_CONNECTION_TOUT = -148,
|
|
/** Ñîåäèíåíèå çàêðûòî äðóãîé óñòðîéñòâîì */
|
|
X502_ERR_CONNECTION_CLOSED_BY_DEV = -149,
|
|
/** Íå óäàëîñü óñòàíîâèòü çàäàííûé ðàçìåð áóôåðà ñîêåòà */
|
|
X502_ERR_SOCKET_SET_BUF_SIZE = -150,
|
|
/** Ñîåäèíåíèå äëÿ ïåðåäà÷è äàííûõ íå óñòàíîâëåíî */
|
|
X502_ERR_NO_DATA_CONNECTION = -151,
|
|
/** Íå óäàëîñü äîæäàòüñÿ ñîîáùåíèÿ î çàâåðøåíèè ïîòîêà */
|
|
X502_ERR_NO_STREAM_END_MSG = -152,
|
|
/** Ñîåäèíåíèå áûëî ñáðîøåíî äðóãîé ñòîðîíîé */
|
|
X502_ERR_CONNECTION_RESET = -153,
|
|
/** Íå óäàëîñü íàéòè õîñò ñ óêàçàííûì àäðåñîì */
|
|
X502_ERR_HOST_UNREACHABLE = -154,
|
|
/** Îøèáêà óñòàíîâëåíèÿ TCP-ñîåäèíåíèÿ,
|
|
ìîæåò âîçíèêàòü êîãäà ñîåäèíåíèå ñ ìîäóëåì óæå óñòàíîâëåíî
|
|
(òîëüêî îäíî TCP ñîåäèíåíèå ìîæåò óïðàâëÿòü ìîäóëåì) */
|
|
X502_ERR_TCP_CONNECTION_ERROR = -155,
|
|
|
|
|
|
|
|
|
|
/** Íå óäàëîñü îòêðûòü ôàéë ïðîøèâêè BlackFin */
|
|
X502_ERR_LDR_FILE_OPEN = -180,
|
|
/** Îøèáêà ÷òåíèÿ èç ôàëà ïðîøèâêè BlackFin */
|
|
X502_ERR_LDR_FILE_READ = -181,
|
|
/** Íåâåðíûé ôîðìàò ôàéëà ïðîøèâêè BlackFin */
|
|
X502_ERR_LDR_FILE_FORMAT = -182,
|
|
/** Èñïîëüçóþòñÿ âîçìîæíîñòü LDR-ôàéëà, íåäîñòóïíûå ïðè çàïèñè ïðîøèâêè
|
|
BlackFin ïî HDMA */
|
|
X502_ERR_LDR_FILE_UNSUP_FEATURE = -183,
|
|
/** Íåâåðíûé ñòàðòîâûé àäðåñ ïðîãðàììû â ïðîøèâêå BlackFin */
|
|
X502_ERR_LDR_FILE_UNSUP_STARTUP_ADDR = -184,
|
|
/** Èñòåê òàéìàóò âûïîëíåíèÿ çàïðîñà íà ÷òåíèÿ/çàïèñü ïàìÿòè BlackFin */
|
|
X502_ERR_BF_REQ_TIMEOUT = -185,
|
|
/** Êîìàíäà äëÿ BlackFin âñå åùå íàõîäèòñÿ â ïðîöåññå îáðàáîòêè */
|
|
X502_ERR_BF_CMD_IN_PROGRESS = -186,
|
|
/** Èñòåêëî âðåìÿ âûïîëíåíèÿ óïðàâëÿþùåé êîìàíäû ïðîöåññîðîì BlackFin */
|
|
X502_ERR_BF_CMD_TIMEOUT = -187,
|
|
/** Âîçâðàùåíî íåäîñòàòî÷íî äàííûõ â îòâåò íà êîìàíäó ê BlackFin */
|
|
X502_ERR_BF_CMD_RETURN_INSUF_DATA = -188,
|
|
/** Èñòåê òàéìàóò îæèäàíèÿ ãîòîâíîñòè ïðîöåññîðà BlackFin ê çàïèñè ïðîøèâêè */
|
|
X502_ERR_BF_LOAD_RDY_TOUT = -189,
|
|
/** Ïîïûòêà âûïîëíèòü îïåðàöèþ äëÿ êîòîðîé íóæåí ñèãíàëüíûé ïðîöåññîð ïðè
|
|
îòñóòñòâèè ñèãíàëüíîãî ïðîöåññîðà â ìîäóëå */
|
|
X502_ERR_BF_NOT_PRESENT = -190,
|
|
/** Íåâåðíûé àäðåñ ïàìÿòè BlackFin ïðè çàïèñè èëè ÷òåíèè ïî HDMA */
|
|
X502_ERR_BF_INVALID_ADDR = -191,
|
|
/** Íåâåðíûé ðàçìåð äàííûõ, ïåðåäàâàåìûõ ñ óïðàâëÿþùåé êîìàíäîé â BlackFin */
|
|
X502_ERR_BF_INVALID_CMD_DATA_SIZE = -192
|
|
} t_x502_errs;
|
|
|
|
|
|
/** Èíòåðôåéñ ñîåäèíåíèÿ ñ ìîäóëåì */
|
|
typedef enum {
|
|
X502_IFACE_UNKNOWN = 0, /**< Íåèçâåñòíûé èíòåðôåéñ */
|
|
X502_IFACE_USB = 1, /**< Óñòðîéñòâî ïîäêëþ÷åíî ïî USB */
|
|
X502_IFACE_ETH = 2, /**< Óñòðîéñòâî ïîäêëþ÷åíî ïî Ethernet ÷åðåç TCP/IP */
|
|
X502_IFACE_PCI = 3 /**< Óñòðîéñòâî ïîäêëþ÷åíî ïî PCI/PCIe */
|
|
} t_x502_iface;
|
|
|
|
/** Ôëàãè, óïðàâëÿþùèå ïîèñêîì ïðèñóòñòâóþùèõ ìîäóëåé */
|
|
typedef enum {
|
|
/** Ïðèçíàê, ÷òî íóæíî âåðíóòü ñåðèéíûå íîìåðà òîëüêî òåõ óñòðîéñòâ,
|
|
êîòîðûå åùå íå îòêðûòû */
|
|
X502_GETDEVS_FLAGS_ONLY_NOT_OPENED = 1
|
|
} t_x502_getdevs_flags;
|
|
|
|
|
|
|
|
/** @brief Ôëàãè äëÿ óïðàâëåíèÿ öèôðîâûìè âûõîäàìè
|
|
|
|
Ôëàãè óïðàâëåíèÿ öèôðîâûìè âûõîäàìè. Ìîãóò áûòü îáúåäèíåíû ÷åðåç ëîãè÷åñêîå
|
|
“ÈËÈ” ñî çíà÷åíèÿìè öèôðîâûõ âûõîäîâ ïðè àñèíõðîííîì âûâîäå ñ ïîìîùüþ
|
|
X502_AsyncOutDig() èëè ïåðåäàíû â X502_PrepareData() ïðè ñèíõðîííîì âûâîäå.*/
|
|
typedef enum {
|
|
X502_DIGOUT_WORD_DIS_H = 0x00020000, /**< Çàïðåùåíèå (ïåðåâîä â òðåòüå ñîñòîÿíèå)
|
|
ñòàðøåé ïîëîâèíû öèôðîâûõ âûõîäîâ */
|
|
X502_DIGOUT_WORD_DIS_L = 0x00010000, /**< Çàïðåùåíèå ìëàäøåé ïîëîâèíû
|
|
öèôðîâûõ âûõîäîâ */
|
|
E16_DIGOUT_WORD_DIS = 0x00030000 /**< Äëÿ ìîäóëÿ E16 ïîääåðæèâàåòñÿ òîëüêî ïîëíîå
|
|
çàïðåùåíèå öèôðîâûõ âûõîäîâ */
|
|
} t_x502_digout_word_flags;
|
|
|
|
/** Êîíñòàíòû äëÿ âûáîðà îïîðíîé ÷àñòîòû */
|
|
typedef enum {
|
|
E16_REF_FREQ_48000KHZ = 48000000, /**< ×àñòîòà 48ÌÃö äëÿ E16 */
|
|
/** Îïðåäåëåíèÿ äëÿ LTA, áóäóò ïåðåíåñåíû â lta_api */
|
|
#ifndef LTA11_REF_FREQ_30000KHZ
|
|
#define LTA11_REF_FREQ_30000KHZ 30000000 /**< ×àñòîòà 30ÌÃö äëÿ LTA11 */
|
|
#endif
|
|
#ifndef LTA37_REF_FREQ_24576KHZ
|
|
#define LTA37_REF_FREQ_24576KHZ 24576000 /**< ×àñòîòà 24,576ÌÃö äëÿ LTA37 */
|
|
#endif
|
|
X502_REF_FREQ_2000KHZ = 2000000, /**< ×àñòîòà 2ÌÃö */
|
|
X502_REF_FREQ_1500KHZ = 1500000 /**< ×àñòîòà 1.5ÌÃö */
|
|
} t_x502_ref_freq;
|
|
|
|
|
|
/** ïîëÿ io_mode â ðåãèñòðå io_hard */
|
|
typedef enum {
|
|
X502_MODE_REF_FREQ_2000 = 0, /**< ×àñòîòà 2ÌÃö */
|
|
X502_MODE_REF_FREQ_1500 = 2, /**< ×àñòîòà 1.5ÌÃö */
|
|
E16_MODE_REF_FREQ_48000 = 3 /**< ×àñòîòà 48ÌÃö äëÿ E16*/
|
|
} t_x502_io_mode;
|
|
|
|
/** Äèàïàçîíû èçìåðåíèÿ äëÿ êàíàëà ÀÖÏ */
|
|
typedef enum {
|
|
X502_ADC_RANGE_10 = 0, /**< Äèàïàçîí +/-10V */
|
|
X502_ADC_RANGE_5 = 1, /**< Äèàïàçîí +/-5V */
|
|
X502_ADC_RANGE_2 = 2, /**< Äèàïàçîí +/-2V */
|
|
X502_ADC_RANGE_1 = 3, /**< Äèàïàçîí +/-1V */
|
|
X502_ADC_RANGE_05 = 4, /**< Äèàïàçîí +/-0.5V */
|
|
X502_ADC_RANGE_02 = 5 /**< Äèàïàçîí +/-0.2V */
|
|
} t_x502_adc_range;
|
|
|
|
/** Äèàïàçîíû èçìåðåíèÿ äëÿ êàíàëà ÀÖÏ E16 */
|
|
typedef enum {
|
|
E16_ADC_RANGE_10000 = 0, /**< Äèàïàçîí +/-10V */
|
|
E16_ADC_RANGE_2500 = 1, /**< Äèàïàçîí +/-2.5V */
|
|
E16_ADC_RANGE_625 = 2, /**< Äèàïàçîí +/-0.625V */
|
|
E16_ADC_RANGE_156 = 3, /**< Äèàïàçîí +/-0.156V */
|
|
} t_e16_adc_range;
|
|
|
|
/** Äèàïàçîíû èçìåðåíèÿ äëÿ êàíàëà ÀÖÏ LTA11 */
|
|
#ifndef LTA37_DAC_RANGE_20000
|
|
#define LTA11_ADC_RANGE_10000 0 /**< Äèàïàçîí +/-10V */
|
|
#endif
|
|
#ifndef LTA11_ADC_RANGE_2500
|
|
#define LTA11_ADC_RANGE_2500 1 /**< Äèàïàçîí +/-2.5V */
|
|
#endif
|
|
#ifndef LTA11_ADC_RANGE_625
|
|
#define LTA11_ADC_RANGE_625 2 /**< Äèàïàçîí +/-0.625V */
|
|
#endif
|
|
#ifndef LTA11_ADC_RANGE_156
|
|
#define LTA11_ADC_RANGE_156 3 /**< Äèàïàçîí +/-0.156V */
|
|
#endif
|
|
|
|
typedef enum {
|
|
X502_DAC_RANGE_5000 = 0, /**< Âûõîä +/-5V äëÿ x502 */
|
|
E16_DAC_RANGE_10000 = 0, /**< Âûõîä +/-10V äëÿ E16 */
|
|
/** Îïðåäåëåíèÿ äëÿ LTA, áóäóò ïåðåíåñåíû â lta_api */
|
|
#ifndef LTA37_DAC_RANGE_20000
|
|
#define LTA37_DAC_RANGE_20000 0 /**< Âûõîä 1:10 +/-20V äëÿ LTA37 */
|
|
#endif
|
|
#ifndef LTA37_DAC_RANGE_2000
|
|
#define LTA37_DAC_RANGE_2000 1 /**< Âûõîä 1:1 +/-2V äëÿ LTA37 */
|
|
#endif
|
|
} t_x502devs_dac_range;
|
|
|
|
/** Ðåæèì èçìåðåíèÿ äëÿ ëîãè÷åñêîãî êàíàëà */
|
|
typedef enum {
|
|
X502_LCH_MODE_COMM = 0, /**< Èçìåðåíèå íàïðÿæåíèÿ îòíîñèòåëüíî îáùåé çåìëè */
|
|
X502_LCH_MODE_DIFF = 1, /**< Äèôôåðåíöèàëüíîå èçìåðåíèå íàïðÿæåíèÿ */
|
|
X502_LCH_MODE_ZERO = 2 /**< Èçìåðåíèå ñîáñòâåííîãî íóëÿ */
|
|
} t_x502_lch_mode;
|
|
|
|
/** @brief Ðåæèìû ñèíõðîíèçàöèè
|
|
|
|
Ðåæèìû çàäàíèÿ èñòî÷íèêà ÷àñòîòû ñèíõðîíèçàöèè è ïðèçíàêà íà÷àëà
|
|
ñèíõðîííîãî ââîäà-âûâîäà */
|
|
typedef enum {
|
|
X502_SYNC_INTERNAL = 0, /**< Âíóòðåííèé ñèãíàë */
|
|
X502_SYNC_EXTERNAL_MASTER = 1, /**< Îò âíåøíåãî ìàñòåðà ïî ðàçúåìó ìåæìîäóëüíîé ñèíõðîíèçàöèè (START_IN/CONV_IN äëÿ X502_SetSyncStartMode/X502_SetSyncMode) */
|
|
X502_SYNC_DI_SYN1_RISE = 2, /**< Ïî ôðîíòó ñèãíàëà DI_SYN1 */
|
|
X502_SYNC_DI_SYN1_FALL = 3, /**< Ïî ñïàäó ñèãíàëà DI_SYN1 */
|
|
X502_SYNC_DI_SYN2_RISE = 6, /**< Ïî ôðîíòó ñèãíàëà DI_SYN2 */
|
|
X502_SYNC_DI_SYN2_FALL = 7, /**< Ïî ñïàäó ñèãíàëà DI_SYN2 */
|
|
/** Òîëüêî äëÿ E16!
|
|
Âàæíî ïðàâèëüíî óñòàíîâèòü íàïðàâëåíèå TRIG èëè INT íà âõîä
|
|
ñíÿòèåì ôëàãà E16_MODE_TRIG_OUTPUT èëè E16_MODE_INT_OUTPUT
|
|
*/
|
|
E16_SYNC_TRIG_RISE = 2, /**< Ïî ôðîíòó ñèãíàëà TRIG */
|
|
E16_SYNC_TRIG_FALL = 3, /**< Ïî ñïàäó ñèãíàëà TRIG */
|
|
E16_SYNC_INT_RISE = 6, /**< Ïî ôðîíòó ñèãíàëà INT */
|
|
E16_SYNC_INT_FALL = 7, /**< Ïî ñïàäó ñèãíàëà INT */
|
|
/** Àíàëîãîâàÿ ñèíõðîíèçàöèÿ ñòàðòà, òîëüêî äëÿ E16*/
|
|
E16_SYNC_ADC_ABOVE_LEVEL = 8, /**< Âûøå óðîâíÿ */
|
|
E16_SYNC_ADC_BELOW_LEVEL = 9, /**< Íèæå óðîâíÿ */
|
|
E16_SYNC_ADC_EDGE_RISE = 10, /**< Ïî ïåðåõîäó ñèãíàëà ñíèçó ââåðõ */
|
|
E16_SYNC_ADC_EDGE_FALL = 11, /**< Ïî ïåðåõîäó ñèãíàëà ñâåðõó âíèç */
|
|
|
|
/** Îïðåäåëåíèÿ äëÿ LTA, áóäóò ïåðåíåñåíû â lta_api */
|
|
#ifndef LTA37_SYNC_INTERNAL
|
|
#define LTA37_SYNC_INTERNAL 0 /**< Âíóòðåííèé ñèãíàë */
|
|
#endif
|
|
#ifndef LTA37_SYNC_DI2_RISE
|
|
#define LTA37_SYNC_DI2_RISE 1 /**< Ïî ôðîíòó ñèãíàëà DI2 */
|
|
#endif
|
|
#ifndef LTA37_SYNC_DI2_FALL
|
|
#define LTA37_SYNC_DI2_FALL 2 /**< Ïî ñïàäó ñèãíàëà DI2 */
|
|
#endif
|
|
|
|
#ifndef LTA37_DO8_START_OUT
|
|
#define LTA37_DO8_START_OUT 4 /**< LTA37: âêëþ÷èòü DO8 íà âûâîä ñèãíàëà ñòàðòà */
|
|
#endif
|
|
|
|
#ifndef LTA11_SYNC_INTERNAL
|
|
#define LTA11_SYNC_INTERNAL 0 /**< Âíóòðåííèé ñèãíàë */
|
|
#endif
|
|
#ifndef LTA11_SYNC_EXT_RISE
|
|
#define LTA11_SYNC_EXT_RISE 2 /**< Ïî ôðîíòó ñèãíàëà Sync/Start */
|
|
#endif
|
|
#ifndef LTA11_SYNC_EXT_FALL
|
|
#define LTA11_SYNC_EXT_FALL 3 /**< Ïî ñïàäó ñèãíàëà Sync/Start */
|
|
#endif
|
|
#ifndef LTA11_SYNC_EXT_HIGH
|
|
#define LTA11_SYNC_EXT_HIGH 6 /**< Ñòàðò ïî âûñîêîìó óðîâíþ ñèãíàëà Start */
|
|
#endif
|
|
#ifndef LTA11_SYNC_EXT_LOW
|
|
#define LTA11_SYNC_EXT_LOW 7 /**< Ñòàðò ïî íèçêîìó óðîâíþ ñèãíàëà Start */
|
|
#endif
|
|
/** Àíàëîãîâàÿ ñèíõðîíèçàöèÿ ñòàðòà, òîëüêî äëÿ LTA11*/
|
|
#ifndef LTA11_SYNC_ADC_ABOVE_LEVEL
|
|
#define LTA11_SYNC_ADC_ABOVE_LEVEL 8 /**< Âûøå óðîâíÿ */
|
|
#endif
|
|
#ifndef LTA11_SYNC_ADC_BELOW_LEVEL
|
|
#define LTA11_SYNC_ADC_BELOW_LEVEL 9 /**< Íèæå óðîâíÿ */
|
|
#endif
|
|
#ifndef LTA11_SYNC_ADC_EDGE_RISE
|
|
#define LTA11_SYNC_ADC_EDGE_RISE 10 /**< Ïî ïåðåõîäó ñèãíàëà ñíèçó ââåðõ */
|
|
#endif
|
|
#ifndef LTA11_SYNC_ADC_EDGE_FALL
|
|
#define LTA11_SYNC_ADC_EDGE_FALL 11 /**< Ïî ïåðåõîäó ñèãíàëà ñâåðõó âíèç */
|
|
#endif
|
|
} t_x502_sync_mode;
|
|
|
|
/** Ôëàãè, óïðàâëÿþùèå îáðàáîòêîé ïðèíÿòûõ äàííûõ */
|
|
typedef enum {
|
|
/** Ïðèçíàê, ÷òî íóæíî ïðåîáðàçîâàòü çíà÷åíèÿ ÀÖÏ â âîëüòû */
|
|
X502_PROC_FLAGS_VOLT = 0x00000001,
|
|
/** Ïðèçíàê, ÷òî íå íóæíî ïðîâåðÿòü ñîâïàäåíèå íîìåðîâ êàíàëîâ
|
|
â ïðèíÿòûõ äàííûõ ñ êàíàëàìè èç ëîãè÷åñêîé òàáëèöû.
|
|
Ìîæåò èñïîëüçîâàòüñÿ ïðè íåñòàíäàðòíîé ïðîøèâêå BlackFin
|
|
ïðè ïåðåäà÷å â ÏÊ íå âñåõ äàííûõ. */
|
|
X502_PROC_FLAGS_DONT_CHECK_CH = 0x00010000
|
|
} t_x502_proc_flags;
|
|
|
|
|
|
/** Ôëàãè äëÿ îáîçíà÷åíèÿ ñèíõðîííûõ ïîòîêîâ äàííûõ */
|
|
typedef enum {
|
|
X502_STREAM_ADC = 0x01, /**< Ïîòîê äàííûõ îò ÀÖÏ */
|
|
X502_STREAM_DIN = 0x02, /**< Ïîòîê äàííûõ ñ öèôðîâûõ âõîäîâ */
|
|
X502_STREAM_DAC1 = 0x10, /**< Ïîòîê äàííûõ ïåðâîãî êàíàëà ÖÀÏ */
|
|
X502_STREAM_DAC2 = 0x20, /**< Ïîòîê äàííûõ âòîðîãî êàíàëà ÖÀÏ */
|
|
X502_STREAM_DOUT = 0x40, /**< Ïîòîê äàííûõ íà öèôðîâûå âûâîäû */
|
|
/** Îáúåäèíåíèå âñåõ ôëàãîâ, îáîçíà÷àþùèõ ïîòîêè äàííûõ íà ââîä */
|
|
X502_STREAM_ALL_IN = X502_STREAM_ADC | X502_STREAM_DIN,
|
|
/** Îáúåäèíåíèå âñåõ ôëàãîâ, îáîçíà÷àþùèõ ïîòîêè äàííûõ íà âûâîä */
|
|
X502_STREAM_ALL_OUT = X502_STREAM_DAC1 | X502_STREAM_DAC2 | X502_STREAM_DOUT
|
|
} t_x502_streams;
|
|
|
|
/** Êîíñòàíòû, îïðåäåëÿþùèå òèï ïåðåäàâàåìîãî îòñ÷åòà èç ÏÊ â ìîäóëü */
|
|
typedef enum {
|
|
X502_STREAM_OUT_WORD_TYPE_DOUT = 0x0, /**< Öèôðîâîé âûâîä */
|
|
X502_STREAM_OUT_WORD_TYPE_DAC1 = 0x40000000, /**< Êîä äëÿ 1-ãî êàíàëà ÖÀÏ */
|
|
X502_STREAM_OUT_WORD_TYPE_DAC2 = 0x80000000, /**< Êîä äëÿ 2-ãî êàíàëà ÖÀÏ */
|
|
/** Îïðåäåëåíèÿ äëÿ LTA, áóäóò ïåðåíåñåíû â lta_api */
|
|
#ifndef LTA37_STREAM_OUT_WORD_TYPE_DOUT
|
|
#define LTA37_STREAM_OUT_WORD_TYPE_DOUT (12 << 24) /**< Öèôðîâîé âûâîä äëÿ LTA37*/
|
|
#endif
|
|
} t_x502_stream_out_wrd_type;
|
|
|
|
/** Ðåæèì ðàáîòû ìîäóëÿ */
|
|
typedef enum {
|
|
X502_MODE_FPGA = 0, /**< Âñå ïîòîêè äàííûõ ïåðåäàþòñÿ ÷åðåç ÏËÈÑ ìèíóÿ
|
|
ñèãíàëüíûé ïðîöåññîð BlackFin */
|
|
X502_MODE_DSP = 1, /**< Âñå ïîòîêè äàííûõ ïåðåäàþòñÿ ÷åðåç ñèãíàëüíûé
|
|
ïðîöåññîð, êîòîðûé äîëæåí áûòü çàãðóæåí
|
|
ïðîøèâêîé äëÿ îáðàáîòêè ýòèõ ïîòîêîâ */
|
|
X502_MODE_DEBUG = 2 /**< Îòëàäî÷íûé ðåæèì */
|
|
} t_x502_mode;
|
|
|
|
#define X502_DAC_CH(ch, range, ch_cnt) ((ch_cnt * range) + ch)
|
|
#ifndef LTA37_DAC_CH
|
|
#define LTA37_DAC_CH(ch, range) X502_DAC_CH(ch, range, LTA37_DAC_CH_CNT)
|
|
#endif
|
|
|
|
/** @brief Íîìåðà êàíàëîâ ÖÀÏ
|
|
|
|
Íîìåð êàíàëîâ ÖÀÏ äëÿ óêàçàíèÿ â X502_AsyncOutDac() */
|
|
typedef enum {
|
|
X502_DAC_CH1 = 0, /**< Ïåðâûé êàíàë ÖÀÏ */
|
|
X502_DAC_CH2 = 1, /**< Âòîðîé êàíàë ÖÀÏ */
|
|
|
|
/** Îïðåäåëåíèÿ äëÿ LTA, áóäóò ïåðåíåñåíû â lta_api */
|
|
#ifndef LTA37_DAC_CH1
|
|
#define LTA37_DAC_CH1 0 /**< âûõîä 1:1 1 êàíàëà ÖÀÏ LTA37 */
|
|
#endif
|
|
#ifndef LTA37_DAC_CH2
|
|
#define LTA37_DAC_CH2 1 /**< âûõîä 1:1 2 êàíàëà ÖÀÏ LTA37 */
|
|
#endif
|
|
#ifndef LTA37_DAC_CH3
|
|
#define LTA37_DAC_CH3 2 /**< âûõîä 1:1 3 êàíàëà ÖÀÏ LTA37 */
|
|
#endif
|
|
#ifndef LTA37_DAC_CH4
|
|
#define LTA37_DAC_CH4 3 /**< âûõîä 1:1 4 êàíàëà ÖÀÏ LTA37 */
|
|
#endif
|
|
#ifndef LTA37_DAC_CH5
|
|
#define LTA37_DAC_CH5 4 /**< âûõîä 1:1 5 êàíàëà ÖÀÏ LTA37 */
|
|
#endif
|
|
#ifndef LTA37_DAC_CH6
|
|
#define LTA37_DAC_CH6 5 /**< âûõîä 1:1 6 êàíàëà ÖÀÏ LTA37 */
|
|
#endif
|
|
#ifndef LTA37_DAC_CH7
|
|
#define LTA37_DAC_CH7 6 /**< âûõîä 1:1 7 êàíàëà ÖÀÏ LTA37 */
|
|
#endif
|
|
#ifndef LTA37_DAC_CH8
|
|
#define LTA37_DAC_CH8 7 /**< âûõîä 1:1 8 êàíàëà ÖÀÏ LTA37 */
|
|
#endif
|
|
#ifndef LTA37_DAC_CH9
|
|
#define LTA37_DAC_CH9 8 /**< âûõîä 1:1 9 êàíàëà ÖÀÏ LTA37 */
|
|
#endif
|
|
#ifndef LTA37_DAC_CH10
|
|
#define LTA37_DAC_CH10 9 /**< âûõîä 1:1 10 êàíàëà ÖÀÏ LTA37 */
|
|
#endif
|
|
#ifndef LTA37_DAC_CH1_10
|
|
#define LTA37_DAC_CH1_10 LTA37_DAC_CH(LTA37_DAC_CH1, LTA37_DAC_RANGE_2000) /**< âûõîä 1:10 1 êàíàëà ÖÀÏ LTA37 */
|
|
#endif
|
|
#ifndef LTA37_DAC_CH2_10
|
|
#define LTA37_DAC_CH2_10 LTA37_DAC_CH(LTA37_DAC_CH1, LTA37_DAC_RANGE_2000) /**< âûõîä 1:10 2 êàíàëà ÖÀÏ LTA37 */
|
|
#endif
|
|
#ifndef LTA37_DAC_CH3_10
|
|
#define LTA37_DAC_CH3_10 LTA37_DAC_CH(LTA37_DAC_CH1, LTA37_DAC_RANGE_2000) /**< âûõîä 1:10 3 êàíàëà ÖÀÏ LTA37 */
|
|
#endif
|
|
#ifndef LTA37_DAC_CH4_10
|
|
#define LTA37_DAC_CH4_10 LTA37_DAC_CH(LTA37_DAC_CH1, LTA37_DAC_RANGE_2000) /**< âûõîä 1:10 4 êàíàëà ÖÀÏ LTA37 */
|
|
#endif
|
|
#ifndef LTA37_DAC_CH5_10
|
|
#define LTA37_DAC_CH5_10 LTA37_DAC_CH(LTA37_DAC_CH1, LTA37_DAC_RANGE_2000) /**< âûõîä 1:10 5 êàíàëà ÖÀÏ LTA37 */
|
|
#endif
|
|
#ifndef LTA37_DAC_CH6_10
|
|
#define LTA37_DAC_CH6_10 LTA37_DAC_CH(LTA37_DAC_CH1, LTA37_DAC_RANGE_2000) /**< âûõîä 1:10 6 êàíàëà ÖÀÏ LTA37 */
|
|
#endif
|
|
#ifndef LTA37_DAC_CH7_10
|
|
#define LTA37_DAC_CH7_10 LTA37_DAC_CH(LTA37_DAC_CH1, LTA37_DAC_RANGE_2000) /**< âûõîä 1:10 7 êàíàëà ÖÀÏ LTA37 */
|
|
#endif
|
|
#ifndef LTA37_DAC_CH8_10
|
|
#define LTA37_DAC_CH8_10 LTA37_DAC_CH(LTA37_DAC_CH1, LTA37_DAC_RANGE_2000) /**< âûõîä 1:10 8 êàíàëà ÖÀÏ LTA37 */
|
|
#endif
|
|
#ifndef LTA37_DAC_CH9_10
|
|
#define LTA37_DAC_CH9_10 LTA37_DAC_CH(LTA37_DAC_CH1, LTA37_DAC_RANGE_2000) /**< âûõîä 1:10 9 êàíàëà ÖÀÏ LTA37 */
|
|
#endif
|
|
#ifndef LTA37_DAC_CH10_10
|
|
#define LTA37_DAC_CH10_10 LTA37_DAC_CH(LTA37_DAC_CH1, LTA37_DAC_RANGE_2000) /**< âûõîä 1:10 10 êàíàëà ÖÀÏ LTA37 */
|
|
#endif
|
|
} t_x502_dac_ch;
|
|
|
|
/** @brief Ôëàãè, èñïîëüçóåìûå ïðè âûâîäå äàííûõ íà ÖÀÏ
|
|
|
|
Ôëàãè, êîìáèíàöèþ êîòîðûõ ìîæíî ïåðåäàòü â X502_AsyncOutDac() èëè
|
|
X502_PrepareData(), ÷òîáû îïðåäåëèòü äåéñòâèÿ, êîòîðûå äîëæíû âûïîëíèòü
|
|
ýòè ôóíêöèè ñ ïåðåäàííûì çíà÷åíèåì ïåðåä âûâîäîì èõ íà ÖÀÏ */
|
|
typedef enum {
|
|
/** Óêàçûâàåò, ÷òî çíà÷åíèå çàäàíî â Âîëüòàõ è ïðè âûâîäå åãî íóæíî
|
|
ïåðåâåñòè åãî â êîäû ÖÀÏ. Åñëè ôëàã íå óêàçàí, òî ñ÷èòàåòñÿ, ÷òî çíà÷åíèå
|
|
èçíà÷àëüíî â êîäàõ */
|
|
X502_DAC_FLAGS_VOLT = 0x0001,
|
|
/** Óêàçûâàåò, ÷òî íóæíî ïðèìåíèòü êàëèáðîâî÷íûå êîýôôèöèåíòû ïåðåä
|
|
âûâîäîì çíà÷åíèÿ íà ÖÀÏ. */
|
|
X502_DAC_FLAGS_CALIBR = 0x0002
|
|
} t_x502_dacout_flags;
|
|
|
|
|
|
|
|
/** Íîìåðà êàíàëîâ äëÿ ïåðåäà÷è ïîòîêîâ äàííûõ */
|
|
typedef enum {
|
|
X502_STREAM_CH_IN = 0, /**< Îáùèé êàíàë íà ââîä */
|
|
X502_STREAM_CH_OUT = 1, /**< Îáùèé êàíàë íà âûâîä */
|
|
X502_STREAM_CH_CNT
|
|
} t_x502_stream_ch;
|
|
|
|
|
|
/** @brief Öèôðîâûå ëèíèè, íà êîòîðûõ ìîæíî âêëþ÷èòü ïîäòÿãèâàþùèå ðåçèñòîðû
|
|
|
|
Ôëàãè, îïðåäåëÿþùèå íà êàêèõ öèôðîâûõ âõîäàõ äîëæíû áûòü âêëþ÷åíû
|
|
ïîäòÿãèâàþùèå ðåçèñòîðû. Äëÿ ðàçíûõ ìîäóëåé äîñòóïíû ðàçíûå íàáîðû ôëàãîâ. */
|
|
typedef enum {
|
|
X502_PULLUPS_DI_H = 0x01, /**< Ñòàðøàÿ ïîëîâèíà öèôðîâûõ âõîäîâ (òîëüêî äëÿ L502) */
|
|
X502_PULLUPS_DI_L = 0x02, /**< Ìëàäøàÿ ïîëîâèíà öèôðîâûõ âõîäîâ (òîëüêî äëÿ L502) */
|
|
X502_PULLUPS_DI_SYN1 = 0x04, /**< Ëèíèÿ SYN1 */
|
|
X502_PULLUPS_DI_SYN2 = 0x08, /**< Ëèíèÿ SYN2 */
|
|
X502_PULLDOWN_CONV_IN = 0x10, /**< Ïîäòÿæêà ê 0 ëèíèè ìåæìîäóëüíîé
|
|
ñèíõðîíèçàöèè CONV_IN (òîëüêî äëÿ E502) */
|
|
X502_PULLDOWN_START_IN = 0x20, /**< Ïîäòÿæêà ê 0 ëèíèè ìåæìîäóëüíîé
|
|
ñèíõðîíèçàöèè START_IN (òîëüêî äëÿ E502) */
|
|
|
|
E16_MODE_TRIG_OUTPUT = 0x04, /**< E16: Ïåðåêëþ÷åíèå TRIG íà âûõîä, èíà÷å âõîä*/
|
|
E16_MODE_INT_OUTPUT = 0x08, /**< E16: Ïåðåêëþ÷åíèå INT íà âûõîä, èíà÷å âõîä*/
|
|
E16_MODE_TRIG_START_OUTPUT = 0x10, /**< E16: Ñèãíàë START íà âûõîäå TRIG, èíà÷å CONV (TRIG äîëæåí áûòü âêëþ÷åí íà âûõîä) */
|
|
E16_MODE_INT_START_OUTPUT = 0x20, /**< E16: Ñèãíàë START íà âûõîäå INT, èíà÷å CONV (INT äîëæåí áûòü âêëþ÷åí íà âûõîä) */
|
|
E16_MODE_RELAY_ON = 0x40, /**< E16: Âêëþ÷èòü ðåëå, âî âêëþ÷åííîì ñîñòîÿíèè íà êîíòàêòàõ ðàçúåìà digital: +15Â, -15Â, âî âûêëþ÷åííîì: +3Â, GND, âòîðè÷íîå ïèòàíèå äîëæíî áûòü âêëþ÷åííûì */
|
|
E16_MODE_RELAY_OFF = 0x80, /**< E16: Âûêëþ÷èòü ðåëå */
|
|
|
|
E16_MODE_PWM_MANUAL = 0x100, /**< E16: Ðó÷íîå óïðàâëåíèå âòîðè÷íûì ïèòàíèåì,
|
|
ïî óìîë÷àíèþ âòîðè÷íîå ïèòàíèå âêëþ÷àåòñÿ ïðè ïåðâîì îáðàùåíèè ê óñòðîéñòâó èç API è âûêëþ÷àåòñÿ åñëè áûëî çàêðûòî ñîåäèíåíèå ïî Ethernet èëè îòêëþ÷åíèå USB êàáåëÿ */
|
|
E16_MODE_PWM_ON = 0x200, /**< E16: Âêëþ÷åíèå âòîðè÷íîãî ïèòàíèÿ. Åñëè âêëþ÷åí ôëàã E16_MODE_PWM_MANUAL, òî ñîñòîÿíèå âòîðè÷íîãî ïèòàíèÿ áóäåò çàâèñåòü îò ñîñòîÿíèÿ ýòîãî ôëàãà, èíà÷å ðàáîòà ïî óìîë÷àíèþ */
|
|
|
|
/** Îïðåäåëåíèÿ äëÿ LTA, áóäóò ïåðåíåñåíû â lta_api */
|
|
#ifndef LTA37_RELAY_12_ON
|
|
#define LTA37_RELAY_12_ON (1 << 0) /**< LTA37: âêëþ÷èòü ðåëå êàíàëîâ 1, 2 */
|
|
#endif
|
|
#ifndef LTA37_RELAY_34_ON
|
|
#define LTA37_RELAY_34_ON (1 << 1) /**< LTA37: âêëþ÷èòü ðåëå êàíàëîâ 3, 4 */
|
|
#endif
|
|
#ifndef LTA37_RELAY_56_ON
|
|
#define LTA37_RELAY_56_ON (1 << 2) /**< LTA37: âêëþ÷èòü ðåëå êàíàëîâ 5, 6 */
|
|
#endif
|
|
#ifndef LTA37_RELAY_78_ON
|
|
#define LTA37_RELAY_78_ON (1 << 3) /**< LTA37: âêëþ÷èòü ðåëå êàíàëîâ 7, 8 */
|
|
#endif
|
|
#ifndef LTA37_RELAY_9A_ON
|
|
#define LTA37_RELAY_9A_ON (1 << 4) /**< LTA37: âêëþ÷èòü ðåëå êàíàëîâ 9, 10 */
|
|
|
|
#endif
|
|
#ifndef LTA37_RELAY_ALL_CH_ON
|
|
#define LTA37_RELAY_ALL_CH_ON (LTA37_RELAY_12_ON | LTA37_RELAY_34_ON | LTA37_RELAY_56_ON | LTA37_RELAY_78_ON | LTA37_RELAY_9A_ON)
|
|
/**< LTA37: âêëþ÷åíèå ðåëå âñåõ êàíàëîâ */
|
|
#endif
|
|
#ifndef LTA11_MODE_PTP_SYNC
|
|
#define LTA11_MODE_PTP_SYNC 0x04 /**< LTA11: ñèíõðîíèçàöèÿ ïî ïðîòîêîëó PTP */
|
|
#endif
|
|
|
|
} t_x502_pullups;
|
|
|
|
|
|
/** Ôëàãè, îïðåäåëÿþùèå íàëè÷èå îïöèé â ìîäóëå è íàëè÷èå íåîáõîäèìûõ ïàðàìåòðîâ */
|
|
typedef enum {
|
|
/** Ïðèçíàê íàëè÷èÿ äâóõêàíàëüíîãî êàíàëüíîãî ÖÀÏ */
|
|
X502_DEVFLAGS_DAC_PRESENT = 0x00000001,
|
|
/** Ïðèçíàê íàëè÷èÿ ãàëüâàíîðàçâÿçêè */
|
|
X502_DEVFLAGS_GAL_PRESENT = 0x00000002,
|
|
/** Ïðèçíàê íàëè÷èÿ ñèãíàëüíîãî ïðîöåññîðà BlackFin */
|
|
X502_DEVFLAGS_BF_PRESENT = 0x00000004,
|
|
/** 3 áèòà, îòâå÷àþùèå çà òèï èñïîëüçóìîãî ïðîöåññîðà/êîíòðîëëåðà (0 --- ADSP-BF523) */
|
|
X502_DEVFLAGS_PROC_TYPE = 0x00000038,
|
|
/** 2 áèòà, îòâå÷àþùèå çà òèï èñïîëüçóåìîãî ÖÀÏ (0 --- AD5542AARUZ, 1 --- DAC8581IPW) */
|
|
X502_DEVFLAGS_DAC_TYPE = 0x000000C0,
|
|
|
|
/** Ïðèçíàê, ÷òî óñòðîéñòâî ïîääåðæèâàåò èíòåðôåéñ USB */
|
|
X502_DEVFLAGS_IFACE_SUPPORT_USB = 0x00000100,
|
|
/** Ïðèçíàê, ÷òî óñòðîéñòâî ïîääåðæèâàåò Ethernet */
|
|
X502_DEVFLAGS_IFACE_SUPPORT_ETH = 0x00000200,
|
|
/** Ïðèçíàê, ÷òî óñòðîéñòâî ïîääåðæèâàåò èíòåðôåéñ PCI/PCI-Express */
|
|
X502_DEVFLAGS_IFACE_SUPPORT_PCI = 0x00000400,
|
|
|
|
/** Ïðèçíàê, ÷òî óñòðîéñòâî âûïîëíåíî â èíäóñòðèàëíîì èñïîëíåíèè */
|
|
X502_DEVFLAGS_INDUSTRIAL = 0x00008000,
|
|
|
|
/** Ïðèçíàê, ÷òî âî Flash-ïàìÿòè ïðèñóòñòâóåò èíôîðìàöèÿ î ìîäóëå */
|
|
X502_DEVFLAGS_FLASH_DATA_VALID = 0x00010000,
|
|
/** Ïðèçíàê, ÷òî âî Flash-ïàìÿòè ïðèñóòñòâóþò äåéñòâèòåëüíûå êàëèáðîâî÷íûå
|
|
êîýôôèöèåíòû ÀÖÏ */
|
|
X502_DEVFLAGS_FLASH_ADC_CALIBR_VALID = 0x00020000,
|
|
/** Ïðèçíàê, ÷òî âî Flash-ïàìÿòè ïðèñóòñòâóþò äåéñòâèòåëüíûå êàëèáðîâî÷íûå
|
|
êîýôôèöèåíòû ÖÀÏ */
|
|
X502_DEVFLAGS_FLASH_DAC_CALIBR_VALID = 0x00040000,
|
|
X502_DEVFLAGS_FLASH_AFC_CALIBR_VALID = 0x00080000,
|
|
|
|
/** Ïðèçíàê, ÷òî ïðèñóòñòâóåò ïðîøèâêà ÏËÈÑ è îíà óñïåøíî áûëà çàãðóæåíà */
|
|
X502_DEVFLAGS_FPGA_LOADED = 0x00800000,
|
|
/** Ïðèçíàê, ÷òî óñòðîéñòâî óæå îòêðûòî (äåéñòâèòåëåí òîëüêî âíóòðè t_x502_devrec) */
|
|
X502_DEVFLAGS_DEVREC_OPENED = 0x01000000,
|
|
/** Ïðèçíàê, ÷òî ïðèñóòñòâóåò ïðîøèâêà ÏËÈÑ è îíà óñïåøíî áûëà çàãðóæåíà îæèäàåì GD32 äëÿ òîãî ÷òîáû îñòàëüíûå ðåãèñòðû ðàáîòàëè */
|
|
X502_DEVFLAGS_FPGA_AWAITING_GD32 = 0x02000000,
|
|
/** Ïðèçíàê, ÷òî ïðèñóòñòâóåò GD32 è ýòî E502-P1 */
|
|
X502_DEVFLAGS_GD_PRESENT = 0x02000000
|
|
} t_x502_dev_flags;
|
|
|
|
/** @brief Òèï ñîäåðæèìîãî ñòðîêè ñ ðàñïîëîæåíèåì óñòðîéñòâà
|
|
|
|
Äàííîå ïîëå îïðåäåëÿåò ñîäåðæèìîå ïîëÿ location â ñòðóêòóðå #t_x502_devrec */
|
|
typedef enum {
|
|
/** Â ïîëå ðàñïîëîæåíèÿ óñòðîéñòâà íå ñîäåðæèòñÿ èíôîðìàöèè */
|
|
X502_LOCATION_TYPE_NONE = 0,
|
|
/** Â ïîëå ðàñïîëîæåíèÿ óñòðîéñòâà ñîäåðæèòñÿ ñòðîêà ñ àäðåñîì óñòðîéñòâà */
|
|
X502_LOCATION_TYPE_ADDR = 1,
|
|
/** Â ïîëå ðàñïîëîæåíèÿ óñòðîéñòâà ñîäåðæèòñÿ ñòðîêà ñ èìåíåì ýêçåìïëÿðà */
|
|
X502_LOCATION_TYPE_INSTANCE_NAME = 2
|
|
} t_x502_location_type;
|
|
|
|
|
|
/** @brief Ôëàãè äëÿ ðåæèìà öèêëè÷åñêîãî âûâîäà
|
|
|
|
Äàííûå ôëàãè ìîãóò áûòü ïåðåäàíû â X502_OutCycleSetup() è X502_OutCycleStop() */
|
|
typedef enum {
|
|
/** Ôëàã óêàçûâàåò, ÷òî îñòàíîâ èëè ñìåíà ñèãíàëà ìîãóò ïðîèçîéòè áåç îæèäàíèÿ
|
|
êîíöà öèêëà ïðåäûäóùåãî ñèãíàëà. Ýòî ïîçâîëÿåò âûïîëíèòü ïåðåêëþ÷åíèå
|
|
áûñòðåå (îäíàêî âñå ðàâíî ìîæåò áûòü ïîñòàâëåíî íà ïåðåäà÷ó äî 256 ÊÑåìïëîâ,
|
|
êîòîðûå äîëæíû áóäóò áûòü ïåðåäàíû), íî òî÷êà ñìåíû èëè îñòàíîâà
|
|
ìîæåò áûòü â ëþáîì ìåñòå ïåðèîäà */
|
|
X502_OUT_CYCLE_FLAGS_FORCE = 0x01,
|
|
/** Ôëàã óêàçûâàåò, ÷òî ôóíêöèÿ äîëæíà äîæäàòüñÿ ïîëíîé çàãðóçêè ñèãíàëà
|
|
è óñòàíîâêè ñèãíàëà íà âûâîä (äëÿ X502_OutCycleSetup()) èëè çàâåðøåíèÿ
|
|
ãåíåðàöèè öèêëè÷åñêîãî ñèãíàëà (äëÿ X502_OutCycleStop()). Áåç íåãî
|
|
ôóíêöèè òîëüêî ïîñûëàþò êîìàíäó ìîäóëþ, âîçâðàùàÿ ñðàçó óïðàâëåíèå.
|
|
|
|
Äàííîå îæèäàíèå ìîæåò çàíèìàòü çíà÷èòåëüíîå âðåìÿ â çàâèñèìîñòè îò ðàçìåðà ñèãíàëà
|
|
(à òàêæå ðàçìåðà ïðåäûäóùåãî ñèãíàëà â ñëó÷àå ñìåíû èëè îñòàíîâà ãåíåðàöèè áåç
|
|
#X502_OUT_CYCLE_FLAGS_FORCE). Äàííóþ ïðîâåðêó ìîæíî ñäåëàòü è
|
|
îòäåëüíîé ôóíêöèé X502_OutCycleCheckSetupDone().
|
|
Äàííûé ôëàã èìååò çíà÷åíèÿ òîëüêî â òåõ ñëó÷àÿõ, êîãäà ïîääåðæèâàåòñÿ
|
|
ôóíêöèÿ X502_OutCycleCheckSetupDone(), â ïðîòèâíîì ñëó÷àå îí èãíîðèðóåòñÿ. */
|
|
X502_OUT_CYCLE_FLAGS_WAIT_DONE = 0x02
|
|
} t_x502_out_cycle_flags;
|
|
|
|
|
|
|
|
/** @brief Äîïîëíèòåëüíûå âîçìîæíîñòè ìîäóëÿ
|
|
|
|
Êîäû âîçìîæíîñòåé ìîäóëÿ, êîòîðûå ìîãóò ïîääåðæèâàòüñÿ èëè íåò â çàâèñèìîñòè
|
|
îò òèïà ìîäóëÿ, âåðñèé ïðîøèâîê è ò.ï. */
|
|
typedef enum {
|
|
/** Ïîääåðæêà óñòàíîâêè äåëèòåëÿ ÷àñòîòû âûâîäà, îòëè÷íîãî îò #X502_OUT_FREQ_DIV_DEFAULT */
|
|
X502_FEATURE_OUT_FREQ_DIV = 1,
|
|
/** Âîçìîæíîñòü ÷òåíèÿ ôëàãîâ ñîñòîÿíèÿ âûâîäà ñ ïîìîùüþ X502_OutGetStatusFlags() */
|
|
X502_FEATURE_OUT_STATUS_FLAGS = 2
|
|
} t_x502_features;
|
|
|
|
/** Ôëàãè ñîñòîÿíèÿ äëÿ ñèíõðîííîãî âûâîäà */
|
|
typedef enum {
|
|
/** Ôëàã óêàçûâàåò, ÷òî â íàñòîÿùåå âðåìÿ áóôåð â ìîäóëå íà ïåðåäà÷ó ïóñò */
|
|
X502_OUT_STATUS_FLAG_BUF_IS_EMPTY = 0x01,
|
|
/** Ôëàã óêàçûâàåò, ÷òî áûëî îïóñòîøåíèå áóôåðà íà âûâîä ñ íà÷àëà ñòàðòà ñèíõðîííîãî
|
|
ââîäà-âûâîäà èëè ñ ìîìåíòà ïîñëåäíåãî ÷òåíèÿ ñòàòóñà ñ ïîìîùüþ
|
|
X502_OutGetStatusFlags() (â çàâèñèìîñòè îò òîãî, ÷òî áûëî ïîñëåäíèì) */
|
|
X502_OUT_STATUS_FLAG_BUF_WAS_EMPTY = 0x02
|
|
} t_x502_out_status_flags;
|
|
|
|
|
|
/** Ïàðàìåòðû ìîäóëåé */
|
|
typedef enum {
|
|
X502_PARAM_UNKNOWN = 0, /**< Íåèçâåñòíûé ïàðàìåòð */
|
|
LTA37_WRITE_CTRL2_REG = 1, /**< çàïèñü êîíòðîëüíîãî ðåãèñòðà äëÿ òåñòîâ */
|
|
} t_x502_params;
|
|
|
|
/** @} */
|
|
|
|
|
|
/***************************************************************************//**
|
|
@addtogroup type_list Òèïû äàííûõ
|
|
@{
|
|
*****************************************************************************/
|
|
|
|
/** @brief Âíóòðåííÿÿ èíôîðìàöèÿ çàïèñè î óñòðîéñòâå
|
|
|
|
Íåïðîçðà÷íàÿ ñòðóêòóðà ñ èíôîðìàöèåé, äîñòàòî÷íîé äëÿ óñòàíîâëåíèÿ
|
|
ñ íèì ñâÿçè. Çàâèñèò îò òèïà óñòðîéñòâà, èíòåðôåéñà ïîäêëþ÷åíèÿ è íå
|
|
äîñòóïíà ïîëüçîâàòåëþ íàïðÿìóþ, à èñïîëüçóåòñÿ áèáëèîòåêîé â
|
|
X502_OpenByDevRecord() */
|
|
typedef struct st_x502_devrec_inptr t_x502_devrec_inptr;
|
|
|
|
/** @brief Çàïèñü î óñòðîéñòâå
|
|
|
|
Ñòðóêòóðà, îïèñûâàþùàÿ óñòðîéñòâî, ïî êîòîðîé ñ íèì ìîæíî óñòàíîâèòü ñîåäèíåíèå */
|
|
typedef struct {
|
|
uint32_t sign; /**< Ïðèçíàê äåéñòâèòåëüíîé ñòðóêòóðû.
|
|
Åñëè çàïèñü äåéñòâèòåëüíà (ñîîòâåòñòâóåò êàêîìó-ëèáî óñòðîéñòâó),
|
|
òî äîëæåí áûòü ðàâåí #X502_DEVREC_SIGN) */
|
|
char devname[X502_DEVNAME_SIZE]; /**< Íàçâàíèå óñòðîéñòâà */
|
|
char serial[X502_SERIAL_SIZE]; /**< Ñåðèéíûé íîìåð */
|
|
char location[X502_LOCATION_STR_SIZE]; /**< Îïèñàíèå ïîäêëþ÷åíèÿ (åñëè åñòü) */
|
|
uint32_t flags; /**< Ôëàãè èç #t_x502_dev_flags, îïèñûâàþùèå óñòðîéñòâî */
|
|
uint8_t iface; /**< Èíòåðôåéñ, ïî êîòîðîìó ïîäêëþ÷åíî óñòðîéñòâî */
|
|
uint8_t location_type; /**< Îïðåäåëÿåò, ÷òî èìåííî ñîõðàíåíî â ïîëå location
|
|
(îäíî çíà÷åíèå èç #t_x502_location_type) */
|
|
char res[122]; /**< Ðåçåðâ */
|
|
t_x502_devrec_inptr* internal; /**< Íåïðîçðà÷íûé óêàçàòåëü íà ñòðóêòóðó ñ
|
|
äîïîëíèòåëüíîé èíôîðìàöèåé, íåîáõîäèìîé
|
|
äëÿ îòêðûòèÿ óñòðîéñòâà */
|
|
} t_x502_devrec;
|
|
|
|
|
|
/** @brief Îïèñàòåëü ìîäóëÿ
|
|
|
|
Íåïðîçðà÷íûé óêàçàòåëü íà ñòðóêòóðó,
|
|
ñîäåðæàùóþ èíôîðìàöèþ î íàñòðîéêàõ ìîäóëÿ è òåêóùåì ñîåäèíåíèè ñ íèì.
|
|
Ïîëüçîâàòåëüñêîé ïðîãðàììå íå äîñòóïíû ïîëÿ ñòðóêòóðû íàïðÿìóþ, à òîëüêî
|
|
÷åðåç ôóíêöèè áèáëèîòåêè.
|
|
Ôóíêöèè óïðàâëåíèÿ ìîäóëåì ïðèíèìàþò îïèñàòåëü ìîäóëÿ ñâîèì ïåðâûì ïàðàìåòðîì.
|
|
Îïèñàòåëü ìîäóëÿ ñîçäàåòñÿ ñ ïîìîùüþ X502_Create() è â êîíöå ðàáîòû
|
|
îñâîáîæäàåòñÿ ñ ïîìîùüþ X502_Free(). */
|
|
typedef struct st_x502* t_x502_hnd;
|
|
|
|
/** @brief Ñïèñîê ñåðèéíûé íîìåðîâ
|
|
|
|
Òèï îïðåäåëÿåò ìàññèâ ñåðèéíûõ íîìåðîâ äëÿ êîëè÷åñòâà ìîäóëåé, îïðåäåëÿåìîãî
|
|
íà ýòàïå ðàáîòû ïðîãðàììû. */
|
|
typedef char (*t_x502_serial_list)[X502_SERIAL_SIZE];
|
|
|
|
/** @brief Êàëèáðîâî÷íûå êîýôôèöèåíòû äèàïàçîíà.
|
|
|
|
Ñòðóêòóðà ñîäåðæèò êàëèáðîâî÷íûå çíà÷åíèÿ ñìåùåíèÿ íóëÿ è êîýôôèöèåíòà
|
|
øêàëû äëÿ îäíîãî äèàïàçîíà ÀÖÏ èëè ÖÀÏ.Ðåçóëüòèðóþùåå çíà÷åíèå ÀÖÏ
|
|
âû÷èñëÿåòñÿ êàê (val - offs) * k, ãäå val - íåîòêàëèáðîâàííîå çíà÷åíèå */
|
|
typedef struct {
|
|
double offs; /**< ñìåùåíèå íóëÿ */
|
|
double k; /**< êîýôôèöèåíò øêàëû */
|
|
} t_x502_cbr_coef;
|
|
|
|
/** @brief Êîýôôèöèåíòû äëÿ êàëèáðîâêè ôèëüðà êîððåêöèè À×Õ
|
|
|
|
Ñòðóêòóðà îïèñûâàåò êîýôôèöèåíòû è ïàðàìåòðû, èñïîëüçóåìûå äëÿ êîððåêöèè À×Õ ÖÀÏ */
|
|
typedef struct {
|
|
double Fd; /**< ×àñòîòà ãåíåðàöèè ÖÀÏ, íà êîòîðîé èçìåðåíî îòíîøåíèå àìïëèòóä. */
|
|
double SigFreq; /**< ×àñòîòà ñèãíàëà, äëÿ êîòîðîé èçìåðåíî îòíîøåíèå àìïëèòóä. */
|
|
/** Íàáîð îòíîøåíèé ðåàëüíî âûñòàâëåííîé àìïëèòóäû ñèíóñîèäàëüíîãî ñèãíàëà
|
|
* ÷àñòîòû @fieldref{TLTR35_AFC_COEF,SigFreq} ê çàäàâàåìîé àìïëèòóäå
|
|
* ïðè ÷àñòîòå ãåíåðàöèè @fieldref{TLTR35_AFC_COEF,Fd} äëÿ êàæäîãî êàíàëà ÖÀÏ. */
|
|
double K[X502_DAC_CH_CNT_MAX];
|
|
} t_x502_afc_coef;
|
|
|
|
/** @brief Êàëèáðîâî÷íûå êîýôôèöèåíòû ìîäóëÿ
|
|
|
|
Ñòðóêòóðà, ñîäåðæàùàÿ âñå êàëèáðîâî÷íûå êîýôôèöèåíòû, êîòîðûå
|
|
èñïîëüçóþòñÿ ìîäóëåì L-502/E-502 */
|
|
typedef struct {
|
|
/** Êàëèáðîâî÷íûå êîýôôèöèåíòû ÀÖÏ */
|
|
t_x502_cbr_coef adc[X502_ADC_RANGE_CNT];
|
|
/** Êàëèáðîâî÷íûå êîýôôèöèåíòû ÖÀÏ */
|
|
t_x502_cbr_coef dac[X502_DAC_CH_CNT_MAX];
|
|
/** Êàëèáðîâî÷íûå êîýôôèöèåíòû ôèëüòðà êîððåêöèè À×Õ äëÿ ÖÀÏ LTA37 */
|
|
t_x502_afc_coef afc_coef;
|
|
} t_x502_cbr;
|
|
|
|
/** @brief Èíôîðìàöèÿ î ìîäóëå L-502/E-502
|
|
|
|
Ñòðóêòóðà, ñîäåðæàùàÿ ïîñòîÿííóþ èíôîðìàöèÿ î ìîäóëå L-502/E-502, êîòîðàÿ êàê ïðàâèëî
|
|
íå èçìåíÿåòñÿ ïîñëå îòêðûòèÿ
|
|
Âíèìàíèå! Áèíàðíàÿ ñîâìåñòèìîñü ìåæäó âåðñèÿìè áèáëèîòåê íå ãàðàíòèðóåòñÿ!
|
|
Èñïîëüçóåòå òîëüêî òå âåðñèè áèáëèîòåê ñ êîòîðûìè áûëà ñêîìïèëèðîâàí ïðîãðàììà!
|
|
*/
|
|
typedef struct {
|
|
char name[X502_DEVNAME_SIZE]; /**< Íàçâàíèå óñòðîéñòâà ("L502" èëè "E502" èëè "E16") */
|
|
char serial[X502_SERIAL_SIZE]; /**< Ñåðèéíûé íîìåð */
|
|
|
|
uint32_t devflags; /**< Ôëàãè èç #t_x502_dev_flags, îïèñûâàþùèå íàëè÷èå
|
|
â ìîäóëå îïðåäåëåííûõ îïöèé */
|
|
uint16_t fpga_ver; /**< Âåðñèÿ ÏËÈÑ (ñòàðøèé áàéò - ìàæîðíàÿ, ìëàäøèé - ìèíîðíàÿ) */
|
|
uint8_t plda_ver; /**< Âåðñèÿ ÏËÈÑ, óïðàâëÿþùåãî àíàëîãîâîé ÷àñòüþ */
|
|
uint8_t board_rev; /**< Ðåâèçèÿ ïëàòû */
|
|
uint32_t mcu_firmware_ver; /**< Âåðñèÿ ïðîøèâêè êîíòðîëëåðà Cortex-M4. Äåéñòâèòåëüíà òîëüêî äëÿ ìîäóëÿ E-502 */
|
|
uint32_t flash_size; /**< Ðàçìåð âíåøíåé flash-ïàìÿòè â áàéòàõ */
|
|
uint8_t factory_mac[X502_MAC_ADDR_SIZE]; /**< Çàâîäñêîé MAC-àäðåñ --- äåéñòâèòåëåí òîëüêî äëÿ
|
|
óñòðîéñòâ ñ Ethernet-èíòåðôåéñîì */
|
|
t_x502_cbr cbr; /**< Çàâîäñêèå êàëèáðîâî÷íûå êîýôôèöèåíòû (èç Flash-ïàìÿòè) */
|
|
} t_x502_info;
|
|
|
|
/** @} */
|
|
|
|
|
|
/** @addtogroup func_list Ôóíêöèè
|
|
@{ **/
|
|
|
|
/***************************************************************************//**
|
|
@addtogroup func_hnd Ôóíêöèè äëÿ ñîçäàíèÿ è îñâîáîæäåíèÿ îïèñàòåëÿ ìîäóëÿ
|
|
@{
|
|
*******************************************************************************/
|
|
|
|
/***************************************************************************//**
|
|
@brief Ñîçäàíèå îïèñàòåëÿ ìîäóëÿ
|
|
|
|
Ñîçäàíèå îïèñàòåëÿ ìîäóëÿ, äëÿ ïîñëåäóþùåé ðàáîòû ñ ìîäóëåì E-502 èëè L-502.
|
|
 ñëó÷àå óñïåøíîãî âûäåëåíèÿ ïàìÿòè èíèöèàëèçèðóåò ïîëÿ îïèñàòåëÿ
|
|
çíà÷åíèÿìè ïî óìîë÷àíèþ.
|
|
@return NULL â ñëó÷àå îøèáêè, èíà÷å - îïèñàòåëü ìîäóëÿ
|
|
*******************************************************************************/
|
|
X502_EXPORT(t_x502_hnd) X502_Create(void);
|
|
|
|
/***************************************************************************//**
|
|
@brief Îñâîáîæäåíèå îïèñàòåëÿ ìîäóëÿ
|
|
|
|
Îñâîáîæäåíèå ïàìÿòè, âûäåëåííîé ïîä îïèñàòåëü ìîäóëÿ ñ ïîìîùüþ X502_Create().
|
|
Ïîñëå ýòîãî îïèñàòåëü óæå èñïîëüçîâàòü íåëüçÿ, íåçàâèñèìî îò âîçâðàùåííîãî
|
|
çíà÷åíèÿ!
|
|
@param[in] hnd Îïèñàòåëü óñòðîéñòâà
|
|
@return Êîä îøèáêè
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_Free(t_x502_hnd hnd);
|
|
/** @} */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/***************************************************************************//**
|
|
@addtogroup func_devrec Ôóíêöèè äëÿ ðàáîòû ñ çàïèñÿìè îá óñòðîéñòâå
|
|
@{
|
|
*******************************************************************************/
|
|
|
|
/***************************************************************************//**
|
|
@brief Îòêðûòü ñîåäèíåíèå ñ ìîäóëåì ïî çàïèñè î óñòðîéñòâå
|
|
|
|
Ôóíêöèÿ óñòàíàâëèâàåò ñîåäèíåíèå ñ ìîäóëåì E-502 èëè L-502 ïî çàïèñè îá ýòîì óñòðîéñòâå.
|
|
Íåîáõîäèìûå äåéñòâèÿ çàâèñÿò îò òîãî, íà êàêîå óñòðîéñòâî ïîäêëþ÷åííîå ïî
|
|
êàêîìó èíòåðôåéñó ññûëàåòñÿ çàïèñü. Ñàìè çàïèñè ñîçäàþòñÿ ñïåöèàëüíûìè
|
|
ôóíêöèÿìè (ñâîè äëÿ êàæäîãî òèïà ìîäóëÿ è èíòåðôåéñà ïîäêëþ÷åíèÿ) è íå
|
|
äîëæíû èçìåíÿòüñÿ ïîëüçîâàòåëåì âðó÷íóþ.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] devrec Çàïèñü î óñòðîéñòâå, ñîäåðæàùàÿ íåîáõîäèìóþ èíôîðìàöèþ
|
|
äëÿ óñòàíîâëåíèÿ ñ íèì ñâÿçè
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_OpenByDevRecord(t_x502_hnd hnd, const t_x502_devrec *devrec);
|
|
|
|
/***************************************************************************//**
|
|
@brief Îñâîáîæäåíèå çàïèñåé îá óñòðîéñòâàõ
|
|
|
|
Ôóíêöèÿ î÷èùàåò ðåñóðñû, âûäåëåííûå ïðè èíèöèàëèçàöèè çàïèñè î óñòðîéñòâå
|
|
ïîä èíôîðìàöèþ, íåîáõîäèìóþ äëÿ îòêðûòèÿ óñòðîéñòâà.
|
|
Äàííàÿ ôóíêöèÿ äîëæíà âûçûâàòüñÿ ïîñëå èíèöèàëèçàöèè
|
|
çàïèñè î óñòðîéñòâå îäíîé èç ñîîòâåòñòâóþùèõ ôóíêöèé ïîñëå òîãî, êîãäà
|
|
çàïèñü óæå íå íóæíà. Ïîñëå óñòàíîâêè ñâÿçè ñ óñòðîéñòâîì ÷åðåç
|
|
X502_OpenByDevRecord() çàïèñü íå èñïîëüçóåòñÿ â äàëüíåéøåì è åå ìîæíî
|
|
ïðè æåëàíèè ñðàçó îñâîáîäèòü, íå çàêðûâàÿ ñîåäèíåíèÿ ñ óñòðîéñòâîì.
|
|
Ôóíêöèÿ ìîæåò î÷èñòèòü ñðàçó íåñêîëüêî çàïèñåé èç ìàññèâà (åñëè î÷èùàåòñÿ
|
|
îäíà, òî â êà÷åñòâå ðàçìåðà äîïóñòèìî óêàçûâàòü 1).
|
|
|
|
@param[in] list Ìàññèâ çàïèñåé î óñòðîéñòâå èëè óêàçàòåëü íà åäèíñòâåííóþ
|
|
çàïèñü, ðåñóðñû êîòîðîé (êîòîðûõ) íóæíî îñâîáîäèòü.
|
|
@param[in] size Êîëè÷åñòâî çàïèñåé â ìàññèâå
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_FreeDevRecordList(t_x502_devrec *list, uint32_t size);
|
|
|
|
/** @} */
|
|
|
|
|
|
/***************************************************************************//**
|
|
@addtogroup func_open Ôóíêöèè äëÿ îòêðûòèÿ è ïîëó÷åíèÿ èíôîðìàöèè î ìîäóëå
|
|
@{
|
|
*******************************************************************************/
|
|
|
|
/***************************************************************************//**
|
|
@brief Çàêðûòèå ñîåäèíåíèÿ ñ ìîäóëåì
|
|
|
|
Ôóíêöèÿ ðàçðûâàåò ñîåäèíåíèå ñ ìîäóëåì E-502/L-502, åñëè îíî áûëî ðàíåå óñòàíîâëåíî
|
|
(â ïðîòèâíîì ñëó÷àå íè÷åãî íå äåëàåò).
|
|
Îïèñàòåëü ìîäóëÿ íå îñâîáîæäàåòñÿ.
|
|
Ïàìÿòü ïîä îïèñàòåëü ìîäóëÿ äîëæíà áûòü îñâîáîæäåíà âûçîâîì X502_Free().
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_Close(t_x502_hnd hnd);
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Ïðîâåðêà, îòêðûòî ëè ñîåäèíåíèå ñ ìîäóëåì
|
|
|
|
Ôóíêöèÿ ïðîâåðÿåò, îòêðûòî ëè â äàííûé ìîìåíò ñîåäèíåíèå ñ ìîäóëåì. Åñëè
|
|
ñîåäèíåíèå îòêðûòî, òî ôóíêöèÿ âîçâðàùàåò #X502_ERR_OK. Åñëè æå çàêðûòî, òî
|
|
ôóíêöèÿ âîçâðàùàåò îøèáêó #X502_ERR_DEVICE_NOT_OPENED.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_IsOpened(t_x502_hnd hnd);
|
|
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Ïîëó÷åíèå èíôîðìàöèè î ìîäóëå
|
|
|
|
Ïîëó÷åíèå èíôîðìàöèè î ìîäóëå L-502/E-502, ñ êîòîðûì óñòàíîâëåíà ñâÿçü.
|
|
Âíèìàíèå! Ïðè èñïîëüçîâàíèè ýòîé ôóíêöèè (êàê è ëþáîé äðóãîé èç ýòîãî api)
|
|
âàæíî óáåäèòüñÿ ÷òî ïðè ñáîðêå èñïîëíÿåìîãî ôàéëà, èñïîëüçóåòñÿ çàãîëîâî÷íûé ôàéë
|
|
òîé æå âåðñèè ÷òî è áèíàðíûé ôàéë ñàìîé áèáëèîòåêè (x502api.h == x502api.dll)!
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[out] info Èíôîðìàöèÿ î ìîäóëå (ñìîòðè îïèñàíèå òèïà #t_x502_info).
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
#ifdef _WIN32
|
|
#pragma deprecated(X502_GetDevInfo)
|
|
#else
|
|
__attribute__((__deprecated__))
|
|
#endif
|
|
X502_EXPORT(int32_t) X502_GetDevInfo(t_x502_hnd hnd, t_x502_info* info);
|
|
|
|
/***************************************************************************//**
|
|
@brief Ïîëó÷åíèå èíôîðìàöèè î ìîäóëå
|
|
|
|
Ïîëó÷åíèå èíôîðìàöèè î ìîäóëå L-502/E-502, ñ êîòîðûì óñòàíîâëåíà ñâÿçü.
|
|
Âíèìàíèå! Ïðè èñïîëüçîâàíèè ýòîé ôóíêöèè (êàê è ëþáîé äðóãîé èç ýòîãî api)
|
|
âàæíî óáåäèòüñÿ ÷òî ïðè ñáîðêå èñïîëíÿåìîãî ôàéëà, èñïîëüçóåòñÿ çàãîëîâî÷íûé ôàéë
|
|
òîé æå âåðñèè ÷òî è áèíàðíûé ôàéë ñàìîé áèáëèîòåêè (x502api.h == x502api.dll)!
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[out] info Èíôîðìàöèÿ î ìîäóëå (ñìîòðè îïèñàíèå òèïà #t_x502_info).
|
|
@param[in] size Ðàçìåð sizeof(t_x502_info).
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_GetDevInfo2(t_x502_hnd hnd, t_x502_info* info, uint32_t size);
|
|
|
|
/** @} */
|
|
|
|
/***************************************************************************//**
|
|
@addtogroup func_config Ôóíêöèè äëÿ èçìåíåíèÿ íàñòðîåê ìîäóëÿ
|
|
@{
|
|
*******************************************************************************/
|
|
|
|
/***************************************************************************//**
|
|
@brief Ïåðåäà÷à óñòàíîâëåííûõ íàñòðîåê â ìîäóëü
|
|
|
|
Ôóíêöèÿ âûïîëíÿåò çàïèñü òåêóùèõ íàñòðîåê (êîòîðûå áûëè óñòàíîâëåíû
|
|
ñ ïîìîùüþ ôóíêöèé X502_SetXXX) â ìîäóëü.
|
|
Äîëæíà âûçûâàòüñÿ ïåðåä çàïóñêîì ïîòîêà äàííûõ.
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] flags Ôëàãè (ðåçåðâ - äîëæíî áûòü ðàâíî 0).
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_Configure(t_x502_hnd hnd, uint32_t flags);
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Óñòàíîâêà ïàðàìåòðîâ ëîãè÷åñêîãî êàíàëà
|
|
|
|
Ôóíêöèÿ óñòàíàâëèâàåò ïàðàìåòðû çàäàííîãî ëîãè÷åñêîãî êàíàëà â ëîãè÷åñêîé
|
|
òàáëèöå ÀÖÏ.
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] lch Íîìåð ëîãè÷åñêîãî êàíàëà.
|
|
(îò 0 äî #X502_LTABLE_MAX_CH_CNT-1 èëè äî #E16_LTABLE_MAX_CH_CNT-1 äëÿ E16)
|
|
@param[in] phy_ch Íîìåð ôèçè÷åñêîãî êàíàëà ÀÖÏ, íà÷èíàÿ ñ 0
|
|
(0-15 äëÿ äèôôåðåíöèàëüíîãî ðåæèìà,
|
|
0-31 äëÿ ðåæèìà ñ îáùåé çåìëåé)
|
|
@param[in] mode Ðåæèì èçìåðåíèÿ êàíàë ÀÖÏ (çíà÷åíèå òèïà #t_x502_lch_mode)
|
|
@param[in] range Äèàïàçîí èçìåðåíèÿ êàíàëà (çíà÷åíèå òèïà #t_x502_adc_range)
|
|
@param[in] avg Êîýôôèöèåíò óñðåäíåíèÿ ïî êàíàëó (íå ðåàëèçîâàíî â E16). Íóëåâîå çíà÷åíèå
|
|
ñîîòâåòñòâóåò çíà÷åíèþ êîýôôèöèåíòà, îïðåäåëåííîãî
|
|
áèáëèîòåêîé. Äëÿ ÿâíîãî çàäàíèÿ êîýôôèöèåíòà óñðåäíåíèÿ
|
|
íóæíî ïåðåä çíà÷åíèå îò 1 (îòñóòñòâèå óñðåäíåíèÿ) äî
|
|
#X502_LCH_AVG_SIZE_MAX.
|
|
 ñëó÷àå åñëè çíà÷åíèå óñðåäíåíèÿ ïðåâûøàåò äåëèòåëü
|
|
÷àñòîòû, òî ýòî çíà÷åíèå áóäåò ñêîððåêòèðîâàíî
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_SetLChannel(t_x502_hnd hnd, uint32_t lch, uint32_t phy_ch,
|
|
uint32_t mode, uint32_t range, uint32_t avg);
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Ïîëó÷åíèå ìàññèâà äèàïàçîíîâ ìîäóëÿ E16
|
|
|
|
Âîçâðàùàåì óêàçàòåëü íà ìàññèâ:
|
|
double ranges[] = {10, 2.5, 0.625, 0.15625};
|
|
|
|
@param[in] ranges_len Óêàçàòåëü êóäà çàïèñûâàåò ðàçìåð âîçâðàùàåìîãî ìàññèâà
|
|
@return Óêàçàòåëü íà ìàññèâ double ðàçìåðîì ranges_len èëè NULL â ñëó÷àå îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(double const*) E16_GetAdcRanges(uint32_t *ranges_len);
|
|
|
|
/***************************************************************************//**
|
|
@brief Ïîëó÷åíèå ìàññèâà äèàïàçîíîâ ìîäóëÿ E502
|
|
|
|
Âîçâðàùàåì óêàçàòåëü íà ìàññèâ:
|
|
double ranges[] = {10., 5., 2., 1., 0.5, 0.2};
|
|
|
|
@param[in] ranges_len Óêàçàòåëü êóäà çàïèñûâàåò ðàçìåð âîçâðàùàåìîãî ìàññèâà
|
|
@return Óêàçàòåëü íà ìàññèâ double ðàçìåðîì ranges_len èëè NULL â ñëó÷àå îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(double const*) E502_GetAdcRanges(uint32_t *ranges_len);
|
|
|
|
/***************************************************************************//**
|
|
@brief Ïîëó÷åíèå ìàññèâà äèàïàçîíîâ ìîäóëÿ
|
|
|
|
Äëÿ ìîäóëÿ E16:
|
|
double ranges[] = {10, 2.5, 0.625, 0.15625};
|
|
Äëÿ ìîäóëÿ E502:
|
|
double ranges[] = {10., 5., 2., 1., 0.5, 0.2};
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] ranges_len Óêàçàòåëü êóäà çàïèñûâàåò ðàçìåð âîçâðàùàåìîãî ìàññèâà
|
|
@return Óêàçàòåëü íà ìàññèâ double ðàçìåðîì ranges_len èëè NULL â ñëó÷àå îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(double const*) X502_GetAdcRanges(t_x502_hnd hnd, uint32_t *ranges_len);
|
|
|
|
/***************************************************************************//**
|
|
@brief Óñòàíîâêà êîëè÷åñòâà ëîãè÷åñêèõ êàíàëîâ
|
|
|
|
Ôóíêöèÿ óñòàíàâëèâàåò êîëè÷åñòâî ëîãè÷åñêèõ êàíàëîâ â ëîãè÷åñêîé òàáëèöå ÀÖÏ.
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ
|
|
@param[in] lch_cnt Êîëè÷åñòâî ëîãè÷åñêèõ êàíàëîâ
|
|
(îò 1 äî #X502_LTABLE_MAX_CH_CNT èëè äî #E16_LTABLE_MAX_CH_CNT äëÿ E16)
|
|
@return Êîä îøèáêè
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_SetLChannelCount(t_x502_hnd hnd, uint32_t lch_cnt);
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Ïîëó÷åíèå êîëè÷åñòâà ëîãè÷åñêèõ êàíàëîâ
|
|
|
|
Ôóíêöèÿ âîçâðàùàåò óñòàíîâëåííîå ðàíåå ñ ïîìîùüþ X502_SetLChannelCount()
|
|
êîëè÷åñòâî ëîãè÷åñêèõ êàíàëîâ â óïðàâëÿþùåé òàáëèöå ÀÖÏ.
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ
|
|
@param[out] lch_cnt Êîëè÷åñòâî ëîãè÷åñêèõ êàíàëîâ
|
|
@return Êîä îøèáêè
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_GetLChannelCount(t_x502_hnd hnd, uint32_t* lch_cnt);
|
|
|
|
/***************************************************************************//**
|
|
@brief Óñòàíîâêà äåëèòåëÿ ÷àñòîòû ñáîðà äëÿ ÀÖÏ
|
|
|
|
×àñòîòà ñáîðà ÀÖÏ ïîëó÷àåòñÿ êàê ðåçóëüòàò äåëåíèÿ îïîðíîé ÷àñòîòû
|
|
ñèíõðîíèçàöèè (êàê â ñëó÷àå âíåøíåé, òàê è âíóòðåííåé) íà äåëèòåëü,
|
|
óñòàíàâëèâàåìûé ýòîé ôóíêöèåé.
|
|
|
|
Àëüòåðíàòèâîé ýòîé ôóíêöèè ñëóæèò X502_SetAdcFreq(), êîòîðàÿ ðàññ÷èòûâàåò
|
|
ýòîò äåëèòåëü íà îñíîâàíèè ïåðåäàííîé òðåáóåìîé ÷àñòîòû ñáîðà ÀÖÏ.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] adc_freq_div Äåëèòåëü ÷àñòîòû ÀÖÏ (îò 1 äî #X502_ADC_FREQ_DIV_MAX).
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_SetAdcFreqDivider(t_x502_hnd hnd, uint32_t adc_freq_div);
|
|
|
|
/***************************************************************************//**
|
|
@brief Óñòàíîâêà çíà÷åíèÿ ìåæêàäðîâîé çàäåðæêè äëÿ ÀÖÏ
|
|
|
|
Ôóíêöèÿ óñòàíàâëèâàåò ìåæêàäðîâóþ çàäåðæêó äëÿ ÀÖÏ, òî åñòü êîëè÷åñòâî
|
|
ïåðèîäîâ îïîðíîé ÷àñòîòû ñèíõðîíèçàöèè, êîòîðîå áóäåò ïðîïóùåíî ïîñëå
|
|
ïðîâåäåíèÿ èçìåðåíèÿ ïîñëåäíåãî êàíàëà ëîãè÷åñêîé òàáëèöû äî ïðîâåäåíèÿ
|
|
èçìåðåíèÿ, ñîîòâåòñòâóþùåãî ïåðâîìó ëîãè÷åñêîìó êàíàëó ñëåäóþùåãî êàäðà.
|
|
|
|
Àëüòåðíàòèâîé ìîæåò ÿâëÿòüñÿ ôóíêöèÿ X502_SetAdcFreq(), êîòîðàÿ ðàññ÷èòûâàåò
|
|
çíà÷åíèå ìåæêàäðîâîé çàäåðæêè ïî çàäàííûì ïàðàìåòðàì ÷àñòîòû ñáîðà è ÷àñòîòû
|
|
ñëåäîâàíèÿ êàäðîâ (÷àñòîòû ñáîðà íà ëîãè÷åñêèé êàíàë).
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] delay Çíà÷åíèå ìåæêàäðîâîé çàäåðæêè (îò 0 äî
|
|
#X502_ADC_INTERFRAME_DELAY_MAX)
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_SetAdcInterframeDelay(t_x502_hnd hnd, uint32_t delay);
|
|
|
|
/***************************************************************************//**
|
|
@brief Óñòàíîâêà äåëèòåëÿ ÷àñòîòû ñèíõðîííîãî ââîäà ñ öèôðîâûõ ëèíèé.
|
|
|
|
×àñòîòà ñèíõðîííîãî ââîäà äàííûõ ñ öèôðîâûõ âõîäîâ ïîëó÷àåòñÿ êàê ðåçóëüòàò
|
|
äåëåíèÿ îïîðíîé ÷àñòîòû ñèíõðîíèçàöèè íà äåëèòåëü, óñòàíàâëèâàåìûé ýòîé
|
|
ôóíêöèåé.
|
|
|
|
Àëüòåðíàòèâîé ýòîé ôóíêöèè ñëóæèò X502_SetDinFreq(), êîòîðàÿ ðàññ÷èòûâàåò
|
|
ýòîò äåëèòåëü íà îñíîâàíèè ïåðåäàííîé òðåáóåìîé ÷àñòîòû ñèíõðîííîãî ââîäà
|
|
ñ öèôðîâûõ ëèíèé.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] din_freq_div Äåëèòåëü ÷àñòîòû ñèíõðîííîãî ââîäà ñ öèôðîâûõ ëèíèé
|
|
(îò 1 äî #X502_DIN_FREQ_DIV_MAX).
|
|
@return Êîä îøèáêè.
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_SetDinFreqDivider(t_x502_hnd hnd, uint32_t din_freq_div);
|
|
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Óñòàíîâêà äåëèòåëÿ ÷àñòîòû ñèíõðîííîãî âûâîäà
|
|
|
|
×àñòîòà ñèíõðîííîãî âûâîäà äàííûõ ïîëó÷àåòñÿ êàê ðåçóëüòàò äåëåíèÿ îïîðíîé
|
|
÷àñòîòû ñèíõðîíèçàöèè íà äåëèòåëü, óñòàíàâëèâàåìûé ýòîé ôóíêöèåé.
|
|
Èñïîëüçóåòñÿ îáùàÿ ÷àñòîòà âûâîäà äëÿ êàæäîãî êàíàëà ÖÀÏ è äëÿ öèôðîâûõ
|
|
ëèíèé (âûâîä îñóùåñòâëÿåòñÿ ïàðàëëåëüíî). ×àñòîòà âûâîäà íå ìîæåò áûòü
|
|
áîëüøå ïîëîâèíû îïîðíîé ÷àñòîòû.
|
|
|
|
Àëüòåðíàòèâîé ýòîé ôóíêöèè ñëóæèò X502_SetOutFreq(), êîòîðàÿ ðàññ÷èòûâàåò
|
|
ýòîò äåëèòåëü íà îñíîâàíèè ïåðåäàííîé òðåáóåìîé ÷àñòîòû ñèíõðîííîãî âûâîäà.
|
|
|
|
@note Äëÿ ìîäóëÿ L-502, ÷òîáû áûëà âîçìîæíîñòü óñòàíîâèòü äåëèòåëü, îòëè÷íûé îò
|
|
#X502_OUT_FREQ_DIV_DEFAULT, íåîáõîäèìî îáíîâèòü ïðîøèâêó ÏËÈÑ äî âåðñèè 0.5 èëè âûøå.
|
|
Äëÿ ìîäóëÿ E-502 âîçìîæíîñòü âñåãäà ïîääåðæèâàåòñÿ. Ïðîâåðèòü ïðîãðàììíî íàëè÷èå
|
|
äàííîé âîçìîæíîñòè ìîæíî ñ ïîìîùüþ ôóíêöèè X502_CheckFeature().
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] out_freq_div Äåëèòåëü ÷àñòîòû ñèíõðîííîãî âûâîäà
|
|
(îò #X502_OUT_FREQ_DIV_MIN äî #X502_OUT_FREQ_DIV_MAX).
|
|
@return Êîä îøèáêè.
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_SetOutFreqDivider(t_x502_hnd hnd, uint32_t out_freq_div);
|
|
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Óñòàíîâêà ÷àñòîòû ñáîðà ÀÖÏ
|
|
|
|
Ôóíêöèÿ ïîäáèðàåò äåëèòåëü ÷àñòîòû ÀÖÏ òàê, ÷òîáû ïîëó÷åííàÿ ÷àñòîòà ñáîðà
|
|
áûëà íàèáîëåå áëèçêà ê óêàçàííîé â ïàðàìåòðå f_acq. Ôóíêöèÿ âîçâðàùàåò
|
|
â ýòîì æå ïàðàìåòðå ðåàëüíóþ ÷àñòîòó, êîòîðàÿ áûëà óñòàíîâëåíà.
|
|
|
|
Òàê æå ôóíêöèÿ ìîæåò ïîäîáðàòü çíà÷åíèå ìåæêàäðîâîé çàäåðæêè òàê, ÷òîáû
|
|
÷àñòîòà ñëåäîâàíèÿ êàäðîâ (÷àñòîòà ñáîðà íà ëîãè÷åñêèé êàíàë) áûëà íàèáîëåå
|
|
áëèçêà ê óêàçàííîìó çíà÷åíèþ.
|
|
Äëÿ ýòîãî ñëåäóåò ïåðåäàòü òðåáóåìîå çíà÷åíèå â ïåðåìåííîé f_frame (â íåé
|
|
òàêæå ïî çàâåðøåíèþ áóäåò âîçâðàùåíî çíà÷åíèå óñòàíîâëåííîé ÷àñòîòû).
|
|
Åñëè â êà÷åñòâå f_frame ïåðåäàí íóëåâîé óêàçàòåëü, òî áóäåò óñòàíîâëåíà
|
|
íóëåâàÿ ìåæêàäðîâàÿ çàäåðæêà.
|
|
|
|
Åñëè íåîáõîäèìî èçìåíèòü çíà÷åíèå îïîðíîé ÷àñòîòû, òî äàííàÿ ôóíêöèÿ äîëæíà
|
|
áûòü âûçâàíà ïîñëå X502_SetSyncMode() è X502_SetRefFreq() / X502_SetExtRefFreqValue(),
|
|
â ïðîòèâíîì ñëó÷àå ïîëó÷åííûå äåëèòåëè áóäóò äàâàòü íåâåðíîå çíà÷åíèå ÷àñòîòû.
|
|
|
|
Åñëè óñòàíàâëèâàåòñÿ ÷àñòîòà êàäðîâ, òî ôóíêöèÿ äîëæíà âûçûâàòüñÿ ïîñëå
|
|
òîãî, êàê áûëî çàäàííî íóæíîå êîëè÷åñòâî ëîãè÷åñêèõ êàíàëîâ â óïðàâëÿþùåé
|
|
òàáëèöå ñ ïîìîùüþ X502_SetLChannelCount().
|
|
|
|
Ïðè èñïîëüçîâàíèè âíåøíåé îïîðíîé ÷àñòîòû ñèíõðîíèçàöèè ýòà ôóíêöèÿ áóäåò
|
|
äàâàòü âåðíûé ðåçóëüòàò, òîëüêî åñëè ýòà âíåøíÿÿ ÷àñòîòà ñîîòâåòñòâóåò
|
|
çíà÷åíèþ, óñòàíîâëåííîìó ñ ïîìîùüþ X502_SetRefFreq().
|
|
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in,out] f_acq Íà âõîäå ïðèíèìàåò òðåáóåìîå çíà÷åíèÿ ÷àñòîòû ñáîðà
|
|
ÀÖÏ â Ãåðöàõ. Íà âûõîäå âîçâðàùàåò ðåàëüíî
|
|
óñòàíîâëåííîå çíà÷åíèå ÷àñòîòû.
|
|
@param[in,out] f_frame Íà âõîäå ïðèíèìàåò òðåáóåìîå çíà÷åíèå ÷àñòîòû ñáîðà
|
|
êàäðîâ (÷àñòîòû ñáîðà íà ëîãè÷åñêèé êàíàë) ÀÖÏ
|
|
â Ãåðöàõ. Íà âûõîäå âîçâðàùàåò ðåàëüíî
|
|
óñòàíîâëåííîå çíà÷åíèå. Åñëè ïåðåäàí íóëåâîé
|
|
óêàçàòåëü, òî óñòàíàâëèâàåò ìàêñèìàëüíóþ ÷àñòîòó
|
|
ñáîðà êàäðîâ (íóëåâóþ ìåæêàäðîâóþ çàäåðæêó).
|
|
@return Êîä îøèáêè.
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_SetAdcFreq(t_x502_hnd hnd, double *f_acq, double *f_frame);
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Óñòàíîâêà ÷àñòîòû ñèíõðîííîãî ââîäà ñ öèôðîâûõ âõîäîâ
|
|
|
|
Ôóíêöèÿ ïîäáèðàåò äåëèòåëü ÷àñòîòû ââîäà çíà÷åíèé ñ öèôðîâûõ âõîäîâ òàê, ÷òîáû
|
|
ïîëó÷åííàÿ ÷àñòîòà ââîäà áûëà íàèáîëåå áëèçêà ê óêàçàííîé. Ôóíêöèÿ âîçâðàùàåò
|
|
â ýòîì æå ïàðàìåòðå ðåàëüíóþ ÷àñòîòó, êîòîðàÿ áûëà óñòàíîâëåíà.
|
|
|
|
Åñëè íåîáõîäèìî èçìåíèòü çíà÷åíèå îïîðíîé ÷àñòîòû ñèíõðîíèçàöèè, òî äàííàÿ
|
|
ôóíêöèÿ äîëæíà áûòü âûçâàíà ïîñëå X502_SetSyncMode() è
|
|
X502_SetRefFreq()/ X502_SetExtRefFreqValue(), â ïðîòèâíîì ñëó÷àå ïîëó÷åííûé
|
|
äåëèòåëü áóäåò äàâàòü íåâåðíîå çíà÷åíèå ÷àñòîòû.
|
|
|
|
Ïðè èñïîëüçîâàíèè âíåøíåé îïîðíîé ÷àñòîòû ñèíõðîíèçàöèè ýòà ôóíêöèÿ áóäåò
|
|
äàâàòü âåðíûé ðåçóëüòàò, òîëüêî åñëè ýòà âíåøíÿÿ ÷àñòîòà ñîîòâåòñòâóåò
|
|
çíà÷åíèþ, óñòàíîâëåííîìó ñ ïîìîùüþ X502_SetRefFreq().
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in,out] f_din Íà âõîäå ïðèíèìàåò òðåáóåìîå çíà÷åíèÿ ÷àñòîòû ââîäà
|
|
ñ öèôðîâûõ âõîäîâ â Ãåðöàõ. Íà âûõîäå âîçâðàùàåò
|
|
ðåàëüíî óñòàíîâëåííîå çíà÷åíèå ÷àñòîòû.
|
|
@return Êîä îøèáêè.
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_SetDinFreq(t_x502_hnd hnd, double *f_din);
|
|
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Óñòàíîâêà ÷àñòîòû ñèíõðîííîãî âûâîäà
|
|
|
|
Ôóíêöèÿ ïîäáèðàåò äåëèòåëü ÷àñòîòû ñèíõðîííîãî âûâîäà òàê, ÷òîáû
|
|
ïîëó÷åííàÿ ÷àñòîòà áûëà íàèáîëåå áëèçêà ê óêàçàííîé. Ôóíêöèÿ âîçâðàùàåò
|
|
â ýòîì æå ïàðàìåòðå ðåàëüíóþ ÷àñòîòó, êîòîðàÿ áûëà óñòàíîâëåíà.
|
|
|
|
Åñëè íåîáõîäèìî èçìåíèòü çíà÷åíèå îïîðíîé ÷àñòîòû ñèíõðîíèçàöèè, òî äàííàÿ
|
|
ôóíêöèÿ äîëæíà áûòü âûçâàíà ïîñëå X502_SetSyncMode() è
|
|
X502_SetRefFreq() / X502_SetExtRefFreqValue(), â ïðîòèâíîì ñëó÷àå
|
|
ïîëó÷åííûé äåëèòåëü áóäåò äàâàòü íåâåðíîå çíà÷åíèå ÷àñòîòû.
|
|
|
|
Ïðè èñïîëüçîâàíèè âíåøíåé îïîðíîé ÷àñòîòû ñèíõðîíèçàöèè ýòà ôóíêöèÿ áóäåò
|
|
äàâàòü âåðíûé ðåçóëüòàò, òîëüêî åñëè ýòà âíåøíÿÿ ÷àñòîòà ñîîòâåòñòâóåò
|
|
çíà÷åíèþ, óñòàíîâëåííîìó ñ ïîìîùüþ X502_SetRefFreq().
|
|
|
|
@note Äëÿ ìîäóëÿ L-502, ÷òîáû áûëà âîçìîæíîñòü óñòàíîâèòü ÷àñòîòó, îòëè÷íóþ îò
|
|
îïîðíîé ÷àñòîòû, äåëåííîé íà #X502_OUT_FREQ_DIV_DEFAULT, íåîáõîäèìî îáíîâèòü
|
|
ïðîøèâêó ÏËÈÑ äî âåðñèè 0.5 èëè âûøå.
|
|
Äëÿ ìîäóëÿ E-502 âîçìîæíîñòü âñåãäà ïîääåðæèâàåòñÿ.
|
|
Ïðîâåðèòü ïðîãðàììíî íàëè÷èå äàííîé âîçìîæíîñòè ìîæíî ñ ïîìîùüþ
|
|
ôóíêöèè X502_CheckFeature().
|
|
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in,out] f_dout Íà âõîäå ïðèíèìàåò òðåáóåìîå çíà÷åíèÿ ÷àñòîòû
|
|
ñèíõðîííîãî âûâîäà â Ãåðöàõ. Íà âûõîäå âîçâðàùàåò
|
|
ðåàëüíî óñòàíîâëåííîå çíà÷åíèå ÷àñòîòû.
|
|
@return Êîä îøèáêè.
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_SetOutFreq(t_x502_hnd hnd, double *f_dout);
|
|
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Ïîëó÷èòü òåêóùèå çíà÷åíèÿ ÷àñòîò ñáîðà ÀÖÏ
|
|
|
|
Ôóíêöèÿ âîçâðàùàåò òêóùèå óñòàíîâëåííûå äëÿ ìîäóëÿ çíà÷åíèÿ ÷àñòîòû ñáîðà
|
|
è ÷àñòîòû êàäðîâ ÀÖÏ (÷àñòîòû íà ëîãè÷åñêèé êàíàë) â Ãåðöàõ, êîòîðûå áûëè
|
|
óñòàíîâëåíû äî ýòîãî ñ ïîìîùüþ X502_SetAdcFreq() èëè ñ ïîìîùüþ ôóíêöèé
|
|
X502_SetAdcFreqDivider() / X502_SetAdcInterframeDelay().
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[out] f_acq Åñëè íå NULL, òî íà âûõîäå âîçâðàùàåòñÿ òåêóùåå
|
|
çíà÷åíèå ÷àñòîòû ñáîðà ÀÖÏ.
|
|
@param[out] f_frame Åñëè íå NULL, òî íà âûõîäå âîçâðàùàåòñÿ òåêóùåå
|
|
çíà÷åíèå ÷àñòîòû êàäðîâ ÀÖÏ.
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_GetAdcFreq(t_x502_hnd hnd, double *f_acq, double *f_frame);
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Óñòàíîâêà çíà÷åíèÿ âíóòðåííåé îïîðíîé ÷àñòîòû ñèíõðîíèçàöèè
|
|
|
|
Ôóíêöèÿ çàäàåò çíà÷åíèå âíóòðåííåé îïîðíîé ÷àñòîòû ñèíõðîíèçàöèè, îò êîòîðîé
|
|
ïîëó÷àþòñÿ âñå ÷àñòîòû ñèíõðîííîãî ââîäà/âûâîäà ïîñðåäñòâîì äåëåíèÿ
|
|
íà îïðåäåëåííûé äåëèòåëü.
|
|
|
|
Äàííàÿ ôóíêöèÿ ïðè âíóòðåííåé îïîðíîé ÷àñòåòå âûáèðàåò îäíó èç äâóõ äîñòóïíûõ
|
|
÷àñòîò â 2ÌÃö èëè 1.5 ÌÃö(2ÌÃö ÿâëÿåòñÿ çíà÷åíèåì ïî óìîë÷àíèþ), äëÿ çàäàíèÿ
|
|
êîòîðûõ ìîæíî ââåäåíû êîíñòàíòû èç #t_x502_ref_freq.
|
|
|
|
Ïðè èñïîëüçîâàíèè âíåøíåé îïîðíîé ÷àñòîòû ñëåäóåò èñïîëüçîâàòü
|
|
X502_SetExtRefFreqValue().
|
|
|
|
Äëÿ ìîäóëÿ E-502 âûâîä íà ÖÀÏ ïðè îïîðíîé ÷àñòîòå 1.5 ÌÃö ðàáîòàåò òîëüêî
|
|
äëÿ âåðñèè ïðîøèâêè PLDA 1 èëè âûøå.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] freq Çíà÷åíèå èç #t_x502_ref_freq, êîòîðîå çàäàåò
|
|
âûáðàííóþ îïîðíóþ ÷àñòîòó.
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_SetRefFreq(t_x502_hnd hnd, uint32_t freq);
|
|
|
|
/***************************************************************************//**
|
|
@brief Óñòàíîâêà çíà÷åíèÿ âíåøíåé îïîðíîé ÷àñòîòû ñèíõðîíèçàöèè
|
|
|
|
Ïðè óñòàíîâêå âíåøíåé îïîðíîé ÷àñòîòû (âûçîâ X502_SetSyncMode() ñî çàí÷åíèåì,
|
|
îòëè÷íûì îò #X502_SYNC_INTERNAL) äàííàÿ ôóíêöèÿ ïîçâîëÿåò çàäàòü
|
|
÷àñòîòó âíåøíåé îïîðíîé ÷àñòîòû, êîòîðîÿ ìîæåò áûòü ëþáàÿ, íî íå ïðåâûøàòü
|
|
1.5 ÌÃö.
|
|
|
|
Äàííàÿ ôóíêöèÿ íå âëèÿåò íà íàñòðîéêè ñàìîãî ìîäóëÿ, îäíàêî óñòàíîâêà êîððåêòíîãî
|
|
çíà÷åíèÿ ïîçâîëÿåò ïðàâèëüíî óñòàíîâèòü íóæíóþ ÷àñòîòó ñáîðà ôóíêöèÿìè
|
|
X502_SetAdcFreq(), X502_SetDinFreq() è X502_SetOutFreq(), à òàêæå êîððåêòíî
|
|
ðàññ÷èòàòü çíà÷åíèÿ ïî óìîë÷àíèþ äëÿ ðàçìåðà áóôåðà è øàãà ïåðåäà÷è äàííûõ
|
|
ìåæäó ìîäóëåì è ÏÊ.
|
|
|
|
Äàííàÿ ôóíêöèÿ äîñòóïíà â áèáëèîòåêå âåðñèè 1.1.4 èëè âûøå.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] freq Çíà÷åíèå âíåøíåé îïîðíîé ÷àñòîòû â Ãö.
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_SetExtRefFreqValue(t_x502_hnd hnd, double freq);
|
|
|
|
/***************************************************************************//**
|
|
@brief Óñòàíîâêà çíà÷åíèÿ äëÿ àíàëîãîâîé ñèíõðîíèçàöèè (òîëüêî äëÿ E16)
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] phy_ch Íîìåð ôèçè÷åñêîãî êàíàëà ÀÖÏ, íà÷èíàÿ ñ 0
|
|
(0-15 äëÿ äèôôåðåíöèàëüíîãî ðåæèìà,
|
|
0-31 äëÿ ðåæèìà ñ îáùåé çåìëåé)
|
|
@param[in] mode Ðåæèì èçìåðåíèÿ êàíàë ÀÖÏ (çíà÷åíèå òèïà #t_x502_lch_mode)
|
|
@param[in] range Äèàïàçîí èçìåðåíèÿ êàíàëà (çíà÷åíèå òèïà #t_x502_adc_range)
|
|
@param[in] value Çíà÷åíèå â Âîëüòàõ.
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_SetAdcSyncStartValue(t_x502_hnd hnd, uint32_t phy_ch, uint32_t mode, uint32_t range, double value);
|
|
|
|
/***************************************************************************//**
|
|
@brief Ïîëó÷åíèå çíà÷åíèÿ îïîðíîé ÷àñòîòû ñèíõðîíèçàöèè
|
|
|
|
Äàííàÿ ôóíêöèÿ âîçâðàùàåò òåêóùåå çíà÷åíèå îïîðíîé ÷àñòîòû ñèíõðîíèçàöèè,
|
|
êîòîðîå èñïîëüçóåòñÿ áèáëèîòåêîé â ôóíêöèÿõ X502_SetAdcFreq(), X502_SetDinFreq()
|
|
è X502_SetOutFreq(), à òàêæå ïðè ðàññ÷åòå ïàðàìåòðîâ ïåðåäà÷è äàííûõ ìåæäó
|
|
ìîäóëåì è ÏÊ.
|
|
|
|
Ïðè âíóòðåííåé îïîðíîé ÷àñòîòå èñïîëüçóåòñÿ çíà÷åíèå, óñòàíîâëåííîå
|
|
X502_SetRefFreq() (1.5 èëè 2 Ìãö), ïðè âíåøíåé --- ÷àñòîòà, óñòàíîâëåííàÿ
|
|
ñ ïîìîùüþ ôóíêöèè X502_SetExtRefFreqValue().
|
|
|
|
Äàííàÿ ôóíêöèÿ äîñòóïíà â áèáëèîòåêå âåðñèè 1.1.4 èëè âûøå.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] freq Çíà÷åíèå âíåøíåé îïîðíîé ÷àñòîòû â Ãö.
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_GetRefFreqValue(t_x502_hnd hnd, double *freq);
|
|
|
|
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Óñòàíîâêà ðåæèìà ãåíåðàöèè ÷àñòîòû ñèíõðîíèçàöèè
|
|
|
|
Ôóíêöèÿ óñòàíàâëèâàåò êòî áóäåò ãåíåðàòîðîì îïîðíîé ÷àñòîòû ñèíõðîíèçàöèè -
|
|
ñàì ìîäóëü èëè áóäåò èñïîëüçîâàòüñÿ âíåøíèé ñèãíàë.
|
|
|
|
 ðåæèìå #X502_SYNC_INTERNAL ìîäóëü ñàì áóäåò ãåíåðèðîâàòü äëÿ ñåáÿ
|
|
÷àñòîòó ñèíõðîíèçàöèè ñ ÷àñòîòîé, çàäàííîé X502_SetRefFreq().
|
|
Ïðè ýòîì çàïóñê ãåíåðàöèè áóäåò îñóùåñòâëåí ïî âûçîâó X502_StreamsStart()
|
|
èëè ïî óñëîâèþ, çàäàíîìó â X502_SetSyncStartMode(), à îñòàíîâ
|
|
ïî X502_StreamsStop().
|
|
|
|
 îñòàëüíûõ ðåæèìàõ ñáîð áóäåò îñóùåñòâëÿòüñÿ ïî âíåøíåìó ñèãíàëó
|
|
ñèíõðîíèçàöèè.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] sync_mode Çíà÷åíèå èç #t_x502_sync_mode, îïðåäåëÿþùåå êòî
|
|
áóäåò èñòî÷íèêîì ÷àñòîòû ñèíõðîíèçàöèè.
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_SetSyncMode(t_x502_hnd hnd, uint32_t sync_mode);
|
|
|
|
/***************************************************************************//**
|
|
@brief Óñòàíîâêà ðåæèìà çàïóñêà ÷àñòîòû ñèíõðîíèçàöèè
|
|
|
|
Ôóíêöèÿ óñòàíàâëèâàåò óñëîâèå çàïóñêà ñèíõðîííîãî ââîäà/âûâîäà äàííûõ.
|
|
|
|
Åñëè ñ ïîìîùüþ X502_SetSyncMode() óñòàíîâëåí ðåæèì ñèíõðîíèçàöèè
|
|
#X502_SYNC_INTERNAL, òî ïî çàäàííîìó äàííîé ôóíêöèåé óñëîâèþ ìîäóëü íà÷íåò
|
|
ãåíåðèðîâàòü ÷àñòîòó ñèíõðîíèçàöèè, â ïðîòèâíîì ñëó÷àå ïî çàäàííîìó óñëîâèþ
|
|
ìîäóëü íà÷íåò èñïîëüçîâàòü âíåøíå çàäàííóþ ÷àñòîòó ñèíõðîíèçàöèè
|
|
(ò.å. äî âûïîëíåíèÿ óñëîâèÿ ñèãíàë ñèíõðîíèçàöèè íà çàäàííîì âõîäå áóäåò
|
|
èãíîðèðîâàòüñÿ).
|
|
|
|
Ðåæèìû çàäàíèÿ óñëîâèÿ çàïóñêà ñèíõðîíèçàöèè èìåþò òå æå çíà÷åíèÿ,
|
|
÷òî è ðåæèìû çàäàíèÿ ñàìîé ÷àñòîòû (ñì. òèï #t_x502_sync_mode).
|
|
 ñëó÷àå #X502_SYNC_INTERNAL çàïóñê îñóùåñòâëÿåòñÿ ïðè âûïîëíåíèè ôóíêöèè
|
|
X502_StreamsStart(), â ïðîòèâíîì ñëó÷àå - ïîñëå âûïîëíåíèÿ
|
|
X502_StreamsStart() ìîäóëü íà÷èíàåò îæèäàòü çàäàííîãî äàííîé ôóíêöèåé óñëîâèÿ.
|
|
Ò.å. äàæå ïðè çàäàíèè âíåøíèõ èñòî÷íèêîâ ñèíõðîíèçàöèè, âñå ðàâíî íåîáõîäèìî
|
|
âûçûâàòü X502_StreamsStart().
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] sync_start_mode Çíà÷åíèå èç #t_x502_sync_mode, îïðåäåëÿþùåå
|
|
óñëîâèå çàïóñêà ÷àñòîòû ñèíõðîíèçàöèè.
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_SetSyncStartMode(t_x502_hnd hnd, uint32_t sync_start_mode);
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Óñòàíîâèòü ðåæèì ðàáîòû ìîäóëÿ
|
|
|
|
Ôóíêöèÿ óñòàíàâëèâàåò ðåæèì ðàáîòû ìîäóëÿ, êîòîðûé îïðåäåëÿåò áóäåò ëè
|
|
ïîòîêè äàííûõ îáðàáàòûâàòü ÏËÈÑ èëè ñèãíàëüíûé ïðîöåññîð BlackFin.
|
|
Ïðè âêëþ÷åíèè ïèòàíèÿ ìîäóëåì âñåãäà óïðàâëÿåò ÏËÈÑ.
|
|
Ïîñëå çàãðóçêè ïðîøèâêè ñ ïîìîùüþ X502_BfLoadFirmware() ìîäóëü ïåðåõîäèò
|
|
â ðåæèì óïðàâëåíèÿ ñèãíàëüíûì ïðîöåññîðîì.
|
|
|
|
Äàííàÿ ôóíêöèÿ ìîæåò èñïîëüçîâàòüñÿ äëÿ ðó÷íîé óñòàíîâêè ðåæèìà,
|
|
íàïðèìåð, äëÿ âîçâðàòà â ðåæèì óïðàâëåíèÿ ÏËÈÑ èëè äëÿ ïåðåêëþ÷åíèÿ â ðåæèì
|
|
óïðàâëåíèÿ ñèãíàëüíûì ïðîöåññîðîì, åñëè ïðîøèâêà óæå áûëà çàãðóæåíà
|
|
(íàïðèìåð, ÷åðåç JTAG èíòåðôåéñ ïðè îòëàäêå).
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] mode Ðåæèì ðàáîòû ìîäóëÿ èç #t_x502_mode.
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_SetMode(t_x502_hnd hnd, uint32_t mode);
|
|
/***************************************************************************//**
|
|
@brief Ïîëó÷åíèå òåêóùåãî ðåæèìà ðàáîòû ìîäóëÿ
|
|
|
|
Ôóíêöèÿ âîçâðàùàåò òåêóùèé ðåæèì ðàáîòû ìîäóëÿ.
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[out] mode  äàííîì ïàðàìåòðå âîçâðàùàåòñÿ òåêóùèé ðåæèì
|
|
ðàáîòû ìîäóëÿ (èç #t_x502_mode).
|
|
@return Êîä îøèáêè.
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_GetMode(t_x502_hnd hnd, uint32_t* mode);
|
|
/***************************************************************************//**
|
|
@brief Óñòàíîâèòü êîýôôèöèåíòû äëÿ êàëèáðîâêè çíà÷åíèé ÀÖÏ
|
|
|
|
Ôóíêöèÿ çàïèñûâàåò â ÏËÈÑ êîýôôèöèåíòû äëÿ êàëèáðîâêè çíà÷åíèé ÀÖÏ.
|
|
Ïðè îòêðûòèè ìîäóëÿ, áèáëèîòåêà ñ÷èòûâàåò êàëèáðîâî÷íûå êîýôôèöèåíòû èç
|
|
çàùèùåííîé îáëàñòè Flash-ïàìÿòè ìîäóëÿ è çàïèñûâàåò èõ â ÏËÈÑ äëÿ
|
|
âûïîëíåíèÿ êàëèáðîâêè íà ëåòó.
|
|
|
|
Ðåçóëüòèðóþùåå çíà÷åíèå ÀÖÏ âû÷èñëÿåòñÿ ïî ôîðìóëå (val - offs) * k, ãäå val ---
|
|
íåêàëèáðîâàííîå çíà÷åíèå.
|
|
|
|
Äàííàÿ ôóíêöèÿ ïîçâîëÿåò èçìåíèòü èñïîëüçóåìûå êîýôôèöèåíòû â òî âðåìÿ, ïîêà
|
|
íå çàïóùåí ñèíõðîííûé ñáîð äàííûõ. Ïðè ýòîì èçìåíÿþòñÿ òîëüêî òåêóùèå
|
|
êîýôôèöèåíòû, à çàâîäñêèå êàëèáðîâî÷íûå êîýôôèöèåíòû èç Flash-ïàìÿòè
|
|
ñîõðàíÿþò ñâîå çíà÷åíèå è ïðè ñëåäóþùåì îòêðûòèè áóäóò âîññòàíîâëåíû.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] range Äèàïàçîí ÀÖÏ (èç #t_x502_adc_range).
|
|
@param[in] k Óñòàíàâëèâàåìîå çíà÷åíèå êîýôôèöèåíòà øêàëû.
|
|
@param[in] offs Óñòàíàâëèâàåìîå çíà÷åíèå ñìåùåíèÿ íóëÿ.
|
|
@return Êîä îøèáêè.
|
|
***************************************************************************/
|
|
X502_EXPORT(int32_t) X502_SetAdcCoef(t_x502_hnd hnd, uint32_t range, double k, double offs);
|
|
|
|
/***************************************************************************//**
|
|
@brief Ïîëó÷åíèå òåêóùèõ êàëèáðîâî÷íûõ êîýôôèöèåíòîâ ÀÖÏ
|
|
|
|
Ôóíêöèÿ âîçâðàùàåò òåêóùèå êàëèáðîâî÷íûå êîýôôèöèåíòû äëÿ çàäàííîãî äèàïàçîíà
|
|
èçìåðåíèÿ ÀÖÏ. Ýòè êîýôôèöèåíòû ìîãóò îòëè÷àòüñÿ îò çàâîäñêèõ çíà÷åíèé,
|
|
ñîõðàíåííûõ âî Flash-ïàìÿòè ìîäóëÿ, íàïðèìåð, åñëè ïîëüçîâàòåëü èñïîëüçîâàë
|
|
X502_SetAdcCoef() äëÿ óñòàíîâêè ñâîèõ êîýôôèöèåíòîâ.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] range Äèàïàçîí ÀÖÏ (èç #t_x502_adc_range).
|
|
@param[in] k  äàííîé ïåðåìåííîé âîçâðàùàåòñÿ òåêóùèé êîýôôèöèåíò
|
|
øêàëû.
|
|
@param[in] offs  äàííîé ïåðåìåííîé âîçâðàùàåòñÿ òåêóùåå ñìåùåíèå íóëÿ.
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_GetAdcCoef(t_x502_hnd hnd, uint32_t range, double* k, double* offs);
|
|
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Óñòàíîâèòü êîýôôèöèåíòû äëÿ êàëèáðîâêè çíà÷åíèé ÖÀÏ
|
|
|
|
Ôóíêöèÿ óñòàíàâëèâàåò êàëèáðîâî÷íûå êîýôôèöèåíòû äëÿ çàäàííîãî êàíàëà ÀÖÏ,
|
|
êîòîðûå áóäóò èñïîëüçîâàòüñÿ ôóíêöèÿìè x502api äëÿ êàëèáðîâêè âûâîäèìûõ
|
|
çíà÷åíèé ÖÀÏ, åñëè óêàçàí ôàëàã #X502_DAC_FLAGS_CALIBR.
|
|
|
|
Îòêàëèáðîâàííîå çíà÷åíèå ÖÀÏ â êîäàõ ïîëó÷àåòñÿ êàê
|
|
(val + offs) * k, ãäå val --- íåêàëèáðîâàííîå çíà÷åíèå (â êîäàõ).
|
|
|
|
Ïðè îòêðûòèè ìîäóëÿ, áèáëèîòåêà ñ÷èòûâàåò êàëèáðîâî÷íûå êîýôôèöèåíòû èç
|
|
çàùèùåííîé îáëàñòè Flash-ïàìÿòè ìîäóëÿ è èñïîëüçóåò èõ.
|
|
|
|
Äàííàÿ ôóíêöèÿ íóæíà òîëüêî åñëè ïîëüçîâàòåëü õî÷åò èñïîëüçîâàòü ñâîè
|
|
êîýôôèöèåíòû. Ïðè ýòîì îíà íå èçìåíÿåò çíà÷åíèÿ âî Flash-ïàìÿòè, ò.å.
|
|
ïðè ñëåäóþùåì îòêðûòèè ìîäóëÿ êîýôôèöèåíòû áóäóò ñíîâà âîññòàíîâëåíû èç
|
|
Flash-ïàìÿòè.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] ch Êàíàë ÖÀÏ (èç #t_x502_dac_ch).
|
|
@param[in] k Óñòàíàâëèâàåìîå çíà÷åíèå êîýôôèöèåíòà øêàëû.
|
|
@param[in] offs Óñòàíàâëèâàåìîå çíà÷åíèå ñìåùåíèÿ íóëÿ.
|
|
@return Êîä îøèáêè.
|
|
***************************************************************************/
|
|
X502_EXPORT(int32_t) X502_SetDacCoef(t_x502_hnd hnd, uint32_t ch, double k, double offs);
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Ïîëó÷åíèå òåêóùèõ êàëèáðîâî÷íûõ êîýôôèöèåíòîâ ÖÀÏ
|
|
|
|
Ôóíêöèÿ âîçâðàùàåò òåêóùèå êàëèáðîâî÷íûå êîýôôèöèåíòû äëÿ çàäàííîãî êàíàëà ÖÀÏ.
|
|
Ýòè êîýôôèöèåíòû ìîãóò îòëè÷àòüñÿ îò çàâîäñêèõ çíà÷åíèé,
|
|
ñîõðàíåííûõ âî Flash-ïàìÿòè ìîäóëÿ, íàïðèìåð, åñëè ïîëüçîâàòåëü èñïîëüçîâàë
|
|
X502_SetDacCoef() äëÿ óñòàíîâêè ñâîèõ êîýôôèöèåíòîâ.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] ch Êàíàë ÖÀÏ (èç #t_x502_dac_ch).
|
|
@param[in] k  äàííîé ïåðåìåííîé âîçâðàùàåòñÿ òåêóùèé êîýôôèöèåíò
|
|
øêàëû.
|
|
@param[in] offs  äàííîé ïåðåìåííîé âîçâðàùàåòñÿ òåêóùåå ñìåùåíèå íóëÿ.
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_GetDacCoef(t_x502_hnd hnd, uint32_t ch, double* k, double* offs);
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Ðàññ÷åò ÷àñòîòû ñáîðà ÀÖÏ
|
|
|
|
Èñõîäÿ èç çàäàííûõ ïàðàìåòðîâ, ôóíêöèÿ ïîäáèðàåò äåëèòåëü ÷àñòîòû
|
|
ÀÖÏ è çíà÷åíèå ìåæêàäðîâîé çàäåðæêè òàê, ÷òîáû ïîëó÷åííûå ÷àñòîòû áûëè
|
|
íàèáîëåå áëèçêè ê çàäàííûì, è âîçâðàùàåò ïîëó÷åííûå çíà÷åíèÿ ÷àñòîò.
|
|
|
|
 îòëè÷èå îò X502_SetAdcFreq(), äàííàÿ ôóíêöèÿ ïðåäíàçíà÷åíà ïîëó÷åíèÿ
|
|
ñêîððåêòèðîâàííîé ÷àñòîòû áåç èñïîëüçîâàíèÿ îïèñàòåëÿ ìîäóëÿ è
|
|
òîëüêî ðàññ÷èòûâàåò ðåçóëüòèðóþùèå ïàðàìåòðû, íå èçìåíÿÿ íàñòðîéêè.
|
|
|
|
Äëÿ ìîäóëÿ E16 â ïàðàìåòðå ref_freq ñëåäóåò ïåðåäàâàòü E16_REF_FREQ_48000KHZ,
|
|
ëèáî èñïîëüçîâàòü ôóíêöèþ X502_CalcAdcFreq2!
|
|
|
|
|
|
@param[in] ref_freq Çíà÷åíèå îïîðíîé ÷àñòîòû â Ãö (âíåøíåé èëè âíóòðåííåé)
|
|
@param[in] lch_cnt Êîëè÷åñòâî ëîãè÷åñêèõ êàíàëîâ, êîòîðîå áóäåò èñïîëüçîâàíî.
|
|
Íåîáõîäèìî äëÿ ðàñ÷åòà ìåæêàäðîâîé çàäåðæêè. Åñëè
|
|
â êà÷åñòâå f_frame ïåðåäàí íóëåâîé óêàçàòåëü, òî
|
|
ìîæåò áûòü ðàâíî 0.
|
|
@param[in,out] f_acq Íà âõîäå ïðèíèìàåò òðåáóåìîå çíà÷åíèÿ ÷àñòîòû ñáîðà
|
|
ÀÖÏ â Ãåðöàõ. Íà âûõîäå âîçâðàùàåò ðàññ÷èòàííîå
|
|
çíà÷åíèå ÷àñòîòû, êîòîðàÿ ìîæåò áûòü óñòàíîâëåíà.
|
|
@param[in,out] f_frame Íà âõîäå ïðèíèìàåò òðåáóåìîå çíà÷åíèå ÷àñòîòû ñáîðà
|
|
êàäðîâ (÷àñòîòû ñáîðà íà ëîãè÷åñêèé êàíàë) ÀÖÏ
|
|
â Ãåðöàõ. Íà âûõîäå âîçâðàùàåò ðàññ÷èòàííîå çíà÷åíèå.
|
|
Åñëè ïåðåäàí íóëåâîé óêàçàòåëü, òî çàäåðæêà
|
|
ðàññ÷èòàíà íå áóäåò.
|
|
Åñëè ïåðåäàíî çíà÷åíèå ìåíüøå èëè ðàâíîå íóëÿ, òî
|
|
áóäåò ðàññ÷èòàíà ìàêñèìàëüíàÿ ÷àñòîòà êàäðîâ
|
|
(ñ íóëåâîé ìåæêàäðîâîé çàäåðæêîé).
|
|
@param[out] result_freq_div  äàííîì ïàðàìåòðå âîçâðàùàåòñÿ ðàññ÷èòàííîå
|
|
çíà÷åíèÿ äåëèòåëÿ ÷àñòîòû ÀÖÏ. Ìîæåò áûòü ïåðåäàí
|
|
íóëåâîé óêàçàòåëü, åñëè ýòî çíà÷åíèå ÿâíî çíàòü
|
|
íå òðåáóåòñÿ.
|
|
@param[out] result_frame_delay  äàííîì ïàðàìåòðå âîçâðàùàåòñÿ ðàññ÷èòàííîå
|
|
çíà÷åíèå ìåæêàäðîâîé çàäåðæêè. Ìîæåò áûòü ïåðåäàí
|
|
íóëåâîé óêàçàòåëü, åñëè ýòî çíà÷åíèå ÿâíî çíàòü
|
|
íå òðåáóåòñÿ.
|
|
@return Êîä îøèáêè.
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_CalcAdcFreq(double ref_freq, uint32_t lch_cnt, double *f_acq,
|
|
double *f_frame, uint32_t *result_freq_div, uint32_t *result_frame_delay);
|
|
|
|
/***************************************************************************//**
|
|
@brief Ðàññ÷åò ÷àñòîòû ñáîðà ÀÖÏ
|
|
|
|
Èñõîäÿ èç çàäàííûõ ïàðàìåòðîâ, ôóíêöèÿ ïîäáèðàåò äåëèòåëü ÷àñòîòû
|
|
ÀÖÏ è çíà÷åíèå ìåæêàäðîâîé çàäåðæêè òàê, ÷òîáû ïîëó÷åííûå ÷àñòîòû áûëè
|
|
íàèáîëåå áëèçêè ê çàäàííûì, è âîçâðàùàåò ïîëó÷åííûå çíà÷åíèÿ ÷àñòîò.
|
|
|
|
 îòëè÷èå îò X502_SetAdcFreq(), äàííàÿ ôóíêöèÿ ïðåäíàçíà÷åíà ïîëó÷åíèÿ
|
|
ñêîððåêòèðîâàííîé ÷àñòîòû è òîëüêî ðàññ÷èòûâàåò ðåçóëüòèðóþùèå ïàðàìåòðû, íå èçìåíÿÿ íàñòðîéêè.
|
|
Îïèñàòåëü ìîäóëÿ â ýòîé ôóíêöèè íóæåí äëÿ òîãî ÷òîáû ðàçëè÷àòü ìîäóëè E16 è X502.
|
|
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] ref_freq Çíà÷åíèå îïîðíîé ÷àñòîòû â Ãö (âíåøíåé èëè âíóòðåííåé)
|
|
@param[in] lch_cnt Êîëè÷åñòâî ëîãè÷åñêèõ êàíàëîâ, êîòîðîå áóäåò èñïîëüçîâàíî.
|
|
Íåîáõîäèìî äëÿ ðàñ÷åòà ìåæêàäðîâîé çàäåðæêè. Åñëè
|
|
â êà÷åñòâå f_frame ïåðåäàí íóëåâîé óêàçàòåëü, òî
|
|
ìîæåò áûòü ðàâíî 0.
|
|
@param[in,out] f_acq Íà âõîäå ïðèíèìàåò òðåáóåìîå çíà÷åíèÿ ÷àñòîòû ñáîðà
|
|
ÀÖÏ â Ãåðöàõ. Íà âûõîäå âîçâðàùàåò ðàññ÷èòàííîå
|
|
çíà÷åíèå ÷àñòîòû, êîòîðàÿ ìîæåò áûòü óñòàíîâëåíà.
|
|
@param[in,out] f_frame Íà âõîäå ïðèíèìàåò òðåáóåìîå çíà÷åíèå ÷àñòîòû ñáîðà
|
|
êàäðîâ (÷àñòîòû ñáîðà íà ëîãè÷åñêèé êàíàë) ÀÖÏ
|
|
â Ãåðöàõ. Íà âûõîäå âîçâðàùàåò ðàññ÷èòàííîå çíà÷åíèå.
|
|
Åñëè ïåðåäàí íóëåâîé óêàçàòåëü, òî çàäåðæêà
|
|
ðàññ÷èòàíà íå áóäåò.
|
|
Åñëè ïåðåäàíî çíà÷åíèå ìåíüøå èëè ðàâíîå íóëÿ, òî
|
|
áóäåò ðàññ÷èòàíà ìàêñèìàëüíàÿ ÷àñòîòà êàäðîâ
|
|
(ñ íóëåâîé ìåæêàäðîâîé çàäåðæêîé).
|
|
@param[out] result_freq_div  äàííîì ïàðàìåòðå âîçâðàùàåòñÿ ðàññ÷èòàííîå
|
|
çíà÷åíèÿ äåëèòåëÿ ÷àñòîòû ÀÖÏ. Ìîæåò áûòü ïåðåäàí
|
|
íóëåâîé óêàçàòåëü, åñëè ýòî çíà÷åíèå ÿâíî çíàòü
|
|
íå òðåáóåòñÿ.
|
|
@param[out] result_frame_delay  äàííîì ïàðàìåòðå âîçâðàùàåòñÿ ðàññ÷èòàííîå
|
|
çíà÷åíèå ìåæêàäðîâîé çàäåðæêè. Ìîæåò áûòü ïåðåäàí
|
|
íóëåâîé óêàçàòåëü, åñëè ýòî çíà÷åíèå ÿâíî çíàòü
|
|
íå òðåáóåòñÿ.
|
|
@return Êîä îøèáêè.
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_CalcAdcFreq2(t_x502_hnd hnd, double ref_freq, uint32_t lch_cnt, double *f_acq,
|
|
double *f_frame, uint32_t *adc_freq_div, uint32_t *adc_frame_delay);
|
|
|
|
/***************************************************************************//**
|
|
@brief Ðàññ÷åò ÷àñòîòû ñèíõðîííîãî ââîäà ñ öèôðîâûõ âõîäîâ
|
|
|
|
Èñõîäÿ èç çàäàííûõ ïàðàìåòðîâ, ôóíêöèÿ ïîäáèðàåò äåëèòåëü ÷àñòîòû ââîäà çíà÷åíèé
|
|
ñ öèôðîâûõ âõîäîâ òàê, ÷òîáû ïîëó÷åííàÿ ÷àñòîòà ââîäà áûëà íàèáîëåå áëèçêà ê óêàçàííîé,
|
|
è âîçâðàùàåò ïîëó÷åííîå çíà÷åíèå ÷àñòîòû.
|
|
|
|
 îòëè÷èå îò X502_SetDinFreq(), äàííàÿ ôóíêöèÿ ïðåäíàçíà÷åíà ïîëó÷åíèÿ
|
|
ñêîððåêòèðîâàííîé ÷àñòîòû áåç èñïîëüçîâàíèÿ îïèñàòåëÿ ìîäóëÿ è
|
|
òîëüêî ðàññ÷èòûâàåò ðåçóëüòèðóþùèå ïàðàìåòðû, íå èçìåíÿÿ íàñòðîéêè.
|
|
|
|
Äëÿ ìîäóëÿ E16 â ïàðàìåòðå ref_freq ñëåäóåò ïåðåäàâàòü E16_REF_FREQ_48000KHZ,
|
|
ëèáî èñïîëüçîâàòü ôóíêöèþ X502_CalcDinFreq2!
|
|
|
|
@param[in] ref_freq Çíà÷åíèå îïîðíîé ÷àñòîòû â Ãö (âíåøíåé èëè âíóòðåííåé)
|
|
@param[in,out] f_din Íà âõîäå ïðèíèìàåò òðåáóåìîå çíà÷åíèÿ ÷àñòîòû ââîäà
|
|
ñ öèôðîâûõ âõîäîâ â Ãåðöàõ. Íà âûõîäå âîçâðàùàåò
|
|
ðàññ÷èòàííîå çíà÷åíèå ÷àñòîòû, êîòîðîå ìîæåò áûòü
|
|
óñòàíîâëåíî.
|
|
@param[out] result_freq_div  äàííîì ïàðàìåòðå âîçâðàùàåòñÿ ðàññ÷èòàííîå
|
|
çíà÷åíèÿ äåëèòåëÿ ÷àñòîòû ñèíõðîííîãî ââîäà öèôðîâûõ
|
|
ëèíèé.
|
|
Ìîæåò áûòü ïåðåäàí íóëåâîé óêàçàòåëü,
|
|
åñëè ýòî çíà÷åíèå ÿâíî çíàòü íå òðåáóåòñÿ.
|
|
@return Êîä îøèáêè.
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_CalcDinFreq(double ref_freq, double *f_din, uint32_t *result_freq_div);
|
|
|
|
/***************************************************************************//**
|
|
@brief Ðàññ÷åò ÷àñòîòû ñèíõðîííîãî ââîäà ñ öèôðîâûõ âõîäîâ
|
|
|
|
Èñõîäÿ èç çàäàííûõ ïàðàìåòðîâ, ôóíêöèÿ ïîäáèðàåò äåëèòåëü ÷àñòîòû ââîäà çíà÷åíèé
|
|
ñ öèôðîâûõ âõîäîâ òàê, ÷òîáû ïîëó÷åííàÿ ÷àñòîòà ââîäà áûëà íàèáîëåå áëèçêà ê óêàçàííîé,
|
|
è âîçâðàùàåò ïîëó÷åííîå çíà÷åíèå ÷àñòîòû.
|
|
|
|
 îòëè÷èå îò X502_SetDinFreq(), äàííàÿ ôóíêöèÿ òîëüêî ðàññ÷èòûâàåò ðåçóëüòèðóþùèå ïàðàìåòðû, íå èçìåíÿÿ íàñòðîéêè.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] ref_freq Çíà÷åíèå îïîðíîé ÷àñòîòû â Ãö (âíåøíåé èëè âíóòðåííåé)
|
|
@param[in,out] f_din Íà âõîäå ïðèíèìàåò òðåáóåìîå çíà÷åíèÿ ÷àñòîòû ââîäà
|
|
ñ öèôðîâûõ âõîäîâ â Ãåðöàõ. Íà âûõîäå âîçâðàùàåò
|
|
ðàññ÷èòàííîå çíà÷åíèå ÷àñòîòû, êîòîðîå ìîæåò áûòü
|
|
óñòàíîâëåíî.
|
|
@param[out] result_freq_div  äàííîì ïàðàìåòðå âîçâðàùàåòñÿ ðàññ÷èòàííîå
|
|
çíà÷åíèÿ äåëèòåëÿ ÷àñòîòû ñèíõðîííîãî ââîäà öèôðîâûõ
|
|
ëèíèé.
|
|
Ìîæåò áûòü ïåðåäàí íóëåâîé óêàçàòåëü,
|
|
åñëè ýòî çíà÷åíèå ÿâíî çíàòü íå òðåáóåòñÿ.
|
|
@return Êîä îøèáêè.
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_CalcDinFreq2(t_x502_hnd hnd, double ref_freq, double *f_din, uint32_t *result_freq_div);
|
|
|
|
/***************************************************************************//**
|
|
@brief Ðàññ÷åò ÷àñòîòû ñèíõðîííîãî âûâîäà
|
|
|
|
Èñõîäÿ èç çàäàííûõ ïàðàìåòðîâ, ôóíêöèÿ ïîäáèðàåò äåëèòåëü ÷àñòîòû ñèíõðîííîãî
|
|
âûâîäà òàê, ÷òîáû ïîëó÷åííàÿ ÷àñòîòà áûëà íàèáîëåå áëèçêà ê óêàçàííîé,
|
|
è âîçâðàùàåò ïîëó÷åííîå çíà÷åíèå ÷àñòîòû.
|
|
|
|
 îòëè÷èå îò X502_SetOutFreq(), äàííàÿ ôóíêöèÿ ïðåäíàçíà÷åíà ïîëó÷åíèÿ
|
|
ñêîððåêòèðîâàííîé ÷àñòîòû áåç èñïîëüçîâàíèÿ îïèñàòåëÿ ìîäóëÿ è
|
|
òîëüêî ðàññ÷èòûâàåò ðåçóëüòèðóþùèå ïàðàìåòðû, íå èçìåíÿÿ íàñòðîéêè.
|
|
|
|
Ôóíêöèÿ ïðåäïîëàãàåò, ÷òî ìîäóëü ïîääåðæèâàåò èçìåíåíèå ÷àñòîòû âûâîäà
|
|
(ñì. òðåáîâàíèÿ ê ìîäóëþ äëÿ ýòîãî â îïèñàíèè ôóíêöèè X502_SetOutFreq()).
|
|
|
|
Äëÿ ìîäóëÿ E16 â ïàðàìåòðå ref_freq ñëåäóåò ïåðåäàâàòü E16_REF_FREQ_48000KHZ,
|
|
ëèáî èñïîëüçîâàòü ôóíêöèþ X502_CalcOutFreq2!
|
|
|
|
@param[in] ref_freq Çíà÷åíèå îïîðíîé ÷àñòîòû â Ãö (âíåøíåé èëè âíóòðåííåé)
|
|
@param[in,out] f_dout Íà âõîäå ïðèíèìàåò òðåáóåìîå çíà÷åíèÿ ÷àñòîòû
|
|
ñèíõðîííîãî âûâîäà â Ãåðöàõ. Íà âûõîäå âîçâðàùàåò
|
|
ðàññ÷èòàííîå çíà÷åíèå ÷àñòîòû, êîòîðîå ìîæåò áûòü
|
|
óñòàíîâëåíî.
|
|
@param[out] result_freq_div  äàííîì ïàðàìåòðå âîçâðàùàåòñÿ ðàññ÷èòàííîå
|
|
çíà÷åíèÿ äåëèòåëÿ ÷àñòîòû ñèíõðîííîãî âûâîäà.
|
|
Ìîæåò áûòü ïåðåäàí íóëåâîé óêàçàòåëü,
|
|
åñëè ýòî çíà÷åíèå ÿâíî çíàòü íå òðåáóåòñÿ.
|
|
@return Êîä îøèáêè.
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_CalcOutFreq(double ref_freq, double *f_dout, uint32_t *result_freq_div);
|
|
|
|
/***************************************************************************//**
|
|
@brief Ðàññ÷åò ÷àñòîòû ñèíõðîííîãî âûâîäà
|
|
|
|
Èñõîäÿ èç çàäàííûõ ïàðàìåòðîâ, ôóíêöèÿ ïîäáèðàåò äåëèòåëü ÷àñòîòû ñèíõðîííîãî
|
|
âûâîäà òàê, ÷òîáû ïîëó÷åííàÿ ÷àñòîòà áûëà íàèáîëåå áëèçêà ê óêàçàííîé,
|
|
è âîçâðàùàåò ïîëó÷åííîå çíà÷åíèå ÷àñòîòû.
|
|
|
|
 îòëè÷èå îò X502_SetOutFreq(), äàííàÿ ôóíêöèÿ ïðåäíàçíà÷åíà ïîëó÷åíèÿ
|
|
ñêîððåêòèðîâàííîé ÷àñòîòû áåç èñïîëüçîâàíèÿ îïèñàòåëÿ ìîäóëÿ è
|
|
òîëüêî ðàññ÷èòûâàåò ðåçóëüòèðóþùèå ïàðàìåòðû, íå èçìåíÿÿ íàñòðîéêè.
|
|
|
|
Ôóíêöèÿ ïðåäïîëàãàåò, ÷òî ìîäóëü ïîääåðæèâàåò èçìåíåíèå ÷àñòîòû âûâîäà
|
|
(ñì. òðåáîâàíèÿ ê ìîäóëþ äëÿ ýòîãî â îïèñàíèè ôóíêöèè X502_SetOutFreq()).
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] ref_freq Çíà÷åíèå îïîðíîé ÷àñòîòû â Ãö (âíåøíåé èëè âíóòðåííåé)
|
|
@param[in,out] f_dout Íà âõîäå ïðèíèìàåò òðåáóåìîå çíà÷åíèÿ ÷àñòîòû
|
|
ñèíõðîííîãî âûâîäà â Ãåðöàõ. Íà âûõîäå âîçâðàùàåò
|
|
ðàññ÷èòàííîå çíà÷åíèå ÷àñòîòû, êîòîðîå ìîæåò áûòü
|
|
óñòàíîâëåíî.
|
|
@param[out] result_freq_div  äàííîì ïàðàìåòðå âîçâðàùàåòñÿ ðàññ÷èòàííîå
|
|
çíà÷åíèÿ äåëèòåëÿ ÷àñòîòû ñèíõðîííîãî âûâîäà.
|
|
Ìîæåò áûòü ïåðåäàí íóëåâîé óêàçàòåëü,
|
|
åñëè ýòî çíà÷åíèå ÿâíî çíàòü íå òðåáóåòñÿ.
|
|
@return Êîä îøèáêè.
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_CalcOutFreq2(t_x502_hnd hnd, double ref_freq, double *f_dout, uint32_t *result_freq_div);
|
|
|
|
/** @} */
|
|
|
|
|
|
/***************************************************************************//**
|
|
@addtogroup func_async Ôóíêöèè àñèíõðîííîãî ââîäà-âûâîäà
|
|
@{
|
|
*******************************************************************************/
|
|
|
|
/***************************************************************************//**
|
|
@brief Àñèíõðîííûé âûâîä äàííûõ íà êàíàë ÖÀÏ
|
|
|
|
Ôóíêöèÿ âûâîäèò óêàçàííîå çíà÷åíèå íà óêàçàííûé êàíàë ÖÀÏ. Çíà÷åíèå ìîæåò
|
|
áûòü çàäàíî êàê â êîäàõ, òàê è â Âîëüòàõ, è ê íåìó ìîãóò áûòü ïðèìåíåíû
|
|
êàëèáðîâî÷íûå êîýôôèöèåíòû (îïðåäåëÿåòñÿ ôëàãàìè).
|
|
|
|
Ôóíêöèÿ ìîæåò âûçûâàòüñÿ ëèáî êîãäà ñèíõðîííûé ñáîð íå çàïóùåí, ëèáî ïðè
|
|
çàïóùåííîì ñáîðå äàííûõ, åñëè ñèíõðîííûé âûâîä ïî ýòîìó êàíàëó ÖÀÏ
|
|
íå ðàçðåøåí.
|
|
|
|
@note Ôóíêöèÿ íå ðàáîòàåò â ñëó÷àå, åñëè ìîäóëü íàõîäèòñÿ â îæèäàíèè âíåøíåãî
|
|
óñëîâèÿ äëÿ çàïóñêà ñèíõðîííîãî ââîäà (áûëà âûçâàíà X502_StreamsStart() ïðè
|
|
âíåøíåé ñèíõðîíèçàöèè ñòàðòà, íî ñàì ñèãíàë çàïóñêà åùå íå âîçíèê).
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] ch Íîìåð êàíàëà ÖÀÏ (èç #t_x502_dac_ch).
|
|
@param[in] data Âûâîäèìîå çíà÷åíèå íà ÖÀÏ (â êîäàõ èëè âîëüòàõ)
|
|
@param[in] flags Ôëàãè èç #t_x502_dacout_flags.
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_AsyncOutDac(t_x502_hnd hnd, uint32_t ch, double data, uint32_t flags);
|
|
|
|
/***************************************************************************//**
|
|
@brief Àñèíõðîííûé âûâîä äàííûõ íà êàíàë ÖÀÏ
|
|
|
|
Ôóíêöèÿ âûâîäèò óêàçàííîå çíà÷åíèå íà óêàçàííûé êàíàë ÖÀÏ. Çíà÷åíèå ìîæåò
|
|
áûòü çàäàíî êàê â êîäàõ, òàê è â Âîëüòàõ, è ê íåìó ìîãóò áûòü ïðèìåíåíû
|
|
êàëèáðîâî÷íûå êîýôôèöèåíòû (îïðåäåëÿåòñÿ ôëàãàìè).
|
|
|
|
Ôóíêöèÿ ìîæåò âûçûâàòüñÿ ëèáî êîãäà ñèíõðîííûé ñáîð íå çàïóùåí, ëèáî ïðè
|
|
çàïóùåííîì ñáîðå äàííûõ, åñëè ñèíõðîííûé âûâîä ïî ýòîìó êàíàëó ÖÀÏ
|
|
íå ðàçðåøåí.
|
|
|
|
@note Ôóíêöèÿ íå ðàáîòàåò â ñëó÷àå, åñëè ìîäóëü íàõîäèòñÿ â îæèäàíèè âíåøíåãî
|
|
óñëîâèÿ äëÿ çàïóñêà ñèíõðîííîãî ââîäà (áûëà âûçâàíà X502_StreamsStart() ïðè
|
|
âíåøíåé ñèíõðîíèçàöèè ñòàðòà, íî ñàì ñèãíàë çàïóñêà åùå íå âîçíèê).
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] range Äèàïàçîí èëè âûõîäû îäíîãî êàíàëà (äëÿ LTA37 1:1 èëè 1:10) (èç #t_x502devs_dac_range)
|
|
@param[in] ch Íîìåð êàíàëà ÖÀÏ (èç #t_x502_dac_ch).
|
|
@param[in] data Âûâîäèìîå çíà÷åíèå íà ÖÀÏ (â êîäàõ èëè âîëüòàõ)
|
|
@param[in] flags Ôëàãè èç #t_x502_dacout_flags.
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_AsyncOutDac2(t_x502_hnd hnd, uint32_t range, uint32_t ch, double data, uint32_t flags);
|
|
|
|
/***************************************************************************//**
|
|
@brief Àñèíõðîííûé âûâîä äàííûõ íà öèôðîâûå âûõîäû
|
|
|
|
Ôóíêöèÿ âûâîäèò óêàçàííîå çíà÷åíèå íà öèôðîâûå âûõîäû ìîäóëÿ.
|
|
Ôîðìàò çíà÷åíèÿ àíàëîãè÷åí X502_PrepareData() - â ìëàäøèõ 16 áèòàõ
|
|
óêàçûâàåòñÿ âûâîäèìîå çíà÷åíèå, à â ñòàðøèå - ôëàãè (ñ ïîìîùüþ êîòîðûõ ìîæíî
|
|
ïåðåâåñòè îäíó èç ïîëîâèí â òðåòüå ñîñòîÿíèå).
|
|
|
|
Ôóíêöèÿ ìîæåò âûçûâàòüñÿ ëèáî êîãäà ñèíõðîííûé ñáîð íå çàïóùåí, ëèáî ïðè
|
|
çàïóùåííîì ñáîðå äàííûõ, åñëè ñèíõðîííûé âûâîä ïî öèôðîâûì ëèíèÿì íå ðàçðåøåí.
|
|
|
|
Ìîæíî èñïîëüçîâàòü ìàñêó, ÷òîáû âûâåñòè òîëüêî íà ÷àñòü âûâîäîâ, îñòàâèâ
|
|
îñòàëüíûå íåèçìåííûìè, îäíàêî ñëåäóåò ó÷åñòü, ÷òî ïîñëå îòêðûòèÿ ñâÿçè ñ
|
|
ìîäóëåì íåîáõîäèìî ñïåðâà ñäåëàòü âûâîä íà âñå ëèíèè, ïîñëå ÷åãî óæå
|
|
ìîæíî èñïîëüçîâàòü ìàñêó ïðè ïîñëåäóþùèõ âûçîâàõ.
|
|
|
|
@note Ôóíêöèÿ íå ðàáîòàåò â ñëó÷àå, åñëè ìîäóëü íàõîäèòñÿ â îæèäàíèè âíåøíåãî
|
|
óñëîâèÿ äëÿ çàïóñêà ñèíõðîííîãî ââîäà (áûëà âûçâàíà X502_StreamsStart() ïðè
|
|
âíåøíåé ñèíõðîíèçàöèè ñòàðòà, íî ñàì ñèãíàë çàïóñêà åùå íå âîçíèê).
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] val Ìëàäøàÿ ïîëîâèíà - âûâîäèìîå çíà÷åíèå, ñòàðøàÿ -
|
|
ôëàãè èç #t_x502_digout_word_flags.
|
|
Áèòû 0..15 ñîîòâåòñòâóþò âûõîäàì OUT1..OUT16 (E16)
|
|
DO1..DO16 (x502) íà ñèãíàëüíîì ðàçú¸ìå
|
|
@param[in] msk Ìàñêà - óêàçàííûå â ìàñêå áèòû íå áóäóò èçìåíÿòüñÿ
|
|
ñ ïðåäûäóùåãî âûâåäåííîãî ñîñòîÿíèÿ (ðàñïðîñòðàíÿåòñÿ
|
|
è íà ñòàðøóþ ïîëîâèíó val).
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_AsyncOutDig(t_x502_hnd hnd, uint32_t val, uint32_t msk);
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Àñèíõðîííûé ââîä çíà÷åíèé ñ öèôðîâûõ âõîäîâ
|
|
|
|
Ôóíêöèÿ ñ÷èòûâàåò òåêóùåå çíà÷åíèå öèôðîâûõ âõîäîâ.
|
|
Ïðè ýòîì ñèíõðîííûé ñáîð öèôðîâûõ âõîäîâ íå äîëæåí áûòü çàïóùåí (íå ðàçðåøåí
|
|
ïîòîê #X502_STREAM_DIN).
|
|
|
|
Òàê êàê ìîäóëè E-502/L-502 íå ïîääåðæèâàþò àïïàðàòíî àñèíõðîííûé ââîä, òî åñëè íà
|
|
ìîìåíò âûçîâà ýòîé ôóíêöèè íå çàïóùåí ñèíõðîííûé ââîä/âûâîä ñ ïîìîùüþ
|
|
X502_StreamsStart(), òî äàííàÿ ôóíêöèÿ íà âðåìÿ âûïîëíåíèÿ çàïóñêàåò
|
|
ñèíõðîííûé ñáîð è îñòàíàâëèâàåò åãî êàê òîëüêî áóäåò ïîëó÷åíî îäíî íîâîå
|
|
çíà÷åíèå öèôðîâûõ âõîäîâ, äëÿ ìîäóëåé E16 ýòîãî íå òðåáóåòñÿ.
|
|
|
|
Äëÿ ìîäóëÿ E16 17 áèò - ñîñòîÿíèå âõîäà INT, 18 áèò - TRIG
|
|
|
|
@note Ôóíêöèÿ íå ðàáîòàåò â ñëó÷àå, åñëè ìîäóëü íàõîäèòñÿ â îæèäàíèè âíåøíåãî
|
|
óñëîâèÿ äëÿ çàïóñêà ñèíõðîííîãî ââîäà (áûëà âûçâàíà X502_StreamsStart() ïðè
|
|
âíåøíåé ñèíõðîíèçàöèè ñòàðòà, íî ñàì ñèãíàë çàïóñêà åùå íå âîçíèê).
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[out] din Ïðè óñïåøíîì âûïîëíåíèè â ýòîé ïåðåìåííîé
|
|
âîçâðàùàåòñÿ òåêóùåå ñîñòîÿíèå öèôðîâûõ âõîäîâ.
|
|
Äåéñòâèòåëüíû ìëàäøèå 18 áèò, ñòàðøèå 14 - ðåçåðâ.
|
|
×àñòü áèòîâ ïðè ýòîì îáúåäèíåíû ñ ëèíèÿìè ñèíõðîíèçàöèè,
|
|
ïðè ýòîì ýòî îáúåäèíåíèå çàâèñèò îò òèïà ìîäóëÿ.
|
|
Ïîäðîáíåå îïèñàíî â ðàçäåëå ñ ðàçëè÷èÿìè ìîäóëåé
|
|
E-502 è L-502.
|
|
Ðåçåðâíûå áèòû ìîãóò áûòü èñïîëüçîâàíû â ïîñëåäóþùèõ
|
|
âåðñèÿõ, íå ñëåäóåò ñ÷èòàòü, ÷òî îíè âñåãäà áóäóò
|
|
ðàâíû íóëþ!
|
|
@return Êîä îøèáêè.
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_AsyncInDig(t_x502_hnd hnd, uint32_t* din);
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Àñèíõðîííûé ââîä îäíîãî êàäðà ÀÖÏ
|
|
|
|
Ôóíêèÿ ïðîèçâîäèò îäíîêðàòíûé ââîä êàäðà â ñîîòâåòñòâèè ñ çàðàíåå
|
|
óñòàíîâëåííîé ëîãè÷åñêîé òàáëèöåé. ×àñòîòà ñáîðà ÀÖÏ ñîîòâåòñòâóåò ÷àñòîòå,
|
|
óñòàíîâëåííîé ñ ïîìîùüþ X502_SetAdcFreq(). ×àñòîòà ñëåäîâàíèÿ êàäðîâ
|
|
çíà÷åíèÿ íå èìååò. Ñàì êàäð ââîäèòñÿ ñèíõðîííî, íî ïðè ïîñëåäîâàòåëüíîì
|
|
âûçîâå X502_AsyncGetAdcFrame() äëÿ èçìåðåíèÿ íåñêîëüêèõ êàäðîâ çàäåðæêà
|
|
ìåæäó ýòèìè êàäðàìè íå îïðåäåëåíà.
|
|
|
|
Ôóíêöèÿ òàê æå âûïîëíÿåò îáðàáîòêó ïðèíÿòûõ äàííûõ ÀÖÏ, àíàëîãè÷íî
|
|
X502_ProcessAdcData(), è ïðèíèìàåò íàáîð ôëàãîâ, àíàëîãè÷íûé
|
|
X502_ProcessAdcData().
|
|
|
|
Äëÿ ðàáîòû ýòîé ôóíêöèè íå äîëæåí áûòü ðàçðåøåí ñèíõðîííûé ââîä ÀÖÏ
|
|
è öèôðîâûõ ëèíèé.
|
|
|
|
Òàê êàê àïïàðàòíî àñèíõðîííûé ââîä â ïëàòå îòñóòñòâóåò, òî ýòà ôóíêöèÿ
|
|
â ñëó÷àå íå çàïóùåííîãî ïîòîêà çàïóñêàåò åãî âíóòðè ñåáÿ, ïðèíèìàåò îäèí
|
|
êàäð äàííûõ è ïîñëå ýòîãî îñòàíàâëèâàåò ñèíõðîííûé ñáîð.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] flags Ôëàãè èç t_x502_proc_flags
|
|
@param[in] tout Òàéìàóò íà âûïîëíåíèå ôóíêöèè â ìñ
|
|
@param[out] data Ìàññèâ, â êîòîðîì â ñëó÷àå óñïåõà áóäóò âîçâðàùåíû
|
|
îòñ÷åòû êàäðà ÀÖÏ. Äîëæåí áûòü ðàçìåðîì, äîñòàòî÷íûì
|
|
äëÿ õðàíåíèÿ îòñ÷åòîâ òèïà double â êîëè÷åñòâå,
|
|
ðàâíîì êîëè÷åñòâó óñòàíîâëåííûõ ëîãè÷åñêèõ êàíàëîâ
|
|
â óïðàâëÿþùåé òàáëèöå ÀÖÏ.
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_AsyncGetAdcFrame(t_x502_hnd hnd, uint32_t flags,
|
|
uint32_t tout, double* data);
|
|
|
|
/** @} */
|
|
|
|
|
|
|
|
|
|
|
|
/***************************************************************************//**
|
|
@addtogroup func_streams Ôóíêöèè äëÿ ðàáîòû ñ ñèíõðîííûì ïîòîêîâûì ââîäîì-âûâîäîì
|
|
@{
|
|
*******************************************************************************/
|
|
|
|
/***************************************************************************//**
|
|
@brief Ðàçðåøåíèå ñèíõðîííûõ ïîòîêîâ íà ââîä/âûâîä
|
|
|
|
Ôóíêöèÿ ðàçðåøàåò ïðèåì/ïåðåäà÷ó äëÿ óêàçàííûõ ïîòîêîâ
|
|
Íå óêàçàííûå ïîòîêè ñîõðàíÿþò ñâîå ðàçðåøåííîå èëè çàïðåùåííîå ñîñòîÿíèå.
|
|
Ìîæåò âûçûâàòüñÿ êàê äî X502_Configure(), òàê è ïîñëå.
|
|
Ðàçðåøåííûå ïîòîêè óñòàíàâëèâàþòñÿ êàê ïðàâèëî äî âûçîâà X502_StreamsStart().
|
|
|
|
Ïðè æåëàíèè â íåêîòîðûõ ñèòóàöèÿõ ìîæíî èçìåíÿòü ñîñòàâ ðàçðåøåííûõ ïîòîêîâ
|
|
âî âðåìÿ çàïóùåííîãî ñáîðà äàííûõ, îäíàêî åñëè ýòè ïîòîêè ñèëüíî ðàçëè÷àþòñÿ
|
|
â ÷àñòîòå, òî ðàññ÷èòàííûå áèáëèîòåêîé çíà÷åíèÿ áóôåðà è øàãà ïðåðûâàíèÿ
|
|
ìîãóò íå ïîäõîäèòü äëÿ èçìåíèâøèõñÿ çíà÷åíèé (ñì. @ref sect_sync_mode_buf)
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] streams Íàáîð ôëàãîâ #t_x502_streams, óêàçûâàþùèõ, êàêèå ïîòîêè
|
|
äîëæíû áûòü ðàçðåøåíû.
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_StreamsEnable(t_x502_hnd hnd, uint32_t streams);
|
|
/****************************************************************************//**
|
|
@brief Çàïðåùåíèå ñèíõðîííûõ ïîòîêîâ íà ââîä/âûâîä
|
|
|
|
Ôóíêöèÿ çàïðåùàåò ïåðåäà÷ó ñèíõðîííûõ äàííûõ äëÿ óêàçàííûõ ïîòîêîâ.
|
|
Íå óêàçàííûå ïîòîêè ñîõðàíÿþò ñâîå ðàçðåøåííîå èëè çàïðåùåííîå ñîñòîÿíèå.
|
|
Ôóíêöèÿ, ïðîòèâîïîëîæíàÿ ïî ñìûñëó X502_StreamsEnable().
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] streams Íàáîð ôëàãîâ #t_x502_streams, óêàçûâàþùèõ, êàêèå ïîòîêè
|
|
äîëæíû áûòü çàïðåùåíû.
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_StreamsDisable(t_x502_hnd hnd, uint32_t streams);
|
|
|
|
/****************************************************************************//**
|
|
@brief Ïîëó÷èòü çíà÷åíèå, êàêèå ñèíõðîííûå ïîòîêè ðàçðåøåíû
|
|
|
|
Ôóíêöèÿ ïîçâîëÿåò ïîëó÷èòü íàáîð ôëàãîâ, êîòîðûå óêàçûâàþò, êàêèå ñèíõðîííûå
|
|
ïîòîêè ñåé÷àñ ðàçðåøåíû.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[out] streams Íàáîð ôëàãîâ #t_x502_streams, óêàçûâàþùèõ, êàêèå ïîòîêè
|
|
ñåé÷àñ ðàçðåøåíû.
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_GetEnabledStreams(t_x502_hnd hnd, uint32_t* streams);
|
|
|
|
/***************************************************************************//**
|
|
@brief Çàïóñê ñèíõðîííûõ ïîòîêîâ ââîäà/âûâîäà
|
|
|
|
Ôóíêöèÿ çàïóñêà ñèíõðîííûõ ïîòîêîâ äàííûõ. Âñå ñèíõðîííûå ïîòîêè òàêòèðóþòñÿ
|
|
îò îáùåé îïîðíîé ÷àñòîòû. Åñëè áûë óñòàíîâëåí âíóòðåííèé ñòàðò ñèíõðîíèçàöèè,
|
|
òî ñèíõðîíèçàöèÿ ïîòîêîâ íà÷íåòñÿ ïðè âûïîëíåíèè äàííîé ôóíêöèè, â ïðîòèâíîì
|
|
ñëó÷àå ïî äàííîé ôóíêöèè ìîäóëü ïåðåéäåò â ñîñòîÿíèå îæèäàíèÿ âíåøíåãî
|
|
ïðèçíàêà íà÷àëüíîé ñèíõðîíèçàöèè.
|
|
|
|
Òàêæå ôóíêöèÿ îñóùåñòâëÿåò èíèöèàëèçàöèþ êàíàëà DMA íà ââîä äàííûõ èç ïëàòû,
|
|
åñëè áûë ðàçðåøåí ïîòîê ÀÖÏ èëè ñèíõðîííîãî ââîäà öèôðîâûõ ëèíèé,
|
|
è èíèöèàëèçàöèþ êàíàëà DMA íà âûâîä, åñëè áûë ðàçðåøåí õîòÿ áû îäèí ïîòîê íà
|
|
âûâîä, íî íå áûëà âûçâàíà ôóíêöèÿ X502_PreloadStart() (îäíàêî â ýòîì ñëó÷àå
|
|
íà÷àëî âûâîäà íå ñîâïàäåò ñ íà÷àëîì ââîäà).
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_StreamsStart(t_x502_hnd hnd);
|
|
|
|
/***************************************************************************//**
|
|
@brief Îñòàíîâ ñèíõðîííûõ ïîòîêîâ ââîäà/âûâîäà
|
|
|
|
Ôóíêöèÿ îñòàíîâà ñèíõðîííûõ ïîòîêîâ ââîäà/âûâîäà äàííûõ. Ïîñëå âûïîëíåíèþ
|
|
ýòîé ôóíêöèè ìîäóëü çàâåðøàåò ãåíåðàöèþ îïîðíîé ÷àñòîòû ñèíõðîíèçàöèè (èëè
|
|
èñïîëüçîâàòü âíåøíþþ ÷àñòîòó ñèíõðîíèçàöèè) è îñòàíàâëèâàåò ñèíõðîííóþ
|
|
ïåðåäà÷ó äàííûõ.
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_StreamsStop(t_x502_hnd hnd);
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Ïðîâåðêà, çàïóùåí ëè ñèíõðîííûé ââîä/âûâîä
|
|
|
|
Ôóíêöèÿ ïðîâåðÿåò çàïóùåí ëè ñèíõðîííûé ââîä âûâîä ñ ïîìîùüþ X502_StreamsStart()
|
|
èëè êàêîé-ëèáî âíóòðåííåé ëîãèêîé â ïðîøèâêè BlackFin.
|
|
Åñëè ñáîð äàííûõ íå çàïóùåí, òî ôóíêöèÿ âîçâðàùàåò îøèáêó
|
|
#X502_ERR_STREAM_IS_NOT_RUNNING, åñëè çàïóùåí, òî íóëåâîé êîä îøèáêè
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_IsRunning(t_x502_hnd hnd);
|
|
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief ×òåíèå äàííûõ ÀÖÏ è öèôðîâûõ âõîäîâ èç ìîäóëÿ
|
|
|
|
Ôóíêöèÿ ñ÷èòûâàåò äàííûå îò ìîäóëÿ, êîòîðûå áûëè ïðèíÿòû â ïðîìåæóòî÷íûé
|
|
áóôåð â äðàéâåðå èëè áèáëèîòåêå.
|
|
Ôóíêöèÿ ïðèíèìàåò îòñ÷åòû â ñïåöèàëüíîì èíäåêñíîì ôîðìàòå,
|
|
â êîòîðîì ñîäåðæèòñÿ èíôîðìàöèÿ, ÷òî ýòî çà äàííûå (çíà÷åíèÿ öèôðîâûõ âõîäîâ
|
|
èëè îòñ÷åòû ÀÖÏ) è äîïîëíèòåëüíàÿ èíôîðìàöèÿ äëÿ ÀÖÏ (íîìåð êàíàëà, ðåæèì).
|
|
Äëÿ ðàçáîðà ïîëó÷åííûõ îòñ÷åòîâ èñïîëüçóåòñÿ ôóíêöèÿ X502_ProcessData().
|
|
|
|
Åñëè â áóôåðå ñåé÷àñ íàõîäèòñÿ ìåíüøå îòñ÷åòîâ, ÷åì áûëî çàïðîøåíî,
|
|
òî ôóíêöèÿ áóäåò îæèäàòü ïîêà ïðèäåò çàäàííîå êîëè÷åñòâî äàííûõ èëè
|
|
ïîêà íå èñòå÷åò óêàçàííûé òàéìàóò.  ïîñëåäíåì ñëó÷àå ôóíêöèÿ âîçâðàòèò
|
|
ñòîëüêî îòñ÷åòîâ, ñêîëüêî áûëî â áóôåðå ïðè èñòå÷åíèè òàéìàóòà.
|
|
|
|
Êîëè÷åñòâî ãîòîâûõ äëÿ ÷òåíèÿ îòñ÷åòîâ â áóôåðå äðàéâåðà ìîæíî ïðè æåëàíèè
|
|
óçíàòü ñ ïîìîùüþ ôóíêöèè X502_GetRecvReadyCount().
|
|
|
|
Äî âûçîâîâ X502_Recv() ñèíõðîííûé ïîòîê ñáîðà äàííûõ äîëæåí áûòü óæå çàïóùåí
|
|
ñ ïîìîùüþ X502_StreamsStart().
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[out] buf Áóôåð, â êîòîðûå áóäóò ñîõðàíåíû îòñ÷åòû.
|
|
@param[in] size Êîëè÷åñòâî ñ÷èòûâàåìûõ îòñ÷åòîâ (32-áèòíûõ ñëîâ).
|
|
@param[in] tout Òàéìàóò íà ïðèåì äàííûõ â ìñ.
|
|
@return Åñëè < 0 - êîä îøèáêè.
|
|
Åñëè >= 0 - êîëè÷åñòâî ñ÷èòàííûõ ñëîâ.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_Recv(t_x502_hnd hnd, uint32_t* buf, uint32_t size, uint32_t tout);
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Ïåðåäà÷à ïîòîêîâûõ äàííûõ ÖÀÏ è öèôðîâûõ âûõîäîâ â ìîäóëü
|
|
|
|
Ôóíêöèÿ çàïèñûâàåò äàííûå íà ïåðåäà÷ó â ïðîìåæóòî÷íûé áóôåð, ïîñëå
|
|
÷åãî ýòè äàííûå áóäóò ïåðåäàíû â ìîäóëü.
|
|
Äàííûå äîëæíû áûòü â ñïåöèàëüíîì ôîðìàòå, êîòîðûé îïðåäåëÿåò, ÷òî ýòî çà
|
|
äàííûå (öèôðîâûå âûõîäû, êàíàë ÖÀÏ1 èëè êàíàë ÖÀÏ2). Ïîäãîòîâèòü äàííûå
|
|
â íóæíîì ôîðìàòå ìîæíî ñ ïîìîùüþ X502_PrepareData().
|
|
|
|
Åñëè ïðîìåæóòî÷íûé áóôåð íà ïåðåäà÷ó çàïîëíåí, òî ôóíêöèÿ áóäåò æäàòü ïîêà
|
|
îí íå îñâîáîäèòñÿ èëè ïîêà íå èñòå÷åò óêàçàííûé òàéìàóò.
|
|
Êîëè÷åñòâî ñâîáîäíîãî ìåñòà â áóôåðå ìîæíî ïðè æåëàíèè óçíàòü ñ ïîìîùüþ
|
|
ôóíêöèè X502_GetSendReadyCount().
|
|
|
|
Âîçâðàùåíèå îçíà÷àåò, ÷òî äàííûå çàïèñàíû â ïðîìåæóòî÷íûé áóôåð, à íå
|
|
òî ÷òî îíè óæå äîøëè äî ìîäóëÿ è âûâåäåíû.
|
|
|
|
Ïåðåä âûçîâîì ýòîé ôóíêöèè äîëæíà áûòü çàïóùåíà ïðåäçàãðóçêà äàííûõ íà
|
|
âûâîä ñ ïîìîùüþ X502_PreloadStart().
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] buf Áóôåð ñî ñëîâàìè, êîòîðûå íåîáõîäèìî ïåðåäàòü ìîäóëþ
|
|
@param[in] size Êîëè÷åñòâî ïåðåäàâàåìûõ îòñ÷åòîâ (32-áèòíûõ ñëîâ).
|
|
@param[in] tout Òàéìàóò íà ïåðåäà÷ó (â áóôåð äðàéâåðà) äàííûõ â ìñ.
|
|
@return Åñëè < 0 - êîä îøèáêè.
|
|
Åñëè >= 0 - êîëè÷åñòâî çàïèñàííûõ ñëîâ.
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_Send(t_x502_hnd hnd, const uint32_t* buf, uint32_t size, uint32_t tout);
|
|
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Îáðàáîòêà ïðèíÿòûõ îòñ÷åòîâ ÀÖÏ îò ìîäóëÿ
|
|
|
|
Ôóíêöèÿ âûïîëíÿåò îáðàáîòêó îòñ÷åòîâ ÀÖÏ, ïðî÷èòàííûõ ñ ïîìîùüþ X502_Recv().
|
|
Ôóíêöèÿ ïðîâåðÿåò ñëóæåáíóþ èíôîðìàöèþ èç âõîäíîãî ìàññèâà è ïåðåâîäèò îòñ÷åòû
|
|
ÀÖÏ ëèáî â êîäû, ëèáî â âîëüòû (åñëè óêàçàí ôëàã #X502_PROC_FLAGS_VOLT).
|
|
|
|
Ôóíêöèÿ èñïîëüçóåòñÿ, êîãäà íå çàïóùåí ñèíõðîííûé ââîä ñ öèôðîâûõ ëèíèé è
|
|
îòñ÷åòû ÀÖÏ ÿâëÿþòñÿ åäèíñòâåííûìè ïðèõîäÿùèìè îò ìîäóëÿ äàííûìè (åñëè
|
|
â ïðèíÿòîì ïîòîêå áóäóò äðóãèå äàííûå - òî îíè áóäóò îòáðîøåíû).
|
|
|
|
Åñëè çàïóùåí ñèíõðîííûé ââîä ñ öèôðîâûõ ëèíèé, òî ñëåäóåò èñïîëüçîâàòü
|
|
X502_ProcessData(), êîòîðàÿ âûäåëÿåò äàííûå ñ öèôðîâûõ ëèíèé â îòäåëüíûé
|
|
ìàññèâ.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] src Âõîäíîé ìàññèâ îòñ÷åòîâ, ïðèíÿòûõ ñ ïîìîùüþ X502_Recv().
|
|
@param[out] dest Ìàññèâ, â êîòîðûé áóäóò ñîõðàíåíû ïðåîáðàçîâàííûå äàííûå
|
|
îò ÀÖÏ.
|
|
@param[in,out] size Íà âõîäå - êîëè÷åñòâî ñëîâ â ìàññèâå src, íà âûõîäå -
|
|
êîëè÷åñòâî ñîõðàíåííûõ ïðåîáðàçîâàííûõ çíà÷åíèé â
|
|
ìàññèâå dest
|
|
@param[in] flags Íàáîð ôëàãîâ èç #t_x502_proc_flags
|
|
@return Êîä îøèáêè.
|
|
****************************************************************************/
|
|
X502_EXPORT(int32_t) X502_ProcessAdcData(t_x502_hnd hnd, const uint32_t* src,
|
|
double *dest, uint32_t *size, uint32_t flags);
|
|
|
|
/***************************************************************************//**
|
|
@brief Îáðàáîòêà ïðèíÿòûõ îò ìîäóëÿ äàííûõ
|
|
|
|
Ôóíêöèÿ âûïîëíÿåò îáðàáîòêó äàííûõ, ïðî÷èòàííûõ ñ ïîìîùüþ X502_Recv().
|
|
Ôóíêöèÿ ïðîâåðÿåò ñëóæåáíóþ èíôîðìàöèþ èç âõîäíîãî ìàññèâà, ðàçáèâàåò äàííûå
|
|
íà äâà ìàññèâà - äàííûå îò ÀÖÏ, êîòîðûå ïåðåâîäÿòñÿ â òèï double, è äàííûå
|
|
îò ñèíõðîííîãî öèôðîâîãî ââîäà.
|
|
|
|
Äàííûå îò ÀÖÏ òàê æå ìîãóò áûòü ïåðåâåäåíû â âîëüòû. Ïðè ýòîì äàííûå ÀÖÏ
|
|
ïðèõîäÿò îò ìîäóëÿ óæå îòêàëèáðîâàííûìè ñ ïîìîùüþ êàëèáðîâî÷íûõ êîýôôèöèåíòîâ,
|
|
òàê êàê êàëèáðîâêà âûïîëíÿåòñÿ àïïàðàòíî. Åñëè äàííûå ÀÖÏ íå ïåðåâîäÿòñÿ
|
|
â Âîëüòû è ïðè ýòîì íå áûëè èçìåíåíû çàâîäñêèå êàëèáðîâî÷íûå êîýôôèöèåíòû,
|
|
òî âîçâðàùåííîå çíà÷åíèå ðàâíîå #X502_ADC_SCALE_CODE_MAX ñîîòâåòñòâóåò
|
|
íàïðÿæåíèþ ðàâíîìó ìàêñèìàëüíîìó äëÿ èñïîëüçóåìîãî äèàïàçîíà.
|
|
|
|
Êðîìå òîãî, ôóíêöèÿ ðàçáèðàåò ñîîáùåíèÿ, ïåðåäàâàåìûå â ïîòîêå äàííûõ
|
|
(íàïðèìåð, ñîîáùåíèå î ïåðåïîëíåíèè áóôåðà).
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] src Âõîäíîé ìàññèâ îòñ÷åòîâ, ïðèíÿòûé ñ ïîìîùüþ X502_Recv().
|
|
@param[in] size Êîëè÷åñòâî îòñ÷åòîâ (32-áèòíûõ ñëîâ) â ìàññèâå src.
|
|
@param[in] flags Íàáîð ôëàãîâ èç #t_x502_proc_flags, óïðàâëÿþùèõ
|
|
ïîâåäåíèåì ôóíêöèè. Ìîæåò áûòü óêàçàíî íåñêîëüêî ôëàãîâ
|
|
÷åðåç ëîãè÷åñêîå "ÈËÈ".
|
|
@param[out] adc_data Ìàññèâ, â êîòîðûé áóäóò ñîõðàíåíû äàííûå îò ÀÖÏ,
|
|
ïðåîáðàçîâàííûå â ñîîòâåòñòâèè ñ óêàçàííûìè ôëàãàìè.
|
|
Ìîæåò áûòü NULL, åñëè íå íóæíî ñîõðàíÿòü äàííûå îò ÀÖÏ
|
|
(òîãäà adc_data_size äîëæåí áûòü òîæå NULL, èëè â
|
|
ïåðåìåííîé ïåðåäàí ðàçìåð 0).
|
|
@param[in,out] adc_data_size Íà âõîäå â äàííîì ïàðàìåòðå ïåðåäàåòñÿ ðåçìåð
|
|
áóôåðà adc_data. Åñëè äàííûõ îò ÀÖÏ âî âõîäíîì ìàññèâå
|
|
áóäåò áîëüøå adc_data_size, òî â adc_data áóäåò
|
|
ñîõðàíåíî òîëüêî ïåðâûå adc_data_size îòñ÷åòîâ.
|
|
Íà âûõîäå ïðè óñïåøíîì çàâåðøåíèè ôóíêöèè â äàííóþ
|
|
ïåðåìåííóþ çàïèñûâàåòñÿ êîëè÷åñòâî ñîõðàííûõ îòñ÷åòîâ
|
|
ÀÖÏ.
|
|
Óêàçàòåëü ìîæåò áûòü ðàâåí NULL, åñëè adc_data = NULL
|
|
@param[out] din_data Ìàññèâ, â êîòîðûé áóäóò ñîõðàíåíû îò÷åòû ñ ñèíõðîííîãî
|
|
öèôðîâîãî ââîäà. Êàæäîå ñëîâî ñîîòâåòñòâóþò ñîñòîÿíèþ
|
|
âñåõ öèôðîâûõ âõîäîâ â ôîðìàòå, îïèñàííîì â ôóíêöèè
|
|
X502_AsyncInDig().
|
|
@param[in,out] din_data_size Àíàëîãè÷íî ïàðàìåòðó adc_data_size â ýòîì
|
|
ïàðàìåòðå ïåðåäàåòñÿ ðàçìåð áóôåðà din_data â îòñ÷åòàõ,
|
|
à íà âûõîäå ñîõðàíÿåòñÿ êîëè÷åñòâî ðåàëüíî ñîõðàíåííûõ
|
|
îòñ÷åòîâ öèôðîâîãî ââîäà. Ìîæåò áûòü NULL, åñëè
|
|
din_data = NULL.
|
|
@return Êîä îøèáêè.
|
|
****************************************************************************/
|
|
X502_EXPORT(int32_t) X502_ProcessData(t_x502_hnd hnd, const uint32_t* src, uint32_t size,
|
|
uint32_t flags, double *adc_data, uint32_t *adc_data_size,
|
|
uint32_t *din_data, uint32_t *din_data_size);
|
|
|
|
/***************************************************************************//**
|
|
@brief Îáðàáîòêà ïðèíÿòûõ îò ìîäóëÿ äàííûõ ñ ïîëüçîâàòåëüñêèìè äàííûìè
|
|
|
|
Ôóíêöèÿ àíàëîãè÷íà X502_ProcessData(), íî ïîçâîëÿåò òàêæå âûäåëèòü
|
|
ïîëüçîâàòåëüñêèå äàííûå èç ïîòîêà. Ïîëüçîâàòåëüñêèìè äàííûìè ñ÷èòàþòñÿ âñå
|
|
îòñ÷åòû, êîòîðûå íå ÿâëÿþòñÿ äàííûìè ÀÖÏ, äàííûìè öèôðîâîãî ââîäà
|
|
èëè ñîîáùåíèÿìè.
|
|
Ïîëüçîâàòåëüñêèå äàííûå ñêëàäûâàþòñÿ áåç èçìåíåíèé â ìàññèâ usr_data
|
|
(åñëè îí íå ðàâåí íóëþ).
|
|
Äàííàÿ ôóíêöèÿ ïðåäíàçíà÷åíà â ïåðâóþ î÷åðåäü äëÿ ïðîãðàììèñòîâ, êîòîðûå
|
|
áóäóò èñïîëüçîâàòü ìîäèôèöèðîâàííóþ ïðîøèâêó ñèãíàëüíîãî ïðîöåññîðà BlackFin.
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] src Âõîäíîé ìàññèâ îòñ÷åòîâ, ïðèíÿòûé ñ ïîìîùüþ
|
|
X502_Recv().
|
|
@param[in] size Êîëè÷åñòâî îòñ÷åòîâ (32-áèòíûõ ñëîâ) â ìàññèâå src.
|
|
@param[in] flags Íàáîð ôëàãîâ èç #t_x502_proc_flags.
|
|
@param[out] adc_data Ìàññèâ, â êîòîðûé áóäóò ñîõðàíåíû äàííûå îò ÀÖÏ
|
|
(ñì. X502_ProcessData()).
|
|
@param[in,out] adc_data_size ñì. X502_ProcessData()
|
|
@param[out] din_data Ìàññèâ, â êîòîðûé áóäóò ñîõðàíåíû îò÷åòû ñ
|
|
ñèíõðîííîãî öèôðîâîãî ââîäà. Ñì. X502_ProcessData().
|
|
@param[in,out] din_data_size ñì. X502_ProcessData().
|
|
@param[out] usr_data Ìàññèâ, â êîòîðûé áóäóò ñîõðàíåíû ïîëüçîâàòåëüñêèå
|
|
äàííûå áåç èçìåíåíèÿ èõ ôîðìàòà.
|
|
@param[in,out] usr_data_size  ýòîì ïàðàìåòðå ïåðåäàåòñÿ ðàçìåð áóôåðà usr_data
|
|
à íà âûõîäå ñîõðàíÿåòñÿ êîëè÷åñòâî ðåàëüíî ñîõðàíåííûõ
|
|
îòñ÷åòîâ ïîëüçîâàòåëüñêèõ äàííûõ.
|
|
Ìîæåò áûòü NULL òîëüêî åñëè usr_data = NULL.
|
|
@return Êîä îøèáêè.
|
|
****************************************************************************/
|
|
X502_EXPORT(int32_t) X502_ProcessDataWithUserExt(t_x502_hnd hnd, const uint32_t* src, uint32_t size,
|
|
uint32_t flags, double *adc_data,
|
|
uint32_t *adc_data_size, uint32_t *din_data,
|
|
uint32_t *din_data_size,
|
|
uint32_t *usr_data, uint32_t *usr_data_size);
|
|
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Ïîäãîòîâêà äàííûõ äëÿ âûâîäà â ìîäóëü
|
|
|
|
Ôóíêöèÿ ïðèíèìàåò äàííûå èç òðåõ ìàññèâîâ - äàííûå íà öèôðîâûå âûõîäû,
|
|
îòñ÷åòû ïåðâîãî è âòîðîãî êàíàëà ÖÀÏ.  êà÷åñòâå ìàññèâà ìîæåò áûòü ïåðåäàí
|
|
íóëåâîé óêàçàòåëü, åñëè äàííûå èç ýòîãî èñòî÷íèêà íå òðåáóþòñÿ.
|
|
Âñå èñïîëüçóåìûå ìàññèâû äîëæíû áûòü îäèíàêîâîãî ðàçìåðà è ôóíêöèÿ èõ
|
|
ðàâíîìåðíî ïåðåìåøèâàåò â îáùèé ïîòîê, ïðåîáðàçóÿ â íóæíûé äëÿ ìîäóëÿ ôîðìàò.
|
|
|
|
Âûõîäíîé ìàññèâ äîëæåí áóäåò ñîäåðæàòü n*size îòñ÷åòîâ, ãäå n - êîëè÷åñòâî
|
|
èñïîëüçóåìûõ âõîäíûõ ìàññèâîâ (îò 1 äî 3).
|
|
|
|
Çíà÷åíèÿ öèôðîâûõ âûõîäîâ ïðåäñòàâëÿþò ñîáîé 32-áèòíûå ñëîâà, ìëàäøèå 16-áèò
|
|
êîòîðûõ îïðåäåëÿþò çíà÷åíèÿ âûâîäîâ, à ñòàðøèå - ôëàãè èç
|
|
#t_x502_digout_word_flags, êîòîðûå ìîãóò èñïîëüçîâàòüñÿ â ÷àñòíîñòè äëÿ
|
|
ïåðåâîäà îäíîé (èëè îáåèõ) èç ïîëîâèí âûâîäîâ â òðåòüå ñîñòîÿíèå.
|
|
|
|
 êà÷åñòâå çíà÷åíèé ÖÀÏ ìîãóò èñïîëüçîâàòüñÿ êàê êîäû, òàê è Âîëüòû,
|
|
â çàâèñèìîñòè îò ïåðåäàííûõ ôëàãîâ, è ê âûâîäèìûì çíà÷åíèÿì ìîãóò áûòü
|
|
ïðèìåíåíû êàëèáðîâî÷íûå êîýôôèöèåíòû.
|
|
Åñëè èñïîëüçóþòñÿ êîäû ÖÀÏ ñ âêëþ÷åííîé êàëèáðîâêîé, òî êîä
|
|
#X502_DAC_SCALE_CODE_MAX îïðåäåëÿåò êîä, ñîîòâåòñòâóþùèé +5V.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] dac1 Âõîäíîé ìàññèâ îòñ÷åòîâ ïåðâîãî êàíàëà ÖÀÏ èëè
|
|
NULL, åñëè íå èñïîëüçóåòñÿ.
|
|
@param[in] dac2 Âõîäíîé ìàññèâ îòñ÷åòîâ âòîðîãî êàíàëà ÖÀÏ èëè
|
|
NULL, åñëè íå èñïîëüçóåòñÿ.
|
|
@param[in] digout Âõîäíîé ìàññèâ ñî çíà÷åíèÿìè öèôðîâûõ âûâîäîâ
|
|
èëè NULL, åñëè íå èñïîëüçóåòñÿ.
|
|
@param[in] size Ðàçìåð êàæäîãî èç èñïîëüçóåìûõ âõîäíûõ ìàññèâîâ.
|
|
@param[in] flags Ôëàãè, óïðàâëÿþùèå ðàáîòîé ôóíêöèè, èç
|
|
#t_x502_dacout_flags.
|
|
@param[out] out_buf Âûõîäíîé ìàññèâ, â êîòîðûé áóäóò ñîõðàíåíû
|
|
ñôîðìèðîâàííûå îòñ÷åòû. Äîëæåí áûòü ðàçìåðà
|
|
n*size (n - êîëè÷åñòâî èñïîëüçóåìûõ âõîäíûõ
|
|
ìàññèâîâ)
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_PrepareData(t_x502_hnd hnd, const double* dac1, const double* dac2,
|
|
const uint32_t* digout, uint32_t size, int32_t flags,
|
|
uint32_t* out_buf);
|
|
|
|
/***************************************************************************//**
|
|
@brief Ïîäãîòîâêà äàííûõ äëÿ ïåðåäà÷è â ìîäóëü
|
|
|
|
Ôóíêöèÿ ïðèíèìàåò îòñ÷åòû ÖÀÏ è öèôðîâûõ ëèíèé è íà îñíîâå ýòèõ äàííûõ
|
|
ôîðìèðóåò ñëîâà ñïåöèàëüíîãî ôîðìàòà äëÿ äàëüíåéøåé ïåðåäà÷è â ìîäóëü ñ
|
|
ïîìîùüþ X502_Send().
|
|
|
|
Äàííûå îò ÖÀÏ ïðèíèìàþòñÿ â ñëåäóþùåì ïîðÿäêå: 1-ûé îòñ÷åò ïåðâîãî ðàçðåøåííîãî
|
|
êàíàëà, çàòåì 1-ûé îòñ÷åò âòîðîãî òàêîãî êàíàëà
|
|
è ò.ä., çàòåì ïî âòîðîìó îòñ÷åòó êàæäîãî êàíàëà è ò.ä.
|
|
 êà÷åñòâå çíà÷åíèé ÖÀÏ ìîãóò èñïîëüçîâàòüñÿ êàê êîäû, òàê è Âîëüòû,
|
|
â çàâèñèìîñòè îò ïåðåäàííûõ ôëàãîâ, è ê âûâîäèìûì çíà÷åíèÿì ìîãóò áûòü
|
|
ïðèìåíåíû êàëèáðîâî÷íûå êîýôôèöèåíòû.
|
|
|
|
Çíà÷åíèÿ öèôðîâûõ âûõîäîâ ïðåäñòàâëÿþò ñîáîé 32-áèòíûå ñëîâà, ìëàäøèå 16-áèò
|
|
êîòîðûõ îïðåäåëÿþò çíà÷åíèÿ âûâîäîâ, à ñòàðøèå - ôëàãè èç
|
|
#t_x502_digout_word_flags, êîòîðûå ìîãóò èñïîëüçîâàòüñÿ â ÷àñòíîñòè äëÿ
|
|
ïåðåâîäà îäíîé (èëè îáåèõ) èç ïîëîâèí âûâîäîâ â òðåòüå ñîñòîÿíèå.
|
|
|
|
Ôîðìàò âûõîäíûõ ñëîâ è êîëè÷åñòâî ñëîâ íà îòñ÷åò îïðåäåëÿåòñÿ çàäàííûì
|
|
[ôîðìàòîì ïåðåäàâàåìûõ äàííûõ](@ref TLTR35_CONFIG::OutDataFmt).
|
|
Ôóíêöèÿ çàâåðøàåò ðàáîòó êàê òîëüêî çàêîí÷èòñÿ ìåñòî â âûõîäíîì áóôåðå.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] dac_data Ìàññèâ îòñ÷åòîâ ÖÀÏ. Ìîæåò áûòü ïåðåäàí íóëåâîé óêàçàòåëü,
|
|
åñëè èñïîëüçóþòñÿ òîëüêî âûâîä íà öèôðîâûå ëèíèè.
|
|
@param[in,out] dac_size Íà âõîäå çàäàåò êîëè÷åñòâî îòñ÷åòîâ â ìàññèâå dac_data,
|
|
íà âûõîäå âîçâðàùàåò, ñêîëüêî îòñ÷åòîâ áûëî ðåàëüíî
|
|
çàïèñàíî â âûõîäíîé ìàññèâ.
|
|
@param[in] dout_data Ìàññèâ çíà÷åíèé äëÿ âûâîäà íà öèôðîâûå ëèíèè.
|
|
Ìîæåò áûòü ïåðåäàí íóëåâîé óêàçàòåëü,
|
|
åñëè èñïîëüçóþòñÿ òîëüêî äàííûå ÖÀÏ.
|
|
@param[in,out] dout_size Íà âõîäå çàäàåò êîëè÷åñòâî çíà÷åíèé â ìàññèâå dout_data,
|
|
íà âûõîäå âîçâðàùàåò, ñêîëüêî çíà÷åíèé áûëî ðåàëüíî
|
|
çàïèñàíî â âûõîäíîé ìàññèâ.
|
|
@param[in] flags Ôëàãè, óïðàâëÿþùèå ðàáîòîé ôóíêöèè, èç
|
|
#t_x502_dacout_flags.
|
|
@param[out] result Ðåçóëüòèðóþùèé ìàññèâ â ñïåöèàëüíîì ôîðìàòå äëÿ
|
|
ïåðåäà÷è â ìîäóëü.
|
|
@param[in,out] snd_size Íà âõîäå çàäàåò ðàçìåð ìàññèâà result, íà âûõîäå
|
|
âîçâðàùàåò, ñêîëüêî âñåãî 32-áèòíûõ ñëîâ áûëî çàïèñàíî
|
|
â ìàññèâ result â õîäå âûïîëíåíèÿ ôóíêöèè.
|
|
@param[in] ch_enabled Áèòîâàÿ ìàñêà îïðåäåëÿþùàÿ ðàçðåøåííûå êàíàëû,
|
|
1é áèò - 1é êàíàë, 2é áèò - 2é êàíàë, è ò.ä.
|
|
@return Êîä îøèáêè.
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_PrepareData2(t_x502_hnd hnd, const double *dac_data,
|
|
uint32_t *dac_size, const uint32_t *dout_data,
|
|
uint32_t *dout_size, uint32_t flags,
|
|
uint32_t *result, uint32_t *snd_size, uint32_t ch_enabled);
|
|
|
|
/***************************************************************************//**
|
|
@brief Ïîäãîòîâêà îäíîãî ñëîâà äëÿ âûâîäà â ÖÀÏ
|
|
|
|
Ôóíêöèÿ ïðèíèìàåò îäèí îòñ÷åò äëÿ îäíîãî êàíàëà ÖÀÏ.
|
|
 êà÷åñòâå çíà÷åíèÿ îòñ÷åòà ÖÀÏ ìîãóò èñïîëüçîâàòüñÿ êàê êîäû, òàê è Âîëüòû,
|
|
â çàâèñèìîñòè îò ïåðåäàííûõ ôëàãîâ, è ê âûâîäèìûì çíà÷åíèÿì ìîãóò áûòü
|
|
ïðèìåíåíû êàëèáðîâî÷íûå êîýôôèöèåíòû.
|
|
Åñëè èñïîëüçóþòñÿ êîäû ÖÀÏ ñ âêëþ÷åííîé êàëèáðîâêîé, òî êîä
|
|
#X502_DAC_SCALE_CODE_MAX îïðåäåëÿåò êîä, ñîîòâåòñòâóþùèé +5V.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] range Äèàïàçîí èëè âûõîäû îäíîãî êàíàëà (äëÿ LTA37 1:1 èëè 1:10) (èç #t_x502devs_dac_range)
|
|
@param[in] dac_ch Íîìåð êàíàëà ÖÀÏ.
|
|
@param[in] dac_val Îòñ÷åò êàíàëà dac_ch ÖÀÏ.
|
|
@param[in] flags Ôëàãè, óïðàâëÿþùèå ðàáîòîé ôóíêöèè, èç
|
|
#t_x502_dacout_flags.
|
|
@param[out] out_buf Óêàçàòåëü íà ðåçóëüòèðóþùåå ñëîâî äàííûõ äëÿ êàíàëà dac_ch.
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_PrepareDacWrd(t_x502_hnd hnd, uint32_t dac_ch, double dac_val,
|
|
int32_t flags,
|
|
uint32_t* out_wrd);
|
|
|
|
/***************************************************************************//**
|
|
@brief Ïîëó÷èòü êîëè÷åñòâî îòñ÷åòîâ â áóôåðå ïîòîêà íà ââîä
|
|
|
|
Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî îòñ÷åòîâ, êîòîðûå áûëè ïðèíÿòû èç ìîäóëÿ
|
|
âî âíóòðåííèé áóôåð è ãîòîâû äëÿ ñ÷èòûâàíèÿ ñ ïîìîùüþ X502_Recv().
|
|
Òî åñòü åñëè â X502_Recv() ïåðåäàòü çíà÷åíèå, êîòîðîå âåðíóëà äàííàÿ ôóíêöèÿ,
|
|
òî X502_Recv() âåðíåò ýòî êîëè÷åñòâî äàííûõ áåç îæèäàíèÿ (òàê êàê îíè óæå
|
|
â áóôåðå).
|
|
Ïðè ðàáîòå ïî Ethernet äàííàÿ ôóíêöèÿ âîçâðàùàåò êîððåêòíîå çíà÷åíèå òîëüêî
|
|
äëÿ ÎÑ Windows.
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[out] rdy_cnt Êîëè÷åñòâî ãîòîâûõ ê ïðèåìó îòñ÷åòîâ.
|
|
@return Êîä îøèáêè.
|
|
***************************************************************************/
|
|
X502_EXPORT(int32_t) X502_GetRecvReadyCount(t_x502_hnd hnd, uint32_t *rdy_cnt);
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Ïîëó÷èòü ðàçìåð ñâîáîäíîãî ìåñòà â áóôåðå ïîòîêà íà âûâîä
|
|
|
|
Ôóíêöèÿ âîçâðàùàåò êîëè÷åñòâî îòñ÷åòîâ, ñîîòâåòñòâóþùåå ñâîáîäíîìó ìåñòó
|
|
â áóôåðå íà ïåðåäà÷ó â ìîäóëü.
|
|
Ýòî êîëè÷åñòâî îòñ÷åòîâ ãàðàíòèðîâàííî ìîæåò áûòü ïåðåäàíî ñ ïîìîùüþ
|
|
X502_Send() áåç îæèäàíèÿ.
|
|
Äàííàÿ ôóíêöèÿ íå ðåàëèçîâàíà ïðè ðàáîòå ïî èíòåðôåéñó Ethernet (TCP).
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[out] rdy_cnt Êîëè÷åñòâî ñëîâ, êîòîðîìó ñîîòâåòñòâóåò
|
|
ñâîáîäíîå ìåñòî â áóôåðå íà ïåðåäà÷ó.
|
|
@return Êîä îøèáêè.
|
|
***************************************************************************/
|
|
X502_EXPORT(int32_t) X502_GetSendReadyCount(t_x502_hnd hnd, uint32_t *rdy_cnt);
|
|
|
|
/***************************************************************************//**
|
|
@brief Ïîëó÷èòü íîìåð ñëåäóþùåãî îæèäàåìîãî ëîãè÷åñêîãî êàíàëà ÀÖÏ äëÿ
|
|
îáðàáîòêè
|
|
|
|
Ôóíêöèÿ âîçâðàùàåò íîìåð ëîãè÷åñêîãî êàíàëà ÀÖÏ, êîòîðûé äîëæåí áûòü
|
|
îáðàáîòàí ïåðâûì ïðè ñëåäóþùåì âûçîâå X502_ProcessData()/
|
|
X502_ProcessAdcData() â ñëó÷àå, åñëè ïîòîê äàííûõ íåïðåðûâåí.
|
|
|
|
Ïî ñóòè, ýòî íîìåð ëîãè÷åñêîãî êàíàëà, ñëåäóþùèé çà ëîãè÷åñêèì êàíàëîì
|
|
ïîñëåäíåãî îáðàáîòàííîãî äî ýòîãî îòñ÷åòà ÀÖÏ.
|
|
Ìîæåò áûòü èñïîëüçîâàíî ïðè îáðàáîòêå áëîêîâ äàííûõ íå êðàòíûõ öåëîìó
|
|
êîëè÷åñòâó êàäðîâ.
|
|
Åñëè ïåðåä X502_ProcessData() âûçûâàòü äàííóþ ôóíêöèþ, òî îíà âåðíåò íîìåð
|
|
ëîãè÷åñêîãî êàíàëà, ñîîòâåòñòâóþùèé ïåðâîìó îòñ÷åòó ÀÖÏ,
|
|
îáðàáîòàííîìó ïîñëåäóþùèì âûçîâîì X502_ProcessData().
|
|
|
|
Íàïðèìåð, åñëè óñòàíîâëåíî 7 ëîãè÷åñêèõ êàíàëîâ, à â X502_ProcessData()
|
|
ïåðåäàíî äëÿ îáðàáîòêè êðàòíîå 7 êîëè÷åñòâî îòñ÷åòîâ, òî ïîñëåäóþùèé âûçîâ
|
|
X502_GetNextExpectedLchNum() âåðíåò íîìåð êàíàëà ðàâíûé 0 (òàê êàê îáðàáîòàíî
|
|
öåëîå ÷èñëî êàäðîâ è îæèäàåòñÿ ñíîâà íà÷àëî êàäðà).
|
|
Åñëè â X502_ProcessData() ïåðåäàí ìàññèâ ñ 7*n + 5 îòñ÷åòàìè ÀÖÏ, òî ñëåäóþùèì
|
|
îæèäàåìûì êàíàëîì áóäåò ëîãè÷åñêèé êàíàë ñ íîìåðîì 5 (îáðàáîòàíû êàíàëû
|
|
0,1,2,3,4 èç íåïîëíîãî êàäðà).
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[out] lch Íîìåð ëîãè÷åñêîãî êàíàëà (íà÷èíàÿ ñ íóëÿ).
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_GetNextExpectedLchNum(t_x502_hnd hnd, uint32_t *lch);
|
|
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Íà÷àëî ïîäãîòîâêè âûâîäà ñèíõðîííûõ äàííûõ
|
|
|
|
Ôóíêöèÿ äîëæíà âûçûâàòüñÿ ïåðåä íà÷àëîì ïðåäçàãðóçêè ïîòîêîâûõ ñèíõðîííûõ
|
|
äàííûõ íà âûâîä. Äëÿ íà÷àëà âûäà÷è ñèíõðîííûõ äàííûõ îäíîâðåìåííî ñ íà÷àëîì
|
|
ñèíõðîííîãî ââîäà, ê ìîìåíòó íà÷àëà ñáîðà ÷àñòü äàííûõ äîëæíà áûòü óæå
|
|
çàãðóæåíà â ìîäóëü äî âûçîâà X502_StreamsStart().
|
|
|
|
Äàííàÿ ôóíêöèÿ èíèöèàëèçèðóåò êàíàë îáìåíà íà ïåðåäà÷ó äàííûõ íà âûâîä.
|
|
Ïîñëå âûçîâà ýòîé ôóíêöèè ìîæíî çàãðóçèòü ÷àñòü äàííûõ íà âûâîä
|
|
ñ ïîìîùüþ X502_Send().
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@return Êîä îøèáêè.
|
|
***************************************************************************/
|
|
X502_EXPORT(int32_t) X502_PreloadStart(t_x502_hnd hnd);
|
|
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Íà÷àëî çàãðóçêè öèêëè÷åñêîãî ñèãíàëà íà âûâîä
|
|
|
|
Ïî âûçîâó ýòîé ôóíêöèè â äðàéâåðå (äëÿ L502) èëè â ïàìÿòè êîíòðîëëåðà ìîäóëÿ
|
|
(äëÿ E502) âûäåëÿåòñÿ ìåñòî ïîä öèêëè÷åñêèé áóôåð íà âûâîä.
|
|
Äîëæíà âûçûâàòüñÿ ïåðåä çàãðóçêîé öèêëè÷åñêèõ äàííûõ ñ ïîìîùüþ
|
|
X502_Send().
|
|
|
|
Äëÿ óñïåøíîãî âûïîëíåíèÿ äîëæåí áûòü ñâîáîäíûé áóôåð (èñïîëüçóåòñÿ
|
|
äâîéíàÿ áóôåðèçàöèÿ) - ò.å. ôóíêöèÿ íå ìîæåò áûòü âûçâàíà ñðàçó ïîñëå ïðåäûäóùåãî
|
|
X502_OutCycleSetup(). Êðîìå òîãî íå äîëæåí áûë áûòü èñïîëüçîâàí ïîòîêîâûé
|
|
âûâîä.
|
|
|
|
Äëÿ L-502 ðàçìåð ìàêñèìàëüíûé ðàçìåð áóôåðà îïðåäåëÿåòñÿ òîëüêî ðàçìåðîì,
|
|
êîòîðûé ïîçâîëÿåò âûäåëèòü ñèñòåìà íà óðîâíå äðàéâåðà.
|
|
Äëÿ E-502 ðàçìåð îãðàíè÷åí ïàìÿòüþ âñòðîåííîãî êîíòðîëëåðà.
|
|
Ïîäðîáíåå ñìîòðè â îïèñàíèè ðàçëè÷èé E-502 è L-502.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] size Êîëè÷åñòâî îòñ÷åòîâ â âûâîäèìîì öèêëè÷åñêîì ñèãíàëå
|
|
ñóììàðíî äëÿ âñåõ èñïîëüçóåìûõ êàíàëîâ âûâîäà.
|
|
@return Êîä îøèáêè.
|
|
***************************************************************************/
|
|
X502_EXPORT(int32_t) X502_OutCycleLoadStart(t_x502_hnd hnd, uint32_t size);
|
|
|
|
/***************************************************************************//**
|
|
@brief Óñòàíîâêà ðàíåå çàãðóæåííîãî öèêëè÷åñêîãî ñèãíàëà íà âûâîä
|
|
|
|
Ïî âûçîâó ýòîé ôóíêöèè ðàíåå çàãðóæåííûé öèêëè÷åñêèé áóôåð ñòàíîâèòñÿ àêòèâíûì.
|
|
Åñëè ñèíõðîííûé ââîä-âûâîä çàïóùåí (÷åðåç X502_StreamsStart()), òî ïî ýòîé
|
|
ôóíêöèè ñèãíàë áóäåò âûäàâàòüñÿ íà âûõîä, èíà÷å âûäà÷à íà÷íåòñÿ ïðè çàïóñêå
|
|
ñèíõðîííîãî ââîäà-âûâîäà.
|
|
|
|
Åñëè äî ýòîãî óæå âûâîäèëñÿ öèêëè÷åñêèé ñèãíàë, òî ñìåíà íà íîâûé ïðîèçîéäåò
|
|
â êîíöå öèêëà ïðåäûäóùåãî ñèãíàëà, åñëè íå óêàçàí ôëàã
|
|
#X502_OUT_CYCLE_FLAGS_FORCE.
|
|
|
|
Åñëè íå óêàçàí ôëàã #X502_OUT_CYCLE_FLAGS_WAIT_DONE, òî ôóíêöèÿ òîëüêî äàåò
|
|
êîìàíäó íà óñòàíîâêó ñèãíàëà, íå îæèäàÿ íåïîñðåäñòâåííîé ñìåíû ñèãíàëà èëè
|
|
çàãðóçêè ñèãíàëà.  ÷àñòíîñòè äëÿ îäíîâðåìåííîãî çàïóñêà ñèíõðîííîãî ââîäà
|
|
è âûâîäà íåîáõîäèìî ñäåëàòü çàãðóçêó ïåðâîãî öèêëè÷åñêîãî ñèãíàëà ñ äàííûì
|
|
ôëàãîì, ÷òîáû ãàðàíòèðîâàòü, ÷òî ñèãíàë ïîëíîñòüþ çàãðóæåí ê ìîìåíòó çàïóñêà
|
|
ñèíõðîííîãî ââîäà-âûâîäà ÷åðåç X502_StreamsStart().
|
|
|
|
Äàííàÿ ôóíêöèÿ äîëæíà áûòü âûçâàíà òîëüêî ïîñëå âûçîâà X502_OutCycleLoadStart()
|
|
è çàãðóçêè óêàçàííîãî â íåé êîëè÷åñòâà îòñ÷åòîâ â áóôåð!
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] flags Ôëàãè èç #t_x502_out_cycle_flags.
|
|
@return Êîä îøèáêè.
|
|
***************************************************************************/
|
|
X502_EXPORT(int32_t) X502_OutCycleSetup(t_x502_hnd hnd, uint32_t flags);
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Îæèäàíèå óñòàíîâêè ðàíåå çàãðóæåííîãî öèêëè÷åñêîãî ñèãíàëà íà âûâîä
|
|
|
|
Ðåàëèçóåò òîò æå ôóíêöèîíàë ÷òî è X502_OutCycleSetup ñ ôëàãîì #X502_OUT_CYCLE_FLAGS_WAIT_DONE
|
|
Äîáàâëåí òàéìàóò îæèäàíèÿ óñòàíîâêè öèêëè÷åñêîãî ñèãíàëà.
|
|
|
|
Äàííàÿ ôóíêöèÿ äîëæíà áûòü âûçâàíà òîëüêî ïîñëå âûçîâà X502_OutCycleLoadStart() è X502_OutCycleSetup()
|
|
è çàãðóçêè óêàçàííîãî â íåé êîëè÷åñòâà îòñ÷åòîâ â áóôåð!
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] flags Ôëàãè èç #t_x502_out_cycle_flags.
|
|
@param[in] tout Òàéìàóò â òå÷åíèè êîòîðîãî áóäåò îæèäàòüñÿ, êîãäà
|
|
ïðîöåññîð çàâåðøèò âûïîëíåíèå êîìàíäû. Ôóíêöèÿ
|
|
âîçâðàòèò óïðàâëåíèå ëèáî ïî çàâåðøåíèþ êîìàíäû,
|
|
ëèáî ïî òàéìàóòó.
|
|
@return Êîä îøèáêè.
|
|
***************************************************************************/
|
|
X502_EXPORT(int32_t) X502_OutCycleSetupWaitDone(t_x502_hnd hnd, uint32_t tout);
|
|
|
|
/***************************************************************************//**
|
|
@brief Îñòàíîâ âûâîäà öèêëè÷åñêîãî ñèãíàëà
|
|
|
|
Ïî âûçîâó ýòîé ôóíêöèè ïðåêðàùàåòñÿ âûäà÷à ðàíåå óñòàíîâëåííîãî öèêëè÷åñêîãî
|
|
ñèãíàëà ñ ïîìîùüþ X502_OutCycleSetup(). Îñòàíîâêà îñóùåñòâëÿåòñÿ
|
|
ïîñëå âûäà÷è ïîñëåäíåãî îòñ÷åòà â ïåðèîäå, ÷òî ïîçâîëÿåò çíàòü êàêèå çíà÷åíèÿ
|
|
îñòàíóòñÿ íà âûõîäàõ.
|
|
|
|
Ïðè âûçîâå æå X502_StreamsStop() (èëè ïðè çàïðåùåíèè âñåõ ïîòîêîâ
|
|
íà âûâîä ÷åðåç X502_StreamsDisable()) îñòàíîâ âñåõ ïîòîêîâ ïðîèñõîäèò ñðàçó
|
|
è òî÷íàÿ òî÷êà îñòàíîâà íåèçâåñòíà.
|
|
|
|
Ïðè ýòîì íåîáõîäèìî ó÷èòûâàòü, ÷òî ñàìà ôóíêöèÿ ïî óìîë÷àíèþ òîëüêî äåëàåò çàïðîñ
|
|
íà îñòàíîâ, à ðåàëüíî îñòàíîâ ïðîèçîéäåò ïîçæå. Åñëè âûçâàòü X502_StreamsStop()
|
|
äî çàâåðøåíèÿ îñòàíîâà, òî ïîñëåäíèé îòñ÷åò áóäåò íåèçâåñòåí, ò.å. íåîáõîäèìî
|
|
äîæäàòüñÿ çàâåðøåíèÿ îñòàíîâà, äëÿ ÷åãî ìîæåò íàïðèìåð áûòü èñïîëüçîâàí
|
|
ôëàã #X502_OUT_CYCLE_FLAGS_WAIT_DONE.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] flags Ôëàãè èç #t_x502_out_cycle_flags.
|
|
@return Êîä îøèáêè.
|
|
***************************************************************************/
|
|
X502_EXPORT(int32_t) X502_OutCycleStop(t_x502_hnd hnd, uint32_t flags);
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Ïðîâåðêà, çàâåðøåíà ëè óñòàíîâêà èëè îñòàíîâ öèêëè÷åñêîãî ñèãíàëà
|
|
|
|
Ôóíêöèÿ ïðîâåðÿåò, çàâåðøåíà ëè óñòàíîâêà öèêëè÷åñêîãî ñèãíàëà ïîñëå âûçîâà
|
|
X502_OutCycleSetup() èëè çàâåðøåíà ëè îñòàíîâêà ãåíåðàöèè öèêëè÷åñêîãî
|
|
ñèãíàëà ïîñëå âûçîâà X502_OutCycleStop(). Ïî ñâîåìó íàçíà÷åíèþ àíàëîãè÷íà ôëàãó
|
|
#X502_OUT_CYCLE_FLAGS_WAIT_DONE â îïèñàííûõ âûøå ôóíêöèÿõ, íî ïîçâîëÿåò
|
|
âûïîëíèòü îæèäàíèå âðó÷íóþ (ñ ïðîâåðêîé äðóãèõ óñëîâèé).
|
|
|
|
Ôóíêöèÿ äîñòóïíà â áèáëèîòåêè, íà÷èíàÿ ñ âåðñèè 1.1.2, ïðè ýòîì äëÿ ðàáîòû
|
|
ôóíêöèè íåîáõîäèìà âåðñèÿ ïðîøèâêè ARM íå íèæå 1.0.2 äëÿ ìîäóëÿ E-502 èëè
|
|
âåðñèÿ äðàéâåðà íå íèæå 1.0.9 äëÿ L-502.  îòëè÷èå îò ôëàãà, åñëè äàííûå óñëîâèÿ
|
|
íå âûïîëíÿþòñÿ, òî ôóíêöèÿ ÿâíî âåðíåò îøèáêó #X502_ERR_NOT_SUP_BY_FIRMWARE
|
|
èëè #X502_ERR_NOT_SUP_BY_DRIVER.
|
|
|
|
Îæèäàíèå çàâåðøåíèÿ ìîæåò áûòü íåîáõîäèìî ïðè âûçîâå X502_OutCycleSetup()
|
|
ïðè çàãðóçêå ïåðâîãî ñèãíàëà äî âûçîâà X502_StreamsStart(), åñëè òðåáóåòñÿ,
|
|
÷òîáû âûäà÷à ïåðâûõ îòñ÷åòîâ íà ÖÀÏ ñîâïàëà ïî âðåìåíè ñ ìîìåíòîì çàïóñêà ââîäà,
|
|
ò.ê. èíà÷å çàãðóçêà ñèãíàëà â ìîäóëü ìîæåò íå çàâåðøèòüñÿ ê ìîìåíòó çàïóñêà
|
|
è âûäà÷à ñèãíàëà íà÷íåòñÿ ñ çàäåðæêîé (àêòóàëüíî äëÿ E502).
|
|
|
|
Ïðè ïîñëåäóþùèõ âûçîâàõ X502_OutCycleSetup() äëÿ ñìåíû óæå óñòàíîâëåííîãî
|
|
ñèãíàëà óñòàíîâêà ñ÷èòàåòñÿ çàâåðøåííîé ïîñëå çàâåðøåíèÿ çàãðóçêè ñèãíàëà è
|
|
íåïîñðåäñòâåííîé ñìåíû âûäàâàåìîãî ñèãíàëà. Ýòó ïðîâåðêó ìîæíî èñïîëüçîâàòü,
|
|
÷òîáû ÿâíî óçíàòü, ÷òî ñìåíà ñèãíàëà çàâåðøèëàñü è ìîæíî óæå çàãðóæàòü
|
|
ñëåäóþùèé öèêëè÷åñêèé ñèãíàë.
|
|
|
|
Ïðè âûçîâå X502_OutCycleStop() îæèäàíèå çàâåðøåíèÿ ìîæåò èñïîëüçîâàòüñÿ
|
|
ïåðåä âûçîâîì X502_StreamsStop(), ÷òîáû óáåäèòñÿ (åñëè ýòî íåîáõîäèìî), ÷òî
|
|
ãåíåðàöèÿ áûëà çàâåðøåíà èìåííî íà ïîñëåäíåé òî÷êå çàãðóæåííîãî öèêëè÷åñêîãî
|
|
ñèãíàëà.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[out] done 0, åñëè åñòü íåçàâåðøåííûé çàïðîñ íà óñòàíîâêó èëè îñòàíîâ
|
|
öèêëè÷åñêîãî ñèãíàëà, 1 --- â ïðîòèâíîì ñëó÷àå (âêëþ÷àÿ
|
|
ñëó÷àé, êîãäà âûäà÷à öèêëè÷åñêîãî ñèãíàëà âîîáùå íå âåäåòñÿ)
|
|
@return Êîä îøèáêè.
|
|
****************************************************************************/
|
|
X502_EXPORT(int32_t) X502_OutCycleCheckSetupDone(t_x502_hnd hnd, uint32_t *done);
|
|
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief ×òåíèå ôëàãîâ ñòàòóñà âûâîäà
|
|
|
|
Ôóíêöèÿ ÷èòàåò çíà÷åíèÿ ôëàãîâ ñòàòóñà ñèíõðîííîãî âûâîäà èç ðåãèñòðà ñòàòóñà.
|
|
 ÷àñòíîñòè ïî ôëàãó #X502_OUT_STATUS_FLAG_BUF_WAS_EMPTY ìîæíî ïðîâåðèòü,
|
|
íå áûëî ëè îïóñòîøåíèÿ áóôåðà ñ ìîìåíòà çàïóñêà ñèíõðîííîãî âûâîäà,
|
|
÷òîáû óáåäèòüñÿ, ÷òî íå áûëî ðàçðûâà ñèãíàëà èç-çà íåïîäêà÷åííûõ âîâðåìÿ
|
|
äàííûõ.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[out] status Ôëàãè ñòàòóñà --- íàáîð áèòîâ èç #t_x502_out_status_flags,
|
|
îáúåäèíåííûõ ÷åðåç ëîãè÷åñêîå “ÈËÈ”.
|
|
@return Êîä îøèáêè.
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_OutGetStatusFlags(t_x502_hnd hnd, uint32_t *status);
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Óñòàíîâêà ðàçìåðà áóôåðà äëÿ ñèíõðîííîãî ââîäà èëè âûâîäà
|
|
|
|
Ôóíêöèÿ óñòàíàâëèâàåò ðàçìåð áóôåðà, êîòîðûé èñïîëüçóåòñÿ äëÿ âðåìåííîãî
|
|
õðàíåíèÿ äàííûõ íà ïðèåì èëè íà ïåðåäà÷ó.
|
|
Ïðåäíàçíà÷åíà äëÿ ñëó÷àåâ, êîãäà ïîëüçîâàòåëÿ ïî êàêèì-ëèáî ïðè÷èíàì íå
|
|
óäîâëåòâîðÿåò ðàññ÷èòûâàåìîå áèáëèîòåêîé çíà÷åíèå ïî óìîë÷àíèþ.
|
|
|
|
Åñëè ôóíêöèåé X502_SetStreamBufSize áûë óñòàíîâëåí íå íóëåâîé ðàçìåð áóôåðà,
|
|
òî ýòîò ðàçìåð áóäåò èñïîëüçîâàòüñÿ íà÷èíàÿ ñ ïåðâîãî âûçîâà X502_StreamsStart èëè
|
|
X502_StreamsEnable è ïåðåñ÷èòûâàòüñÿ äàëåå íå áóäåò, ÷òîáû áèáëèîòåêà ñàìà
|
|
ðàññ÷èòàëà ðàçìåð áóôåðà íàäî âûçâàòü X502_SetStreamBufSize ñ íóëåâûì ðàçìåðîì
|
|
è îí ðàññ÷èòàåòñÿ ïðè ïåðâîì X502_StreamsStart èëè X502_StreamsEnable.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] ch Îïðåäåëÿåò, óñòàíàâëèâàåòñÿ ðàçìåð áóôåðà íà ââîä
|
|
èëè íà âûâîä (çíà÷åíèå èç #t_x502_stream_ch).
|
|
@param[in] size Ðàçìåð áóôåðà â 32-áèòíûõ îòñ÷åòàõ,
|
|
0 - áèáëèîòåêà áóäåò ñàìà ðàññ÷èòûâàòü çíà÷åíèå ïî óìîë÷àíèþ
|
|
@return Êîä îøèáêè.
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_SetStreamBufSize(t_x502_hnd hnd, uint32_t ch, uint32_t size);
|
|
|
|
/***************************************************************************//**
|
|
@brief Óñòàíîâêà øàãà ïðè ïåðåäà÷å ïîòîêà íà ââîä èëè âûâîä
|
|
|
|
Ôóíêöèÿ óñòàíàâëèâàåò øàã ïåðåäà÷è äàííûõ (øàã ãåíåðàöèè ïðåðûâàíèé
|
|
äëÿ PCI-Express èëè ðàçìåð çàïðîñà äëÿ USB) ïðè ïåðåäà÷å ñèíõðîííîãî
|
|
ïîòîêà äàííûõ íà ââîä èëè íà âûâîä.
|
|
Äàííàÿ ôóíêöèÿ ïðåäíàçíà÷åíà äëÿ ïîëüçîâàòåëåé, êîòîðûõ íå óñòðîèò
|
|
àâòîìàòè÷åñêè ðàññ÷èòûâàåìîå áèáëèîòåêîé çíà÷åíèå.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] dma_ch Îïðåäåëÿåò, øàã ïåðåäà÷è óñòàíàâëèâàåòñÿ íà ââîä
|
|
èëè íà âûâîä (çíà÷åíèå èç #t_x502_stream_ch).
|
|
@param[in] step Øàã ïðåðûâàíèÿ â 32-áèòíûõ îòñ÷åòàõ
|
|
@return Êîä îøèáêè.
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_SetStreamStep(t_x502_hnd hnd, uint32_t dma_ch, uint32_t step);
|
|
|
|
/** @} */
|
|
|
|
|
|
|
|
/***************************************************************************//**
|
|
@addtogroup func_dsp Ôóíêöèè äëÿ ðàáîòû ñ ñèãíàëüíûì ïðîöåññîðîì
|
|
@{
|
|
*******************************************************************************/
|
|
/***************************************************************************//**
|
|
@brief Çàãðóçêà ïðîøèâêè ñèãíàëüíîãî ïðîöåññîðà BlackFin
|
|
|
|
Ôóíêöèÿ çàãðóæàåò ïðîøèâêó ñèãíàëüíîãî ïðîöåññîðà èç óêàçàííîãî ôàéëà â
|
|
ïðîöåññîð è çàïóñêàåò åå, ïðîâåðÿåò ïðàâèëüíîñòü çàãðóçêè ïóòåì ïîëó÷åíèÿ
|
|
âåðñèè ïðîøèâêè (÷åðåç ñïåöèàëüíóþ êîìàíäó).
|
|
Ïðîøèâêà äîëæíà áûòü â áèíàðíîì ôîðìàòå LDR.
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] filename Èìÿ ôàéëà ñ çàãðóæàåìîé ïðîøèâêîé.
|
|
@return Êîä îøèáêè.
|
|
*****************************************************************************/
|
|
X502_EXPORT(int32_t) X502_BfLoadFirmware(t_x502_hnd hnd, const char* filename);
|
|
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Ïðîâåðêà, çàãðóæåíà ëè ïðîøèâêà BlackFin
|
|
|
|
Ôóíêöèÿ ïåðåäàåò êîìàíäû ïðîöåññîðó BlackFin äëÿ ïîëó÷åíèÿ âåðñèè ïðîøèâêè è
|
|
åå ñîñòîÿíèÿ. Óñïåøíîå âûïîëíåíèå êîìàíä ñâèäåòåëüñòâóåò î òîì, ÷òî â
|
|
BlackFin çàãðóæåíà äåéñòâèòåëüíàÿ ïðîøèâêà.
|
|
Êðîìå òîãî ïðîøèâêå ïåðåäàåòñÿ èíôîðìàöèÿ î ìîäóëå (íàëè÷èå îïöèé, âåðñèÿ
|
|
ÏËÈÑ è ò.ä.) äëÿ âíóòðåííåãî èñïîëüçîâàíèÿ.
|
|
 ñëó÷àå óñïåõà ìîäóëü ïåðåâîäèòñÿ â ðåæèì DSP.
|
|
|
|
Äàííàÿ ôóíêöèÿ ìîæåò ñëóæèòü äëÿ ïðîâåðêè, áûëà ëè çàãðóæåíà ïðîøèâêà ðàíüøå
|
|
(÷òîáû íå çàãðóæàòü ïîâòîðíî) èëè äëÿ ïðîâåðêè áûëà ëè îíà çàãðóæåíà ÷åðåç
|
|
JTAG-èíòåðôåéñ.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[out] version Åñëè óêàçàòåëü íå íóëåâîé, òî â äàííîé ïåðåìåííîé
|
|
âîçâðàùàåòñÿ âåðñèÿ ïðîøèâêè BlackFin â ñëó÷àå
|
|
óñïåøíîé ïðîâåðêè.
|
|
@return Êîä îøèáêè.
|
|
*****************************************************************************/
|
|
X502_EXPORT(int32_t) X502_BfCheckFirmwareIsLoaded(t_x502_hnd hnd, uint32_t *version);
|
|
|
|
/***************************************************************************//**
|
|
@brief ×òåíèå áëîêà äàííûõ èç ïàìÿòè ñèãíàëüíîãî ïðîöåññîðà
|
|
|
|
Ôóíêöèÿ ñ÷èòûâàåò áëîê äàííûõ íàïðÿìóþ èç ïàìÿòè ïðîöåññîðà. Ìîæåò áûòü
|
|
ïðî÷èòàíû äàííûå, êàê èç âíóòðåííåé ïàìÿòè (L1), òàê è èç âíåøíåé SDRAM.
|
|
Äëÿ âûïîëíåíèÿ ýòîé ôóíêöèè â BlackFin äîëæíà áûòü çàãðóæåíà åãî ïðîøèâêà.
|
|
|
|
Ôóíêöèÿ ïðåäíàçíà÷åíà â ïåðâóþ î÷åðåäü äëÿ ïîëüçîâàòåëåé, ïèøóùèõ ñâîþ
|
|
ïðîãðàììó äëÿ ñèãíàëüíîãî ïðîöåññîðà.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] addr Àäðåñ ïàìÿòè, íà÷èíàÿ ñ êîòîðîãî áóäåò ñ÷èòàí áëîê
|
|
äàííûõ.
|
|
@param[out] regs Ìàññèâ, â êîòîðûé áóäóò ñîõðàíåíî ïðî÷èòàííîå
|
|
ñîäåðæèìîå ïàìÿòè.
|
|
@param[in] size Êîëè÷åñòâî ñ÷èòûâàåìûõ 32-áèòíûõ ñëîâ.
|
|
@return Êîä îøèáêè.
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_BfMemRead(t_x502_hnd hnd, uint32_t addr, uint32_t* regs,
|
|
uint32_t size);
|
|
|
|
/***************************************************************************//**
|
|
@brief Çàïèñü áëîêà äàííûõ â ïàìÿòü ñèãíàëüíîãî ïðîöåññîðà
|
|
|
|
Ôóíêöèÿ çàïèñûâàåò áëîê äàííûõ íàïðÿìóþ â ïàìÿòè ïðîöåññîðà BlackFin. Áëîê
|
|
äàííûõ äîëæåí áûòü âñåãäà êðàòåí 8 32-áèòíûì ñëîâàì (32 áàéòàì).
|
|
Çàïèñü ìîæåò îñóùåñòâëÿòüñÿ êàê âî âíóòðåííþþ ïàìÿòü (L1), òàê è âî âíåøíþþ SDRAM.
|
|
Äëÿ âûïîëíåíèÿ ýòîé ôóíêöèè â BlackFin äîëæíà áûòü çàãðóæåíà åãî ïðîøèâêà.
|
|
|
|
Ôóíêöèÿ ïðåäíàçíà÷åíà â ïåðâóþ î÷åðåäü äëÿ ïîëüçîâàòåëåé, ïèøóùèõ ñâîþ
|
|
ïðîãðàììó äëÿ ñèãíàëüíîãî ïðîöåññîðà.
|
|
|
|
@note Ñëåäóåò áûòü îñòîðîæíûì, ò.ê. çàïèñü â îáëàñòü äàííûõ, èñïîëüçóåìóþ
|
|
ïðîãðàììîé ìîæåò ïðèâåñòè ê åå íåðàáîòîñïîñîáíîñòè.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] addr Àäðåñ ïàìÿòè, íà÷èíàÿ ñ êîòîðîãî áóäåò çàïèñàí áëîê
|
|
äàííûõ.
|
|
@param[out] regs Ìàññèâ ñ äàííûìè äëÿ çàïèñè â ñèãíàëüíûé ïðîöåññîð.
|
|
@param[in] size Êîëè÷åñòâî çàïèñûâàåìûõ äàííûõ â 32-áèòíûõ ñëîâàõ
|
|
(äîëæíî áûòü êðàòíî 8).
|
|
@return Êîä îøèáêè.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_BfMemWrite(t_x502_hnd hnd, uint32_t addr,
|
|
const uint32_t* regs, uint32_t size);
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Ïåðåäà÷à óïðàâëÿþùåé êîìàíäû ñèãíàëüíîìó ïðîöåññîðó
|
|
|
|
Ôóíêöèÿ ïðåäíàçíà÷åíà äëÿ ïåðåäà÷è ïîëüçîâàòåëüñêèõ óïðàâëÿþùèõ êîìàíä
|
|
ïðîöåññîðó äëÿ ïîëüçîâàòåëåé, ïèøóùèõ ñâîþ ïðîøèâêó BlackFin.
|
|
|
|
Óïðàâëåíèå ðàáîòîé ñèãíàëüíîãî ïðîöåññîðà øòàòíûì îáðàçîì îñóùåñòâëÿåòñÿ
|
|
÷åðåç óïðàâëÿþùèå êîìàíäû, êîòîðûå çàïèñûâàþòñÿ â ñïåöèàëüíóþ îáëàñòü
|
|
ïàìÿòè ñèãíàëüíîãî ïðîöåññîðà. Ñèãíàëüíûé ïðîöåññîð îáðàáàòûâàåò êîìàíäó
|
|
è ïî çàâåðøåíèþ çàïèñûâàåò â ýòó æå îáëàñòü ðåçóëüòàò.
|
|
|
|
Êîìàíäû äåëÿòüñÿ íà ñòàíäàðòíûå, êîòîðûå èñïîëüçóþòñÿ áèáëèîòåêîé x502api è
|
|
ðåàëèçîâàíû â øòàòíîé ïðîøèâêå ñèãíàëüíîãî ïðîöåññîðà è ïîëüçîâàòåëüñêèå,
|
|
êîòîðûå ïîëüçîâàòåëü ìîæåò îïðåäåëÿòü ïî ñâîåìó óñìîòðåíèþ.
|
|
Ïîëüçîâàòåëüñêèå êîìàíäû íà÷èíàþòñÿ ñ êîäà X502_BF_CMD_CODE_USER (0x8000).
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] cmd_code Êîä êîìàíäû - îïðåäåëÿåò, ÷òî çà êîìàíäà âûïîëíÿåòñÿ.
|
|
@param[in] par Ïàðàìåòð, ïåðåäàâàåìûé ñ êîìàíäîé (çíà÷åíèå çàâèñèò
|
|
îò êîäà êîìàíäû).
|
|
@param[in] snd_data Îïöèîíàëüíûå äàííûå, ïåðåäàâàåìûå âìåñòå ñ êîìàíäîé.
|
|
Åñëè äàííûå íå ïåðåäàþòñÿ, òî äîëæåí ïåðåäàâàòüñÿ
|
|
íóëåâîé óêàçàòåëü è snd_size = 0.
|
|
@param[in] snd_size Êîëè÷åñòâî 32-áèòíûõ ñëîâ, ïåðåäàâàåìûõ â snd_data
|
|
@param[out] rcv_data Ìàññèâ, â êîòîðûé áóäóò ïåðåäàíû äàííûå, âîçâðàùåííûå
|
|
ïðîöåññîðîì ïî çàâåðøåíèþ êîìàíäû. Åñëè äàííûå íå
|
|
äîëæíû âîçâðàùàòüñÿ, òî äîëæåí ïåðåäàâàòüñÿ íóëåâîé
|
|
óêàçàòåëü, à rcv_size = 0.
|
|
@param[in] rcv_size Êîëè÷åñòâî 32-áèòíûõ ñëîâ, êîòîðîå îæèäàåòñÿ, ÷òî
|
|
âåðíåò ïðîöåññîð ïî âûïîëíåíèþ êîìàíäû. Ìàññèâ
|
|
rcv_data äîëæåí áûòü ðàññ÷èòàí íà äàííîå êîëè÷åñòâî
|
|
ñëîâ.
|
|
@param[in] tout Òàéìàóò â òå÷åíèè êîòîðîãî áóäåò îæèäàòüñÿ, êîãäà
|
|
ïðîöåññîð çàâåðøèò âûïîëíåíèå êîìàíäû. Ôóíêöèÿ
|
|
âîçâðàòèò óïðàâëåíèå ëèáî ïî çàâåðøåíèþ êîìàíäû,
|
|
ëèáî ïî òàéìàóòó.
|
|
@param[out] recvd_size Åñëè íå ÿâëÿåòñÿ íóëåâûì óêàçàòåëåì, òî â ýòó
|
|
ïåðåìåííóþ áóäåò ñîõðàíåíî êîëè÷åñòâî 32-áèòíûõ ñëîâ,
|
|
êîòîðîå ðåàëüíî âåðíóë ïðîöåññîð ïîñëå âûïîëíåíèÿ
|
|
êîìàíäû (ïðîöåññîð èìååò ïðàâî âåðíóòü ìåíüøå äàííûõ,
|
|
÷åì çàïðàøèâàëîñü â rcv_size).
|
|
@return Êîä îøèáêè. Åñëè ïðîöåññîð âûïîëíèë êîìàíäó ñ íåíóëåâûì
|
|
êîäîì çàâåðøåíèÿ, òî ýòîò êîä è áóäåò âîçâðàùåí
|
|
ôóíêöèåé.
|
|
*******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_BfExecCmd(t_x502_hnd hnd, uint16_t cmd_code, uint32_t par,
|
|
const uint32_t* snd_data, uint32_t snd_size,
|
|
uint32_t* rcv_data, uint32_t rcv_size,
|
|
uint32_t tout, uint32_t* recvd_size);
|
|
/** @} */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/***************************************************************************//**
|
|
@addtogroup func_flash Ôóíêöèè äëÿ ðàáîòû ñ Flash-ïàìÿòüþ ìîäóëÿ
|
|
@{
|
|
*******************************************************************************/
|
|
|
|
/***************************************************************************//**
|
|
@brief ×òåíèå áëîêà äàííûõ èç Flash-ïàìÿòè
|
|
|
|
Ôóíêöèÿ ñ÷èòûâàåò ìàññèâ äàííûõ èç Flash-ïàìÿòè ìîäóëÿ â ìàññèâ, ïåðåäàííûé
|
|
ïîëüçîâàòåëåì. Äëÿ ñ÷èòûâàíèÿ íå íóæíî ñïåöèàëüíîå ðàçðåøåíèå - îíî äîñòóïíî
|
|
âñåãäà.
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] addr Àäðåñ íà÷àëà áëîêà.
|
|
@param[out] data Ìàññèâ, êóäà áóäóò ñîõðàíåíû ñ÷èòàííûå äàííûå
|
|
(äîëæåí áûòü íå ìåíüøå size áàéò).
|
|
@param[in] size Êîëè÷åñòâî áàéò äëÿ ÷òåíèÿ.
|
|
@return Êîä îøèáêè.
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_FlashRead(t_x502_hnd hnd, uint32_t addr, uint8_t* data,
|
|
uint32_t size);
|
|
/***************************************************************************//**
|
|
@brief Çàïèñü áëîêà äàííûõ âî Flash-ïàìÿòü ìîäóëÿ
|
|
|
|
Ôóíêöèÿ çàïèñûâàåò ïåðåäàííûé ìàññèâ äàííûõ âî Flash-ïàìÿòü ìîäóëÿ.
|
|
Ýòà îáëàñòü äîëæíà áûòü ïðåäâàðèòåëüíî ñòåðòà ñ ïîìîùüþ X502_FlashErase() è
|
|
äî íà÷àëà èçìåíåíèÿ äîëæíà áûòü âûçâàíà ôóíêöèÿ X502_FlashWriteEnable(),
|
|
÷òîáû ðàçðåøèòü ëþáîå èçìåíåíèå ñîäåðæèìîãî Flash-ïàìÿòè.
|
|
Ïîëüçîâàòåëþ äëÿ çàïèñè äîñòóïíû òîëüêî ïåðâûå #X502_FLASH_USER_SIZE áàéò
|
|
Flash-ïàìÿòè.
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] addr Àäðåñ íà÷àëà áëîêà.
|
|
@param[in] data Ìàññèâ ñ çàïèñûâàåìûìè äàííûìè (äîëæåí áûòü íå ìåíüøå
|
|
size áàéò).
|
|
@param[in] size Êîëè÷åñòâî áàéò äëÿ çàïèñè.
|
|
@return Êîä îøèáêè.
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_FlashWrite(t_x502_hnd hnd, uint32_t addr,
|
|
const uint8_t* data, uint32_t size);
|
|
/***************************************************************************//**
|
|
@brief Ñòèðàíèå áëîêà âî Flash-ïàìÿòè
|
|
|
|
Ôóíêöèÿ ñòèðàåò áëîê âî Flash-ïàìÿòè ìîäóëÿ (âñå ÿ÷åéêè áóäóò ÷èòàòüñÿ êàê
|
|
0xFF). Àäðåñ è ðàçìåð äîëæíû áûòü êðàòíû 4096 áàéò!
|
|
Ïåðåä âûçîâîì ýòîé ôóíêöèè äîëæíà áûòü ðàçðåøåíà çàïèñü
|
|
â ïîëüçîâàòåëüñêóþ îáëàñòü ñ ïîìîùüþ X502_FlashWriteEnable().
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] addr Àäðåñ íà÷àëà áëîêà (äîëæåí áûòü êðàòåí 4K).
|
|
@param[in] size Êîëè÷åñòâî áàéò äëÿ ñòèðàíèÿ (êðàòíî 4K).
|
|
@return Êîä îøèáêè.
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_FlashErase(t_x502_hnd hnd, uint32_t addr, uint32_t size);
|
|
/***************************************************************************//**
|
|
@brief Ðàçðåøåíèå çàïèñè â ïîëüçîâàòåëüñêóþ îáëàñòü Flash-ïàìÿòè
|
|
|
|
Ôóíêöèÿ ðàçðåøàåò çàïèñü â ïîëüçîâàòåëüñêóþ îáëàñòü Flash-ïàìÿòè (ïåðâûå
|
|
#X502_FLASH_USER_SIZE áàéò). Äîëæíà áûòü âûçâàíà äî òîãî, êàê
|
|
ìîæíî áóäåò èñïîëüçîâàòü X502_FlashErase() è X502_FlashWrite() äëÿ èçìåíåíèÿ
|
|
ñîäåðæèìîãî ïîëüçîâàòåëüñêîé îáëàñòè ïàìÿòè. Ïîñëå çàâåðøåíèÿ èçìåíåíèé
|
|
ñëåäóåò âûçâàòü X502_FlashWriteDisable().
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@return Êîä îøèáêè.
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_FlashWriteEnable(t_x502_hnd hnd);
|
|
/***************************************************************************//**
|
|
@brief Çàïðåò çàïèñè â ïîëüçîâàòåëüñêóþ îáëàñòü Flash-ïàìÿòè
|
|
|
|
Ôóíêöèÿ çàïðåùàåò çàïèñü â ïîëüçîâàòåëüñêóþ îáëàñòü Flash-ïàìÿòè ìîäóëÿ
|
|
(ïåðâûå #X502_FLASH_USER_SIZE áàéò). Äîëæíà áûòü âûçâàíà ïîñëå òîãî, êàê
|
|
íóæíûå äàííûå â ïîëüçîâàòåëüñêîé îáëàñòè áûëè èçìåíåíû ñ ïîìîùüþ
|
|
X502_FlashErase() è X502_FlashWrite(), ÷òîáû çàùèòèòü ïîëüçîâàòåëüñêóþ
|
|
îáëàñòü îò ñëó÷àéíîé èçìåíåíèÿ â äàëüíåéøåì.
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@return Êîä îøèáêè.
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_FlashWriteDisable(t_x502_hnd hnd);
|
|
|
|
/** @} */
|
|
|
|
|
|
|
|
|
|
|
|
/***************************************************************************//**
|
|
@addtogroup func_misc Äîïîëíèòåëüíûå âñïîìîãàòåëüíûå ôóíêöèè
|
|
@{
|
|
*******************************************************************************/
|
|
/**************************************************************************//**
|
|
@brief Ïîëó÷èòü âåðñèþ áèáëèîòåêè
|
|
|
|
Ôóíêöèÿ âîçâðàùàåò âåðñèþ áèáëèîòåêè x502api.
|
|
Âåðñèÿ âîçâðàùàåòñÿ â âèäå 32-áèòíîãî ÷èñëà.
|
|
Ñòðîêîâîå ïðåäñòàâëåíèå âîçâðàùåííîé âåðñèè --- ÷åòûðå ÷èñëà,
|
|
ñòàðøåå ñîîòâåòñòâóåò ñòàðøåìó áàéòó, ìëàäøåå --- ìëàäøåìó.
|
|
|
|
Ñòàðøèé áàéò --- ìàæîðíàÿ âåðñèÿ, âòîðîé ïî ñòàðøèíñòâó áàéò --- ìèíîðíàÿ,
|
|
òðåòèé --- ðåâèçèÿ, ÷åòâåðòûé --- íîìåð ñáîðêè (íå èñïîëüçóåòñÿ --- âñåãäà 0)
|
|
|
|
@return 32-áèòíîå ÷èñëî, ïðåäñòàâëÿþùåå ñîáîé âåðñèþ áèáëèîòåêè
|
|
*****************************************************************************/
|
|
X502_EXPORT(uint32_t) X502_GetLibraryVersion(void);
|
|
|
|
/***************************************************************************//**
|
|
@brief Ïîëó÷åíèå ñòðîêè îá îøèáêå
|
|
|
|
Ôóíêöèÿ âîçâðàùàåò ñòðîêó, ñîîòâåòñòâóþùóþ ïåðåäàííîìó êîäó îøèáêè.
|
|
 íàñòîÿùåå âðåìÿ âîçâðàùàåòñÿ âñåãäà ðóññêàÿ âåðñèÿ ñòðîêè (âîçìîæíî â
|
|
áóäóùåì áóäåò âîçìîæíîñòü ñìåíèòü ÿçûê ãëîáàëüíîé ôóíêöèåé).
|
|
|
|
@note Ñëåäóåò ó÷åñòü, ÷òî â ÎÑ Windows ñòðîêà âîçâðàùàåòñÿ â
|
|
ñòàíäàðòíîé äëÿ Windows êîäèðîâêå CP1251, â òî âðåìÿ êàê â Linux
|
|
èñïîëüçóåòñÿ êîäèðîâêà UTF-8.
|
|
@param[in] err Êîä îøèáêè, äëÿ êîòîðîãî íóæíî âåðíóòü ñòðîêó.
|
|
@return Óêàçàòåëü íà ñòðîêó, ñîîòâåòñòâóþùóþ êîäó îøèáêè
|
|
******************************************************************************/
|
|
X502_EXPORT(const char*) X502_GetErrorString(int32_t err);
|
|
|
|
/***************************************************************************//**
|
|
@brief Ìîðãàíèå ñâåòîäèîäîì
|
|
|
|
Ïðè âûçîâå ýòîé ôóíêöèè, åñëè íå çàïóùåí ñèíõðîííûé ââîä/âûâîä, ïðîèñõîäèò
|
|
êðàòêîâðåìåííîå çàòóõàíèå êðàñíîãî öâåòà ñâåòîäèîäà íà ïåðåäíåé ïàíåëè
|
|
L-502 èëè ñâåòîäèîäà LED1 ìîäóëÿ E-502.
|
|
Ìîæåò áûòü èñïîëüçîâàíà äëÿ âèçóàëüíîé èäåíòèôèêàöèè ìîäóëÿ ïîñëå åãî
|
|
îòêðûòèÿ.
|
|
|
|
Ïðè çàïóùåííîì ñèíõðîííîì ââîäå/âûâîäå äàííûé ñâåòîäèîä âñåãäà
|
|
ãîðèò çåëåíûì öâåòîì è äàííàÿ ôóíêöèÿ íå âëèÿåò íà åãî ñîñòîÿíèå.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@return Êîä îøèáêè.
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_LedBlink(t_x502_hnd hnd);
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Óñòàíîâêà ïîäòÿãèâàþùèõ ðåçèñòîðîâ íà âõîäíûõ ëèíèÿõ
|
|
|
|
Ôóíêöèÿ ìîæåò èñïîëüçîâàòüñÿ äëÿ âêëþ÷åíèÿ ïîäòÿãèâàþùèõ ðåçèñòîðîâ íà
|
|
öèôðîâûõ âõîäàõ. Äëÿ ðàçíûõ ìîäóëåé ïîäòÿãèâàþùèå ðåçèñòîðû ðåàëèçîâàíû
|
|
íà ðàçíûõ âõîäàõ. Äëÿ ìîäóëåé E-502 è L-502 ìîæíî âêëþ÷àòü èõ íà ëèíèÿõ SYN1 è SYN2.
|
|
Äëÿ L-502 ìîæíî îòäåëüíî çàäàâàòü âêëþ÷åíû èëè îòêëþ÷åíû ïîäòÿæêè
|
|
íà ìëàäøåé èëè ñòàðøåé ïîëîâèíå öèôðîâûõ ëèíèé. Äëÿ E-502 ìîæíî âêëþ÷èòü
|
|
ïîäòÿãèâàþùèå ê íóëþ ðåçèñòîðû íà âõîäàõ ìåæìîäóëüíîé ñèíõðîíèçàöèè.
|
|
Äëÿ E-16 ëèíèé TRIG è INT ìîãóò áûòü êàê âõîäîì, òàê è âûõîäîì äëÿ ñèãíàëîâ START è CONV.
|
|
|
|
Íà íå óêàçàííûõ ëèíèÿõ ïîäòÿãèâàþùèå ðåçèñòîðû áóäóò îòêëþ÷åíû,
|
|
åñëè îíè áûëè âêëþ÷åíû äî ýòîãî.
|
|
|
|
Ïðè âêëþ÷åíèè ïèòàíèÿ âñå ïîäòÿãèâàþùèå ðåçèñòîðû îòêëþ÷åíû.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] pullups Ôëàãè (èç #t_x502_pullups), îïðåäåëÿþùèå, íà êàêèõ
|
|
ëèíèÿõ âêëþ÷åíû ïîäòÿãèâàþùèå ðåçèñòîðû.
|
|
@return Êîä îøèáêè.
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_SetDigInPullup(t_x502_hnd hnd, uint32_t pullups);
|
|
|
|
/***************************************************************************//**
|
|
@brief Ïîëó÷åíèå ïàðàìåòðà pullups äëÿ ìîäóëÿ
|
|
|
|
Ïîëó÷åíèå òåêóùåãî ñîñòîÿíèÿ ïàðàìåòðà pullups èç ìîäóëÿ. Ðåàëèçîâàíî òîëüêî äëÿ E16
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[out] pullups Ôëàãè (èç #t_x502_pullups), îïðåäåëÿþùèå, íà êàêèõ
|
|
ëèíèÿõ âêëþ÷åíû ïîäòÿãèâàþùèå ðåçèñòîðû.
|
|
@return Êîä îøèáêè.
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_GetDigInPullup(t_x502_hnd hnd, uint32_t *pullups);
|
|
|
|
/***************************************************************************//**
|
|
@brief Ïðîâåðêà ïîääåðæêè ìîäóëåì çàäàííîé âîçìîæíîñòè
|
|
|
|
Ôóíêöèÿ èñïîëüçóåòñÿ äëÿ ïðîâåðêè, ïîääåðæèâàåòñÿ ëè îïðåäåëåííàÿ âîçìîæíîñòü
|
|
èç #t_x502_features äëÿ äàííîãî ìîäóëÿ ñ òåêóùèìè âåðñèÿìè ïðîøèâîê.
|
|
|
|
Åñëè âîçìîæíîñòü ïîääåðæèâàåòñÿ, òî áóäåò âîçâðàùåí êîä #X502_ERR_OK.
|
|
|
|
Äàííàÿ ôóíêöèÿ äîñòóïíà â áèáëèîòåêå âåðñèè 1.1.6 èëè âûøå.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] feature Çíà÷åíèå èç #t_x502_features, îïðåäåëÿþùèå, êàêóþ
|
|
âîçìîæíîñòü íåîáõîäèìî ïðîâåðèòü.
|
|
@return Åñëè âîçìîæíîñòü ïîääåðæèâàåòñÿ, òî âîçâðàùàåòñÿ
|
|
#X502_ERR_OK, èíà÷å --- êîä îøèáêè
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_CheckFeature(t_x502_hnd hnd, uint32_t feature);
|
|
|
|
/***************************************************************************//**
|
|
@brief Ýêñïåðèìåíòàëüíàÿ ôóíêöèÿ. Èãíîðèðîâàòü îøèáêó ñ çàäàííûì íîìåðîì
|
|
|
|
Ôóíêöèÿ èñïîëüçóåòñÿ äëÿ óñòàíîâêè íîìåðà îøèáêè, êîòîðóþ API áóäåò èãíîðèðîâàòü
|
|
è ïðîäîëæèò ðàáîòó êàê åñëè áû ýòîé îøèáêè íå áûëî.
|
|
Äàííàÿ ôóíêöèÿ áóäåò ïîëåçíà äëÿ òåñòîâ ñàìîãî API èëè ýêñïåðèìåíòîâ ñ íèì.
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] err Çíà÷åíèå èç #t_x502_errs, êàêóþ îøèáêó èãíîðèðîâàòü.
|
|
Ðåàëèçîâàíî òîëüêî äëÿ X502_ERR_STREAM_IS_RUNNING
|
|
|
|
@return Êîä îøèáêè
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_SuppressError(t_x502_hnd hnd, int32_t err);
|
|
|
|
|
|
X502_EXPORT(int32_t) X502_SetAfcCoef(t_x502_hnd hnd, double Fd, double SigFreq, double *K, uint32_t size, int enable);
|
|
X502_EXPORT(int32_t) X502_GetAfcCoef(t_x502_hnd hnd, double *Fd, double *SigFreq, double *K, uint32_t size, int *enable);
|
|
|
|
|
|
/***************************************************************************//**
|
|
@brief Ôóíêöèÿ çàäàíèÿ ïàðàìåòðîâ ìîäóëÿ
|
|
|
|
Ôóíêöèÿ èñïîëüçóåòñÿ äëÿ óñòàíîâêè ïàðàìåòðîâ ìîäóëÿ
|
|
 íîâûõ âåðñèÿõ api ïàðàìåòðû ìîãóò äîáàâëÿòüñÿ
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] param Çíà÷åíèå èç #t_x502_params, íîìåð óñòàíàâëèâàåìîãî ïàðàìåòðà
|
|
@param[in] value Çíà÷åíèå ïàðàìåòðà
|
|
|
|
@return Êîä îøèáêè
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) X502_SetParam(t_x502_hnd hnd, uint32_t param, void *value);
|
|
|
|
/***************************************************************************//**
|
|
@brief Ôóíêöèÿ çàäàíèÿ ïàðàìåòðîâ öèôðîâîãî ââîäà äëÿ ìîäóëÿ LTA37
|
|
|
|
@param[in] hnd Îïèñàòåëü ìîäóëÿ.
|
|
@param[in] echo_en Âêëþ÷åíèå ðåæèìà ýõî êàíàëà, äàííûå íà ââîäå - êîä âûâîäà íà ýõî êàíàë, èíà÷å ââîä öèôðîâûõ âõîäîâ DI
|
|
@param[in] echo_ch Íîìåð êàíàëà èç äàííûõ êîòîðîãî áåðóòñÿ ýõî äàííûå
|
|
@param[in] di_ch_en_mask Ìàñêà âêëþ÷åííûõ êàíàëîâ â ïîòîêå ââîäà
|
|
|
|
@return Êîä îøèáêè
|
|
******************************************************************************/
|
|
X502_EXPORT(int32_t) LTA37_SetDIParam(t_x502_hnd hnd, uint32_t echo_en, uint32_t echo_ch, uint32_t di_ch_en_mask);
|
|
|
|
/** @} */
|
|
/** @} */
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
|
|
#endif // X502API_H
|