generate_arbitrary_waveform.c 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include "rp.h"
  5. #define M_PI 3.14159265358979323846
  6. int main(int argc, char **argv){
  7. int i;
  8. int buff_size = 16384;
  9. /* Print error, if rp_Init() function failed */
  10. if(rp_Init() != RP_OK){
  11. fprintf(stderr, "Rp api init failed!\n");
  12. }
  13. float *t = (float *)malloc(buff_size * sizeof(float));
  14. float *x = (float *)malloc(buff_size * sizeof(float));
  15. float *y = (float *)malloc(buff_size * sizeof(float));
  16. for(i = 1; i < buff_size; i++){
  17. t[i] = (2 * M_PI) / buff_size * i;
  18. }
  19. for (int i = 0; i < buff_size; ++i){
  20. x[i] = sin(t[i]) + ((1.0/3.0) * sin(t[i] * 3));
  21. y[i] = (1.0/2.0) * sin(t[i]) + (1.0/4.0) * sin(t[i] * 4);
  22. }
  23. rp_GenWaveform(RP_CH_1, RP_WAVEFORM_ARBITRARY);
  24. rp_GenWaveform(RP_CH_2, RP_WAVEFORM_ARBITRARY);
  25. rp_GenArbWaveform(RP_CH_1, x, buff_size);
  26. rp_GenArbWaveform(RP_CH_2, y, buff_size);
  27. rp_GenAmp(RP_CH_1, 0.7);
  28. rp_GenAmp(RP_CH_2, 1.0);
  29. rp_GenFreq(RP_CH_1, 4000.0);
  30. rp_GenFreq(RP_CH_2, 4000.0);
  31. rp_GenOutEnable(RP_CH_1);
  32. rp_GenOutEnable(RP_CH_2);
  33. rp_GenSynchronise();
  34. /* Releasing resources */
  35. free(y);
  36. free(x);
  37. free(t);
  38. rp_Release();
  39. }