Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: SPI.cpp
- Revision:
- 2:b615682e3e4f
- Parent:
- 1:acc66d3a1a1c
- Child:
- 3:d6e142b6ead1
--- a/SPI.cpp Sun Apr 01 15:43:02 2018 +0000
+++ b/SPI.cpp Sun Apr 01 15:54:46 2018 +0000
@@ -12,8 +12,77 @@
DigitalIn DO_NOT_USE(PB_12); // MAKE PB_12 (D19) an INPUT do NOT make an OUTPUT under any circumstances !!!!! ************* !!!!!!!!!!!
// This Pin is connected to the 5VDC from the FPGA card and an INPUT is 5V Tolerant
+int adval_d; //A to D value read back
+float adval_f;
+int err; //error variable used for debugging, trapping etc.,
+
+char adval[32];
//Ticker ticktock;
+void SPI_INIT (void)
+{
+ cs = 1; // Chip must be deselected, Chip Select is active LOW
+ LCD_cs = 1; // Chip must be deselected, Chip Select is active LOW
+ ADC_cs = 1; // Chip must be deselected, Chip Select is active LOW
+ spi.format(16,0); // Setup the DATA frame SPI for 16 bit wide word, Clock Polarity 0 and Clock Phase 0 (0)
+ spi_cmd.format(8,0); // Setup the COMMAND SPI as 8 Bit wide word, Clock Polarity 0 and Clock Phase 0 (0)
+ spi.frequency(1000000); // 1MHz clock rate
+ spi_cmd.frequency(1000000); // 1MHz clock rate
+
+ adval_d = 0; //A to D value read back
+ adval_f =0.0f;
+ err = 0; //error variable used for debugging, trapping etc.,
+
+// Preload some arrays
+// char hello_world[]="Hello World";
+ char splash_screen1[]="Martin Simpson";
+ char splash_screen2[]="Plymouth UNI";
+ char DVM[]="Voltage=";
+// Start up sequences
+ lcd_cls();
+ lcd_locate(1,1);
+ lcd_display(splash_screen1); //Credit line 1
+ lcd_locate(2,2);
+ lcd_display(splash_screen2); //Credit line 2
+ wait(2);
+ lcd_cls();
+ pulse_bar_graph(); //Flashy bargraph clear screen
+ lcd_locate(1,0);
+ lcd_display(DVM); //Type Voltage display
+ lcd_locate(1,13);
+ lcd_display("V"); //Units display
+}
+void SPI_TEST(void)
+{
+ adval_d = read_adc();
+
+ adval_f = 3.3f*((float)adval_d/4095);//Convert 12 bit to a float and scale
+ sprintf(adval,"%.3f",adval_f); //Store in an array string
+ lcd_locate(1,8); //and display on LCD
+ lcd_display(adval); //
+
+ err = bar_graph(adval_d/255); // 16*256 =4096 12 bit ADC!
+ if (err < 0){printf("Display Overload\r\n");}
+
+ read_switches();
+ //LED Chaser display KIT lives on!
+ for (uint32_t i=1;i<=128;i*=2)
+ {
+ cs = 0; //Select the device by seting chip select LOW
+ spi_cmd.write(0);
+ spi.write(i);
+ cs = 1; //De-Select the device by seting chip select HIGH
+ wait_ms(20);
+ }
+ for (uint32_t i=128;i>=1;i/=2)
+ {
+ cs = 0; //Select the device by seting chip select LOW
+ spi_cmd.write(0);
+ spi.write(i);
+ cs = 1; //De-Select the device by seting chip select HIGH
+ wait_ms(20);
+ }
+}
int lcd_cls(void){
LCD_cs = 0;spi_cmd.write(0);spi.write(0x0001);LCD_cs = 1;wait_us(CD); //Clear Screen
