3 * Simple test for the SPI bus on the Gertboard
6 * D/A port 0 jumpered to A/D port 0.
8 * We output a sine wave on D/A port 0 and sample A/D port 0. We then
9 * copy this value to D/A port 1 and use a 'scope on both D/A ports
10 * to check all's well.
12 * Copyright (c) 2012-2013 Gordon Henderson. <projects@drogon.net>
13 ***********************************************************************
14 * This file is part of wiringPi:
15 * https://projects.drogon.net/raspberry-pi/wiringpi/
17 * wiringPi is free software: you can redistribute it and/or modify
18 * it under the terms of the GNU Lesser General Public License as published by
19 * the Free Software Foundation, either version 3 of the License, or
20 * (at your option) any later version.
22 * wiringPi is distributed in the hope that it will be useful,
23 * but WITHOUT ANY WARRANTY; without even the implied warranty of
24 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25 * GNU Lesser General Public License for more details.
27 * You should have received a copy of the GNU Lesser General Public License
28 * along with wiringPi. If not, see <http://www.gnu.org/licenses/>.
29 ***********************************************************************
40 #include <gertboard.h>
50 unsigned int now, then ;
53 printf ("Raspberry Pi Gertboard SPI test program\n") ;
55 if (wiringPiSetupSys () < 0)
58 if (gertboardSPISetup () < 0)
61 // Generate a Sine Wave
63 for (i = 0 ; i < B_SIZE ; ++i)
65 angle = ((double)i / (double)B_SIZE) * M_PI * 2.0 ;
66 buffer [i] = (int)rint ((sin (angle)) * 127.0 + 128.0) ;
76 for (i = 0 ; i < B_SIZE ; ++i)
78 gertboardAnalogWrite (0, buffer [i]) ;
81 x1 = gertboardAnalogRead (0) ;
82 gertboardAnalogWrite (1, x1 >> 2) ; // 10-bit A/D, 8-bit D/A
88 printf ("%4d mS, %9.7f S/sample", now - then, ((double)(now - then) / 1000.0) / (double)B_SIZE) ;
89 printf (" -> %9.4f samples/sec \n", 1 / (((double)(now - then) / 1000.0) / (double)B_SIZE)) ;