Sinwave generator with Raspberry and Waveshare Board

18 Ansichten (letzte 30 Tage)
Patryk Ostarek
Patryk Ostarek am 22 Dez. 2022
Bearbeitet: Maneet Kaur Bagga am 27 Nov. 2023
I'm using Raspberry PI 3B and High-Precision AD/DA Board. I want to generate sinewave signal into the raspberry and also want to check the voltage on DAC0 output from waveshare board.
Iam using this code to generate 5V to DAC0 output
the vref = 3,9, but instead of vref i want to use sinwave with such parameters
and measure the sinwave at DAC0 output.
Do anyone know how to make this work?

Antworten (1)

Maneet Kaur Bagga
Maneet Kaur Bagga am 27 Nov. 2023
Bearbeitet: Maneet Kaur Bagga am 27 Nov. 2023
Hi Patryk,
As per my understanding to generate a sine wave with specific parameters amd output it through DAC on a Raspberry Pi, first calculate the sine wave based on the given parameters and then write the sine wave to the DAC0 output. The output at DAC0 can be measured using an ADC.
Please refer to the below MATLAB code for implementation of the above:
% Calculate the sine wave
sin_wave = A * sin(2 * pi * f0 * t + p);
% Connect to Raspberry Pi
rpi = raspi();
% Set up SPI objects for DAC
dac = spidev(rpi, 'CE1');
dac.frequency = 2000000;
% Configure DAC pin
csdac = 23;
configurePin(rpi, csdac, "DigitalOutput");
% Write the sine wave to DAC0 output
for i = 1:length(sin_wave)
% Convert the voltage to DAC value (assuming 5V reference)
dac_value = uint16((sin_wave(i) / 5.0) * 4095);
% Send the DAC value to DAC0
writeDigitalPin(rpi, csdac, 0); % Start SPI conversation
writeRead(dac, [hex2dec('30'), bitshift(dac_value, -8), bitand(dac_value, 255)]); % Send the DAC value
writeDigitalPin(rpi, csdac, 1); % End SPI conversation
pause(dt);
end
% Optionally, you can measure the output at DAC0 using an ADC if needed
% You can use MATLAB's Data Acquisition Toolbox to interface with ADC
Hope this helps!

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by