diff --git a/+adi/+AD7380/Rx.m b/+adi/+AD7380/Rx.m index f8ea412..8b9887a 100644 --- a/+adi/+AD7380/Rx.m +++ b/+adi/+AD7380/Rx.m @@ -1,7 +1,8 @@ -classdef Rx < adi.common.Rx & matlabshared.libiio.base & adi.common.Attribute +classdef Rx < adi.common.Rx & adi.common.RxTx ... + & adi.AD738X.Base % AD7380 Precision ADC Class - % - % adi.AD7380.Rx Receives data from the AD7380 ADC. + % + % adi.AD7380.Rx Receives data from the AD7380 ADC % The adi.AD7380.Rx System object is a signal source that can receive % data from the AD7380. % @@ -10,161 +11,18 @@ % % `AD7380 Datasheet `_ - properties (Nontunable) - % SampleRate Sample Rate - % Baseband sampling rate in Hz, specified as a scalar - % in samples per second. Options are: - % '256000','128000','64000','32000','16000','8000','4000', - % '2000','1000' - SampleRate = '4000000' - SamplesPerFrame = 1024 - end - - properties (Hidden) - % Number of frames or buffers of data to capture - FrameCount = 1 - end - - % Channel names - properties (Nontunable, Hidden, Constant) - channel_names = { - 'voltage0' - 'voltage1' - } - Type = 'Rx' - end - - % isOutput - properties (Hidden, Nontunable, Access = protected) - isOutput = false - end - - properties (Constant, Hidden) - SampleRateSet = matlab.system.StringSet({'4000000', '256000', '128000', '64000', ... - '32000', '16000', '8000', '4000', '2000', '1000'}) - - end - properties (Nontunable, Hidden) - Timeout = Inf kernelBuffersCount = 2 - % dataTypeStr = 'int64'; - dataTypeStr = 'int16' + channel_names = {'voltage0-voltage1','voltage2-voltage3'} phyDevName = 'ad7380' devName = 'ad7380' end - properties (Hidden, Constant) - ComplexData = false - end - methods - %% Constructor function obj = Rx(varargin) - obj = obj@matlabshared.libiio.base(varargin{:}); - obj.enableExplicitPolling = false; - obj.EnabledChannels = 1; - obj.BufferTypeConversionEnable = true; - obj.uri = 'ip:analog.local'; - end - - function flush(obj) - flushBuffers(obj); + obj = obj@adi.AD738X.Base(varargin{:}); end - - % Check SamplingRate - function set.SampleRate(obj, value) - obj.SampleRate = value; - if obj.ConnectedToDevice - obj.setDeviceAttributeRAW('sampling_frequency', value); - end - end - - end - - %% API Functions - methods (Hidden, Access = protected) - - function setupInit(obj) - % Write all attributes to device once connected through set - % methods - % Do writes directly to hardware without using set methods. - % This is required since Simulink support doesn't support - % modification to nontunable variables at SetupImpl - - % obj.setDeviceAttributeRAW('sampling_frequency',num2str(obj.SampleRate)); - - end - - function [data, valid] = stepImpl(obj) - % [data,valid] = rx() returns data received from the radio - % hardware associated with the receiver System object, rx. - % The output 'valid' indicates whether the object has received - % data from the radio hardware. The first valid data frame can - % contain transient values, resulting in packets containing - % undefined data. - % - % The output 'data' will be an [NxM] vector where N is - % 'SamplesPerFrame' and M is the number of elements in - % 'EnabledChannels'. 'data' will be complex if the devices - % assumes complex data operations. - - capCount = obj.FrameCount; - - if obj.ComplexData - kd = 1; - ce = length(obj.EnabledChannels); - [dataRAW, valid] = getData(obj); - data = complex(zeros(obj.SamplesPerFrame, ce)); - for k = 1:ce - data(:, k) = complex(dataRAW(kd, :), dataRAW(kd + 1, :)).'; - kd = kd + 2; - end - else - if obj.BufferTypeConversionEnable - - dataRAW = zeros([length(obj.EnabledChannels) obj.SamplesPerFrame * capCount]); - for count = 1:capCount - [data_i, valid] = getData(obj); - dataRAW(:, obj.SamplesPerFrame * (count - 1) + ... - 1:count * obj.SamplesPerFrame) = data_i; - end - disp("Finished grabbing data. Processing it now..."); - % Channels must be in columns or pointer math fails - dataRAW = dataRAW.'; - [D1, D2] = size(dataRAW); - data = coder.nullcopy(zeros(D1, D2, obj.dataTypeStr)); - dataPtr = libpointer(obj.ptrTypeStr, data); - dataRAWPtr = libpointer(obj.ptrTypeStr, dataRAW); - % Convert hardware format to human format channel by - % channel - for l = 0:D2 - 1 - chanPtr = getChan(obj, obj.iioDev, ... - obj.channel_names{obj.EnabledChannels(l + 1)}, false); - % Pull out column - tmpPtrSrc = dataRAWPtr + D1 * l; - tmpPtrDst = dataPtr + D1 * l; - setdatatype(tmpPtrSrc, obj.ptrTypeStr, D1, 1); - setdatatype(tmpPtrDst, obj.ptrTypeStr, D1, 1); - for k = 0:D1 - 1 - iio_channel_convert(obj, chanPtr, tmpPtrDst + k, tmpPtrSrc + k); - end - end - data = dataPtr.Value; - else - dataRAW = zeros([length(obj.EnabledChannels) ... - obj.SamplesPerFrame * capCount]); - for count = 1:capCount - [data_i, valid] = getData(obj); - dataRAW(:, obj.SamplesPerFrame * (count - 1) + ... - 1 : count * obj.SamplesPerFrame) = data_i; - end - - data = dataRAW.'; - end - end - end - end -end + + end diff --git a/+adi/+AD7380_4/Rx.m b/+adi/+AD7380_4/Rx.m new file mode 100644 index 0000000..ce79908 --- /dev/null +++ b/+adi/+AD7380_4/Rx.m @@ -0,0 +1,28 @@ +classdef Rx < adi.common.Rx & adi.common.RxTx ... + & adi.AD738X.Base + % AD7380-4 Precision ADC Class + % + % adi.AD7380_4.Rx Receives data from the AD7380-4 ADC + % The adi.AD7380_4.Rx System object is a signal source that can receive + % data from the AD7380-4. + % + % `rx = adi.AD7380_4.Rx;` + % `rx = adi.AD7380_4.Rx('uri','192.168.2.1');` + % + % `AD7380-4 Datasheet `_ + + properties (Nontunable, Hidden) + kernelBuffersCount = 4 + channel_names = {'voltage0-voltage1','voltage2-voltage3','voltage4-voltage5','voltage6-voltage7'} + phyDevName = 'ad7380-4' + devName = 'ad7380-4' + end + + methods + %% Constructor + function obj = Rx(varargin) + obj = obj@adi.AD738X.Base(varargin{:}); + end + end + + end diff --git a/+adi/+AD7381/Rx.m b/+adi/+AD7381/Rx.m new file mode 100644 index 0000000..64e2726 --- /dev/null +++ b/+adi/+AD7381/Rx.m @@ -0,0 +1,28 @@ +classdef Rx < adi.common.Rx & adi.common.RxTx ... + & adi.AD738X.Base + % AD7381 Precision ADC Class + % + % adi.AD7381.Rx Receives data from the AD7381 ADC + % The adi.AD7381.Rx System object is a signal source that can receive + % data from the AD7381. + % + % `rx = adi.AD7381.Rx;` + % `rx = adi.AD7381.Rx('uri','192.168.2.1');` + % + % `AD7381 Datasheet `_ + + properties (Nontunable, Hidden) + kernelBuffersCount = 2 + channel_names = {'voltage0-voltage1','voltage2-voltage3'} + phyDevName = 'ad7381' + devName = 'ad7381' + end + + methods + %% Constructor + function obj = Rx(varargin) + obj = obj@adi.AD738X.Base(varargin{:}); + end + end + + end diff --git a/+adi/+AD7381_4/Rx.m b/+adi/+AD7381_4/Rx.m new file mode 100644 index 0000000..8e1f730 --- /dev/null +++ b/+adi/+AD7381_4/Rx.m @@ -0,0 +1,28 @@ +classdef Rx < adi.common.Rx & adi.common.RxTx ... + & adi.AD738X.Base + % AD7381-4 Precision ADC Class + % + % adi.AD7381_4.Rx Receives data from the AD7381-4 ADC + % The adi.AD7381_4.Rx System object is a signal source that can receive + % data from the AD7381-4. + % + % `rx = adi.AD7381_4.Rx;` + % `rx = adi.AD7381_4.Rx('uri','192.168.2.1');` + % + % `AD7381-4 Datasheet `_ + + properties (Nontunable, Hidden) + kernelBuffersCount = 4 + channel_names = {'voltage0-voltage1','voltage2-voltage3','voltage4-voltage5','voltage6-voltage7'} + phyDevName = 'ad7381-4' + devName = 'ad7381-4' + end + + methods + %% Constructor + function obj = Rx(varargin) + obj = obj@adi.AD738X.Base(varargin{:}); + end + end + + end diff --git a/+adi/+AD7383/Rx.m b/+adi/+AD7383/Rx.m new file mode 100644 index 0000000..c27e5b0 --- /dev/null +++ b/+adi/+AD7383/Rx.m @@ -0,0 +1,28 @@ +classdef Rx < adi.common.Rx & adi.common.RxTx ... + & adi.AD738X.Base + % AD7383 Precision ADC Class + % + % adi.AD7383.Rx Receives data from the AD7383 ADC + % The adi.AD7383.Rx System object is a signal source that can receive + % data from the AD7383. + % + % `rx = adi.AD7383.Rx;` + % `rx = adi.AD7383.Rx('uri','192.168.2.1');` + % + % `AD7383 Datasheet `_ + + properties (Nontunable, Hidden) + kernelBuffersCount = 2 + channel_names = {'voltage0','voltage1'} + phyDevName = 'ad7383' + devName = 'ad7383' + end + + methods + %% Constructor + function obj = Rx(varargin) + obj = obj@adi.AD738X.Base(varargin{:}); + end + end + + end diff --git a/+adi/+AD7383_4/Rx.m b/+adi/+AD7383_4/Rx.m new file mode 100644 index 0000000..e149c7a --- /dev/null +++ b/+adi/+AD7383_4/Rx.m @@ -0,0 +1,28 @@ +classdef Rx < adi.common.Rx & adi.common.RxTx ... + & adi.AD738X.Base + % AD7383-4 Precision ADC Class + % + % adi.AD7383_4.Rx Receives data from the AD7383-4 ADC + % The adi.AD7383_4.Rx System object is a signal source that can receive + % data from the AD7383-4. + % + % `rx = adi.AD7383_4.Rx;` + % `rx = adi.AD7383_4.Rx('uri','192.168.2.1');` + % + % `AD7383-4 Datasheet `_ + + properties (Nontunable, Hidden) + kernelBuffersCount = 4 + channel_names = {'voltage0','voltage1','voltage2','voltage3'} + phyDevName = 'ad7383-4' + devName = 'ad7383-4' + end + + methods + %% Constructor + function obj = Rx(varargin) + obj = obj@adi.AD738X.Base(varargin{:}); + end + end + + end diff --git a/+adi/+AD7384/Rx.m b/+adi/+AD7384/Rx.m new file mode 100644 index 0000000..ff89b66 --- /dev/null +++ b/+adi/+AD7384/Rx.m @@ -0,0 +1,28 @@ +classdef Rx < adi.common.Rx & adi.common.RxTx ... + & adi.AD738X.Base + % AD7384 Precision ADC Class + % + % adi.AD7384.Rx Receives data from the AD7384 ADC + % The adi.AD7384.Rx System object is a signal source that can receive + % data from the AD7384. + % + % `rx = adi.AD7384.Rx;` + % `rx = adi.AD7384.Rx('uri','192.168.2.1');` + % + % `AD7384 Datasheet `_ + + properties (Nontunable, Hidden) + kernelBuffersCount = 2 + channel_names = {'voltage0','voltage1'} + phyDevName = 'ad7384' + devName = 'ad7384' + end + + methods + %% Constructor + function obj = Rx(varargin) + obj = obj@adi.AD738X.Base(varargin{:}); + end + end + + end diff --git a/+adi/+AD7384_4/Rx.m b/+adi/+AD7384_4/Rx.m new file mode 100644 index 0000000..ecb3942 --- /dev/null +++ b/+adi/+AD7384_4/Rx.m @@ -0,0 +1,28 @@ +classdef Rx < adi.common.Rx & adi.common.RxTx ... + & adi.AD738X.Base + % AD7384-4 Precision ADC Class + % + % adi.AD7384_4.Rx Receives data from the AD7384-4 ADC + % The adi.AD7384_4.Rx System object is a signal source that can receive + % data from the AD7384-4. + % + % `rx = adi.AD7384_4.Rx;` + % `rx = adi.AD7384_4.Rx('uri','192.168.2.1');` + % + % `AD7384-4 Datasheet `_ + + properties (Nontunable, Hidden) + kernelBuffersCount = 4 + channel_names = {'voltage0','voltage1','voltage2','voltage3'} + phyDevName = 'ad7384-4' + devName = 'ad7384-4' + end + + methods + %% Constructor + function obj = Rx(varargin) + obj = obj@adi.AD738X.Base(varargin{:}); + end + end + + end diff --git a/+adi/+AD7386/Rx.m b/+adi/+AD7386/Rx.m new file mode 100644 index 0000000..ed12b3e --- /dev/null +++ b/+adi/+AD7386/Rx.m @@ -0,0 +1,28 @@ +classdef Rx < adi.common.Rx & adi.common.RxTx ... + & adi.AD738X.Base + % AD7386 Precision ADC Class + % + % adi.AD7386.Rx Receives data from the AD7386 ADC + % The adi.AD7386.Rx System object is a signal source that can receive + % data from the AD7386. + % + % `rx = adi.AD7386.Rx;` + % `rx = adi.AD7386.Rx('uri','192.168.2.1');` + % + % `AD7386 Datasheet `_ + + properties (Nontunable, Hidden) + kernelBuffersCount = 4 + channel_names = {'voltage0','voltage1','voltage2','voltage3'} + phyDevName = 'ad7386' + devName = 'ad7386' + end + + methods + %% Constructor + function obj = Rx(varargin) + obj = obj@adi.AD738X.Base(varargin{:}); + end + end + + end diff --git a/+adi/+AD7386_4/Rx.m b/+adi/+AD7386_4/Rx.m new file mode 100644 index 0000000..43b30ee --- /dev/null +++ b/+adi/+AD7386_4/Rx.m @@ -0,0 +1,28 @@ +classdef Rx < adi.common.Rx & adi.common.RxTx ... + & adi.AD738X.Base + % AD7386-4 Precision ADC Class + % + % adi.AD7386_4.Rx Receives data from the AD7386-4 ADC + % The adi.AD7386_4.Rx System object is a signal source that can receive + % data from the AD7386-4. + % + % `rx = adi.AD7386_4.Rx;` + % `rx = adi.AD7386_4.Rx('uri','192.168.2.1');` + % + % `AD7386-4 Datasheet `_ + + properties (Nontunable, Hidden) + kernelBuffersCount = 8 + channel_names = {'voltage0','voltage1','voltage2','voltage3','voltage3','voltage5','voltage6','voltage7'} + phyDevName = 'ad7386-4' + devName = 'ad7386-4' + end + + methods + %% Constructor + function obj = Rx(varargin) + obj = obj@adi.AD738X.Base(varargin{:}); + end + end + + end diff --git a/+adi/+AD7387/Rx.m b/+adi/+AD7387/Rx.m new file mode 100644 index 0000000..6361869 --- /dev/null +++ b/+adi/+AD7387/Rx.m @@ -0,0 +1,28 @@ +classdef Rx < adi.common.Rx & adi.common.RxTx ... + & adi.AD738X.Base + % AD7387 Precision ADC Class + % + % adi.AD7387.Rx Receives data from the AD7387 ADC + % The adi.AD7387.Rx System object is a signal source that can receive + % data from the AD7387. + % + % `rx = adi.AD7387.Rx;` + % `rx = adi.AD7387.Rx('uri','192.168.2.1');` + % + % `AD7387 Datasheet `_ + + properties (Nontunable, Hidden) + kernelBuffersCount = 4 + channel_names = {'voltage0','voltage1','voltage2','voltage3'} + phyDevName = 'ad7387' + devName = 'ad7387' + end + + methods + %% Constructor + function obj = Rx(varargin) + obj = obj@adi.AD738X.Base(varargin{:}); + end + end + + end diff --git a/+adi/+AD7387_4/Rx.m b/+adi/+AD7387_4/Rx.m new file mode 100644 index 0000000..2eb9a72 --- /dev/null +++ b/+adi/+AD7387_4/Rx.m @@ -0,0 +1,28 @@ +classdef Rx < adi.common.Rx & adi.common.RxTx ... + & adi.AD738X.Base + % AD7387-4 Precision ADC Class + % + % adi.AD7387_4.Rx Receives data from the AD7387-4 ADC + % The adi.AD7387_4.Rx System object is a signal source that can receive + % data from the AD7387-4. + % + % `rx = adi.AD7387_4.Rx;` + % `rx = adi.AD7387_4.Rx('uri','192.168.2.1');` + % + % `AD7387-4 Datasheet `_ + + properties (Nontunable, Hidden) + kernelBuffersCount = 8 + channel_names = {'voltage0','voltage1','voltage2','voltage3','voltage3','voltage5','voltage6','voltage7'} + phyDevName = 'ad7387-4' + devName = 'ad7387-4' + end + + methods + %% Constructor + function obj = Rx(varargin) + obj = obj@adi.AD738X.Base(varargin{:}); + end + end + + end diff --git a/+adi/+AD7388/Rx.m b/+adi/+AD7388/Rx.m new file mode 100644 index 0000000..ca019dc --- /dev/null +++ b/+adi/+AD7388/Rx.m @@ -0,0 +1,28 @@ +classdef Rx < adi.common.Rx & adi.common.RxTx ... + & adi.AD738X.Base + % AD7388 Precision ADC Class + % + % adi.AD7388.Rx Receives data from the AD7388 ADC + % The adi.AD7388.Rx System object is a signal source that can receive + % data from the AD7388. + % + % `rx = adi.AD7388.Rx;` + % `rx = adi.AD7388.Rx('uri','192.168.2.1');` + % + % `AD7388 Datasheet `_ + + properties (Nontunable, Hidden) + kernelBuffersCount = 4 + channel_names = {'voltage0','voltage1','voltage2','voltage3'} + phyDevName = 'ad7388' + devName = 'ad7388' + end + + methods + %% Constructor + function obj = Rx(varargin) + obj = obj@adi.AD738X.Base(varargin{:}); + end + end + + end diff --git a/+adi/+AD7388_4/Rx.m b/+adi/+AD7388_4/Rx.m new file mode 100644 index 0000000..abb38af --- /dev/null +++ b/+adi/+AD7388_4/Rx.m @@ -0,0 +1,28 @@ +classdef Rx < adi.common.Rx & adi.common.RxTx ... + & adi.AD738X.Base + % AD7388-4 Precision ADC Class + % + % adi.AD7388_4.Rx Receives data from the AD7388-4 ADC + % The adi.AD7388_4.Rx System object is a signal source that can receive + % data from the AD7388-4. + % + % `rx = adi.AD7388_4.Rx;` + % `rx = adi.AD7388_4.Rx('uri','192.168.2.1');` + % + % `AD7388-4 Datasheet `_ + + properties (Nontunable, Hidden) + kernelBuffersCount = 8 + channel_names = {'voltage0','voltage1','voltage2','voltage3','voltage3','voltage5','voltage6','voltage7'} + phyDevName = 'ad7388-4' + devName = 'ad7388-4' + end + + methods + %% Constructor + function obj = Rx(varargin) + obj = obj@adi.AD738X.Base(varargin{:}); + end + end + + end diff --git a/+adi/+AD738X/Base.m b/+adi/+AD738X/Base.m new file mode 100644 index 0000000..fb67984 --- /dev/null +++ b/+adi/+AD738X/Base.m @@ -0,0 +1,154 @@ +classdef Base < adi.common.Rx & matlabshared.libiio.base & adi.common.Attribute + % AD738X Family Precision ADC Class + % + + properties (Nontunable) + % SampleRate Sample Rate + % Baseband sampling rate in Hz, specified as a scalar + % in samples per second. Options are: + % '256000','128000','64000','32000','16000','8000','4000', + % '2000','1000' + SampleRate = '4000000' + SamplesPerFrame = 1024 + end + + properties (Hidden) + % Number of frames or buffers of data to capture + FrameCount = 1 + end + + % Channel names + properties (Nontunable, Hidden, Constant) + Type = 'Rx' + end + + % isOutput + properties (Hidden, Nontunable, Access = protected) + isOutput = false + end + + properties (Constant, Hidden) + SampleRateSet = matlab.system.StringSet({'4000000', '256000', '128000', '64000', ... + '32000', '16000', '8000', '4000', '2000', '1000'}) + + end + + properties (Nontunable, Hidden) + Timeout = Inf + dataTypeStr = 'int16' + end + + properties (Hidden, Constant) + ComplexData = false + end + + methods + + %% Constructor + function obj = Base(varargin) + obj = obj@matlabshared.libiio.base(varargin{:}); + obj.enableExplicitPolling = false; + obj.EnabledChannels = 1; + obj.BufferTypeConversionEnable = true; + obj.uri = 'ip:analog.local'; + end + + function flush(obj) + flushBuffers(obj); + end + + % Check SamplingRate + function set.SampleRate(obj, value) + obj.SampleRate = value; + if obj.ConnectedToDevice + obj.setDeviceAttributeRAW('sampling_frequency', value); + end + end + + end + + %% API Functions + methods (Hidden, Access = protected) + + function setupInit(obj) + % Write all attributes to device once connected through set + % methods + % Do writes directly to hardware without using set methods. + % This is required since Simulink support doesn't support + % modification to nontunable variables at SetupImpl + + % obj.setDeviceAttributeRAW('sampling_frequency',num2str(obj.SampleRate)); + + end + + function [data, valid] = stepImpl(obj) + % [data,valid] = rx() returns data received from the radio + % hardware associated with the receiver System object, rx. + % The output 'valid' indicates whether the object has received + % data from the radio hardware. The first valid data frame can + % contain transient values, resulting in packets containing + % undefined data. + % + % The output 'data' will be an [NxM] vector where N is + % 'SamplesPerFrame' and M is the number of elements in + % 'EnabledChannels'. 'data' will be complex if the devices + % assumes complex data operations. + + capCount = obj.FrameCount; + + if obj.ComplexData + kd = 1; + ce = length(obj.EnabledChannels); + [dataRAW, valid] = getData(obj); + data = complex(zeros(obj.SamplesPerFrame, ce)); + for k = 1:ce + data(:, k) = complex(dataRAW(kd, :), dataRAW(kd + 1, :)).'; + kd = kd + 2; + end + else + if obj.BufferTypeConversionEnable + + dataRAW = zeros([length(obj.EnabledChannels) obj.SamplesPerFrame * capCount]); + for count = 1:capCount + [data_i, valid] = getData(obj); + dataRAW(:, obj.SamplesPerFrame * (count - 1) + ... + 1:count * obj.SamplesPerFrame) = data_i; + end + disp("Finished grabbing data. Processing it now..."); + % Channels must be in columns or pointer math fails + dataRAW = dataRAW.'; + [D1, D2] = size(dataRAW); + data = coder.nullcopy(zeros(D1, D2, obj.dataTypeStr)); + dataPtr = libpointer(obj.ptrTypeStr, data); + dataRAWPtr = libpointer(obj.ptrTypeStr, dataRAW); + % Convert hardware format to human format channel by + % channel + for l = 0:D2 - 1 + chanPtr = getChan(obj, obj.iioDev, ... + obj.channel_names{obj.EnabledChannels(l + 1)}, false); + % Pull out column + tmpPtrSrc = dataRAWPtr + D1 * l; + tmpPtrDst = dataPtr + D1 * l; + setdatatype(tmpPtrSrc, obj.ptrTypeStr, D1, 1); + setdatatype(tmpPtrDst, obj.ptrTypeStr, D1, 1); + for k = 0:D1 - 1 + iio_channel_convert(obj, chanPtr, tmpPtrDst + k, tmpPtrSrc + k); + end + end + data = dataPtr.Value; + else + dataRAW = zeros([length(obj.EnabledChannels) ... + obj.SamplesPerFrame * capCount]); + for count = 1:capCount + [data_i, valid] = getData(obj); + dataRAW(:, obj.SamplesPerFrame * (count - 1) + ... + 1 : count * obj.SamplesPerFrame) = data_i; + end + + data = dataRAW.'; + end + end + end + + end +end diff --git a/+adi/+ADAQ4370_4/Rx.m b/+adi/+ADAQ4370_4/Rx.m new file mode 100644 index 0000000..1868a4d --- /dev/null +++ b/+adi/+ADAQ4370_4/Rx.m @@ -0,0 +1,28 @@ +classdef Rx < adi.common.Rx & adi.common.RxTx ... + & adi.AD738X.Base + % ADAQ4370-4 Precision ADC Class + % + % adi.ADAQ4370_4.Rx Receives data from the ADAQ4370-4 ADC + % The adi.ADAQ4370_4.Rx System object is a signal source that can receive + % data from the ADAQ4370-4. + % + % `rx = adi.ADAQ4370_4.Rx;` + % `rx = adi.ADAQ4370_4.Rx('uri','192.168.2.1');` + % + % `ADAQ4370-4 Datasheet `_ + + properties (Nontunable, Hidden) + kernelBuffersCount = 4 + channel_names = {'voltage0-voltage1','voltage2-voltage3','voltage4-voltage5','voltage6-voltage7'} + phyDevName = 'adaq4370-4' + devName = 'adaq4370-4' + end + + methods + %% Constructor + function obj = Rx(varargin) + obj = obj@adi.AD738X.Base(varargin{:}); + end + end + + end diff --git a/+adi/+ADAQ4380_4/Rx.m b/+adi/+ADAQ4380_4/Rx.m new file mode 100644 index 0000000..d4b265a --- /dev/null +++ b/+adi/+ADAQ4380_4/Rx.m @@ -0,0 +1,28 @@ +classdef Rx < adi.common.Rx & adi.common.RxTx ... + & adi.AD738X.Base + % ADAQ4380-4 Precision ADC Class + % + % adi.ADAQ4380_4.Rx Receives data from the ADAQ4380-4 ADC + % The adi.ADAQ4380_4.Rx System object is a signal source that can receive + % data from the ADAQ4380-4. + % + % `rx = adi.ADAQ4380_4.Rx;` + % `rx = adi.ADAQ4380_4.Rx('uri','192.168.2.1');` + % + % `ADAQ4380-4 Datasheet `_ + + properties (Nontunable, Hidden) + kernelBuffersCount = 4 + channel_names = {'voltage0-voltage1','voltage2-voltage3','voltage4-voltage5','voltage6-voltage7'} + phyDevName = 'adaq4380-4' + devName = 'adaq4380-4' + end + + methods + %% Constructor + function obj = Rx(varargin) + obj = obj@adi.AD738X.Base(varargin{:}); + end + end + + end diff --git a/+adi/Contents.m b/+adi/Contents.m index bca9421..d66c15d 100644 --- a/+adi/Contents.m +++ b/+adi/Contents.m @@ -27,6 +27,21 @@ % ADAQ4224 - ADAQ % AD4858 - ADC % AD7380 - ADC +% AD7381 - ADC +% AD7383 - ADC +% AD7384 - ADC +% AD7386 - ADC +% AD7387 - ADC +% AD7388 - ADC +% AD7380-4 - ADC +% AD7381-4 - ADC +% AD7383-4 - ADC +% AD7384-4 - ADC +% AD7386-4 - ADC +% AD7387-4 - ADC +% AD7388-4 - ADC +% ADAQ4370-4 - ADC +% ADAQ4380-4 - ADC % AD7625 - ADC % AD7626 - ADC % AD7960 - ADC diff --git a/docs/source/index.rst b/docs/source/index.rst index 6528538..dc8e900 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -29,6 +29,20 @@ The following have device-specific implementations in MATLAB and Simulink. In ge :widths: 30, 30, 30, 30, 30 "AD7380", "Zedboard", "Yes", "No", "ADI (2021b)" + "AD7381", "Zedboard", "Yes", "No", "ADI (2021b)" + "AD7383", "Zedboard", "Yes", "No", "ADI (2021b)" + "AD7384", "Zedboard", "Yes", "No", "ADI (2021b)" + "AD7386", "Zedboard", "Yes", "No", "ADI (2021b)" + "AD7387", "Zedboard", "Yes", "No", "ADI (2021b)" + "AD7388", "Zedboard", "Yes", "No", "ADI (2021b)" + "AD7380-4", "Zedboard", "Yes", "No", "ADI (2021b)" + "AD7381-4", "Zedboard", "Yes", "No", "ADI (2021b)" + "AD7383-4", "Zedboard", "Yes", "No", "ADI (2021b)" + "AD7386-4", "Zedboard", "Yes", "No", "ADI (2021b)" + "AD7387-4", "Zedboard", "Yes", "No", "ADI (2021b)" + "AD7388-4", "Zedboard", "Yes", "No", "ADI (2021b)" + "ADAQ4370-4", "Zedboard", "Yes", "No", "ADI (2021b)" + "ADAQ4380-4", "Zedboard", "Yes", "No", "ADI (2021b)" "AD7768", "Zedboard", "Yes", "No", "ADI (2021b)" "AD7768-1", "Zedboard", "Yes", "No", "ADI (2021b)" "AD4030-24", "Zedboard", "Yes", "No", "ADI (2021b)" @@ -66,4 +80,4 @@ The following have device-specific implementations in MATLAB and Simulink. In ge "AD7192", "SDP-K1", "Yes", "No", "ADI (2021b)" "AD7193", "SDP-K1", "Yes", "No", "ADI (2021b)" "AD7194", "SDP-K1", "Yes", "No", "ADI (2021b)" - "AD7195", "SDP-K1", "Yes", "No", "ADI (2021b)" \ No newline at end of file + "AD7195", "SDP-K1", "Yes", "No", "ADI (2021b)"