⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 include.txt

📁 一个使用DSP的数字示波器的例子
💻 TXT
📖 第 1 页 / 共 2 页
字号:


// overall constants

#define MAXCHAN     8          // current maximum number of channels

// CONVERSIONINFO structure used in high-level DSAcquireWvfrmFile and 
DSGenerateWvfrmFile calls

typedef struct {

// NOTES:

// 1) entire structure should be initialized to zero first, so that 
default values can take
//    effect for parameters not used

// 2) Current value in DSSetWaveformPath is used for waveform filename, 
unless explicit
//    path information is found in the filename

// 3) TrigDelay parameter not yet operational.


// basic information

    char      szFilename[144];   // [path]filename of file being acquired/generated
    short int NumChan;
    short int ChanList[MAXCHAN]; // channel list, maps physical channels to 
waveform traces
    float     Fs;                // sampling rate (in Hz)
    DWORD     NumSamples;        // number of samples to acquire/generate
    DWORD     DAStartSample;     // starting sample for D/A output operations
    char      szGainList[41];    // string specifying gain list for input channels; 
can contain ',' and '-' other characters to specify lists and ranges
    long      Offset;            // offset added to data (in A/D counts, can be +/-)
    BOOL      DALooping;         // enables/disables continuous D/A looping; 
0 or 1, valid only during generation (output)
    BOOL      Monitor;           // enables/disables D/A loopback when recording; 
0 or 1, valid only during acquisition (input)
    BOOL      FileSplit;         // 1 enables A/D file-splitting for multichannel, 
0 disables
    BOOL      StoreOnAbort;      // 1 == store current wavefrom data on abort
    DWORD     Frmsiz;            // framesize (stored in waveform header; used for 
post-processing only)

// real-time digital filter information

    char      szFilter1[13];     // filename of real-time digital filter file; 
can contain '/' character
    char      szFilter2[13];     // to allow dual-filter entry (filter files must 
be located on same path as waveform)

// trigger information

    WORD      TrigMode;          // trigger mode (0 = internal, 1 = external)
    long      TrigLevel;         // trigger level (in A/D counts, can be +/-)
    float     TrigDelay;         // delay from trigger relative to data (in sec, 
can be +/-)
    short int NumTrigChan;
    short int TrigChanList[MAXCHAN]; // trigger channel list

// stimulus & response information

    char      szStimName[13];    // name of stimulus output file; used only for 
DSStimRespMeasure function (must be located on same path as waveform)
    char      szStimMode[4];     // controls stimulus usage 
in Stimulus/Response function
    long      StimDelay;         // delay from stimulus onset to start of record 
(+/- value)

} CONVERSIONINFO;

typedef CONVERSIONINFO FAR* PCONVERSIONINFO;


// DLL call prototypes

#ifdef __cplusplus
extern "C" {
#endif

// DLL error handling and status

short int WINAPI DSGetHWLibErrorStatus      (void);


// board initialization and control functions (all processors simultaneous)

HBOARD    WINAPI DSAssignBoard              (HENGINE, LPCSTR, UINT, WORD, WORD);
UINT      WINAPI DSFreeBoard                (HBOARD);
UINT      WINAPI DSGetBoardInfo             (HBOARD, UINT);

UINT      WINAPI DSInitBoard                (HBOARD);
UINT      WINAPI DSLoadFileBoard            (HBOARD, LPCSTR);
UINT      WINAPI DSResetBoard               (HBOARD);
UINT      WINAPI DSRunBoard                 (HBOARD);
UINT      WINAPI DSDisableBoard             (HBOARD);
UINT      WINAPI DSHoldBoard                (HBOARD);


// individual processor initialization and control functions

UINT      WINAPI DSLoadFileProcessor        (HBOARD, LPCSTR, WORD);
UINT      WINAPI DSResetProcessor           (HBOARD, WORD);
UINT      WINAPI DSRunProcessor             (HBOARD, WORD);
UINT      WINAPI DSHoldProcessor            (HBOARD, WORD);


// memory and variable transfers, IEEE conversion

UINT      WINAPI DSPutMem                   (HBOARD, UINT, DWORD, UINT, 
void far*, DWORD);
UINT      WINAPI DSGetMem                   (HBOARD, UINT, DWORD, UINT, 
void far*, DWORD);
UINT      WINAPI DSPutDSProperty            (HBOARD, DWORD, DWORD);
DWORD     WINAPI DSGetDSPProperty           (HBOARD, DWORD);

UINT      WINAPI DSIEEEToDSP                (HBOARD, UINT, void far*, 
void far*, DWORD);
UINT      WINAPI DSDSPToIEEE                (HBOARD, UINT, void far*, 
void far*, DWORD);


// wait-for-buffer and wait-for-flag

UINT      WINAPI DSWaitForBuffer            (HBOARD, short int, DWORD, UINT);
UINT      WINAPI DSWaitForFlag              (HBOARD, short int, DWORD, UINT);
UINT      WINAPI DSCancelWaitBuffer         (HBOARD, short int);
UINT      WINAPI DSCancelWaitFlag           (HBOARD, short int);

DWORD     WINAPI DSGetBufferInfo            (short int, UINT);
DWORD     WINAPI DSGetFlagInfo              (short int, UINT);


// interrogate board system parameters

WORD      WINAPI DSGetBoardClass            (HBOARD);
DWORD     WINAPI DSCalcSampFreq             (HBOARD, float, short int, 
short int far*, float far*);
DWORD     WINAPI DSGetMemSize               (HBOARD, WORD);
UINT      WINAPI DSGetMemArch               (HBOARD);
WORD      WINAPI DSGetWordLength            (HBOARD);
DWORD     WINAPI DSGetSymbolAddress         (HBOARD, LPCSTR, LPCSTR);


// get/set board base addresses, bus type, registers, etc.

WORD      WINAPI DSGetBoardBaseAddr         (HBOARD, UINT);
UINT      WINAPI DSSetBoardBaseAddr         (HBOARD, UINT, WORD);

UINT      WINAPI DSGetBoardBusType          (HBOARD);
UINT      WINAPI DSSetBoardBusType          (HBOARD, UINT);

WORD      WINAPI DSReadBoardReg             (HBOARD, WORD);
UINT      WINAPI DSWriteBoardReg            (HBOARD, WORD, WORD);

UINT      WINAPI DSRestoreBoardDefaults     (HBOARD);


// high-level functions

UINT      WINAPI DSAcquireWvfrmFile         
(HBOARD, PCONVERSIONINFO, UINT);
UINT      WINAPI DSGenerateWvfrmFile        (HBOARD, PCONVERSIONINFO, UINT);

#ifdef __cplusplus
}
#endif


// error codes

#define DSDSPFILENOTFOUND            11
#define DSHARDWARENOTRESPONDING      10


#define DSINVALIDBOARDHANDLE         -50
#define DSCOULDNOTOPENTEMPLATEFILE   -51
#define DSCOULDNOTCREATESOURCEFILE   -52
#define DSCREATINGENGINEPROGRAMERROR -53
#define DSUNABLETOALLOCATEMEMORY     -54
#define DSUNABLETOREADTEMPLATEFILE   -55
#define DSERRORINDATAPARAM           -56
#define DSBOARDDOESNOTSUPPORTCALL    -57
#define DSINVALIDWORDLENGTH          -58
#define DSINVALIDMEMORYTYPE          -59
#define DSUNKNOWNCALLCLASSIFICATION  -60
#define DSINVALIDBOARDDESIGNATOR     -61
#define DSBOARDNOTINHWSETUPFILE      -62
#define DSALLBOARDHANDLESALLOCATED   -63
#define DSINVALIDPROCESSORNUMBER     -64


// AssignBoard constants

#define DS_AB_PCXT                   0   // bus types
#define DS_AB_PCAT                   0
#define DS_AB_ENABLE80X86INST        1


// memory types returned by GetMemArch

#define DS_GMA_LINEAR                1
#define DS_GMA_HARVARD               2
#define DS_GMA_VECTOR                3


// memory types for DSGetMem and DSPutMem

#define DS_GM_VECTOR_DATA_X          1   // vector "X" data memory
#define DS_GM_VECTOR_DATA_Y          2   // vector "Y" data memory
#define DS_GM_LINEAR_DATA_RT         3   // linear data memory, real-time 
(useful for some TMS320 series board only)
#define DS_GM_LINEAR_DATA            4   // linear data memory
#define DS_GM_LINEAR_PROGRAM         5   // linear program memory


// bit-width constants for DSGetMem and DSPutMem

#define DS_GM_SIZE8                  1   // 8-bits
#define DS_GM_SIZE16                 2   // 16-bits
#define DS_GM_SIZE24                 3   // 24-bits
#define DS_GM_SIZE32                 4   // 32-bits


// constants for DSWaitForBoardBuffer and DSWaitForBoardFlag

#define DS_WFB_POLLED                0   // polled notification
#define DS_WFB_INTERRUPT             1   // interrupt-driven notification
#define DS_WFB_SYNC                  16  // synchronous operation bit:  
combine with type to wait for buffer to complete


// constants for DSGetBoardBaseAddr and DSSetBoardBaseAddr

#define DS_GBBA_IOADDR               0   // I/O base address
#define DS_GBBA_MEMADDR              1   // memory base address


// constants for DSGetBoardInfo

#define DS_GBI_ENGINEHANDLE          0
#define DS_GBI_DRIVERID              1
#define DS_GBI_CALLSALLOWED          2
#define DS_GBI_HWMGRENTRYINDEX       3
#define DS_GBI_DSPWORDLENGTH         4   // result return in bits


// constants for DSDSPToIEEE and DSIEEEToDSP

#define DS_DTI_IEEESIZE32            4
#define DS_DTI_IEEESIZE64            8


// constants for DSAcquireWvfrmFile and DSGenerateWvfrmFile

#define DS_AWF_ASYNC                 0   // asynchronous operation (default)
#define DS_AWF_SYNC                  1   // synchronous operation 
(wait for file to complete)


// identifiers which can be used in DSPutDSPProperty and DSGetDSPProperty calls; 
see Signalogic
// DSP Software Reference Guide, Hypersignal DSP Source Code Variables and Flags

#define DSP_BOARDCLASS      0x42F   // board classification
#define DSP_OPMODE          0x430   // operating mode
#define DSP_BUSYFLG         0x431   // DSP busy flag
#define DSP_OVERFLOW        0x432   // overflow flag
#define DSP_MINVAL          0x433   // minimum value in acquisition or processing
#define DSP_FFTORD          0x434   // FFT order
#define DSP_FRMSIZ          0x435   // Framesize
#define DSP_FFTLEN          0x436   // FFT length
#define DSP_MAXVAL          0x437   // maximum value in acquisition or 
processing buffer
#define DSP_RIFLG           0x438   // real/imaginary Flag
#define DSP_COUPLIST        0x439   // analog input coupling list
#define DSP_GAINLIST        0x43A   // analog input gain list
#define DSP_FSMODE          0x43B   // sampling rate clock generator mode value
#define DSP_TRIGLEVEL       0x43C   // analog input trigger level
#define DSP_BUFLEN          0x43D   // acquisition or 
processing buffer length
#define DSP_HOSTBUFNUM      0x43E   // current host buffer flag
#define DSP_BUFNUM          0x43F   // current DSP buffer flag
#define DSP_SCALEIN         0x440   // analog input digital scale factor
#define DSP_OFFSETIN        0x441   // analog input digital offset
#define DSP_WINSCL          0x442   // frequency domain window scaling factor
#define DSP_PHZREQ          0x443   // hase data required
#define DSP_DUPFLG          0x444   // duplicate trace flag
#define DSP_FILTADDR1       0x445   // filter 1 coefficient address
#define DSP_CHANLIST        0x446   // analog input channel list
#define DSP_TRIGCHANLIST    0x447   // analog input trigger channel list
#define DSP_SCALEOUT        0x448   // analog output digital scaling factor
#define DSP_OFFSETOUT       0x449   // analog output digital offset
#define DSP_FILTADDR2       0x44A   // filter 2 Coefficient Address
#define DSP_MAXVALREAL      0x44B   // real component of complex data maximum value
#define DSP_MAXVALIMAG      0x44C   // imag component of complex data maximum value
#define DSP_FILTLEN1        0x44D   // filter 1 length
#define DSP_FILTLEN2        0x44E   // filter 2 length
#define DSP_LOGFLG1         0x44F   // log magnitude flag, trace 1
#define DSP_LOGFLG2         0x450   // log magnitude flag, trace 2
#define DSP_FILTTYPE1       0x451   // filter type, trace 1
#define DSP_FSVALUE         0x452   // sampling rate value (in Hz)
#define DSP_PWRFLG1         0x453   // power spectra flag, trace 1
#define DSP_PWRFLG2         0x454   // power spectra flag, trace 2
#define DSP_PWRCOEFFA       0x455   // power spectra exponential filter coefficient a
#define DSP_PWRCOEFFB       0x456   // power spectra exponential filter coefficient b
#define DSP_XFERFLG1        0x457   // transfer function flag, trace 1
#define DSP_XFERFLG2        0x458   // transfer function flag, trace 2
#define DSP_MAXVAL1         0x459   // maximum amplitude, trace 1
#define DSP_MAXVAL2         0x45A   // maximum amplitude, trace 2
#define DSP_NUMCHAN         0x45B   // number of analog input or output channels
#define DSP_BOARDSUBCLASS   0x45C   // board subclassification
#define DSP_TIMDATAADDR     0x45D   // time domain data base address
#define DSP_RIDATAADDR      0x45E   // complex data base address
#define DSP_MAGDATAADDR     0x45F   // magnitude/phase data base address
#define DSP_WINDATAADDR     0x460   // window data base address
#define DSP_MONITORFLG      0x461   // monitor mode flag
#define DSP_IOMODULE        0x462   // I/O module indicator
#define DSP_SERIALCTRL      0x463   // serial port control for special cases
#define DSP_LOGCOEFFA       0x464   // log magnitude scaling coefficient a
#define DSP_LOGCOEFFB       0x465   // log magnitude scaling coefficient b
#define DSP_ADCOUNT         0x466   // acquistion delay counter
#define DSP_DACOUNT         0x467   // stimulus delay counter
#define DSP_STMDATAADDR     0x468   // stimulus data base Address
#define DSP_STMBUFLEN       0x469   // stimulus data buffer length
#define DSP_FILTTYPE2       0x46A   // filter type, trace 2
#define DSP_FILTQUANT       0x46B   // filter quantization
#define DSP_FILTUPDFLG      0x46C   // filter coefficient update flag
#define DSP_CODECCTRL1      0x46D   // CODEC control word 1
#define DSP_CODECCTRL2      0x46E   // CODEC control word 2

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -