Firmware for KL25Z board to interact with eight pc052c boards. Designed very specifically for TORCH DAQ_v13. Beware: not very user-friendly.

Dependencies:   mbed

Committer:
sagara17
Date:
Fri Jul 07 09:02:51 2017 +0000
Revision:
4:efb9246409c0
Parent:
0:76bb47702467
Written comments to make the code clearer 7th July 2017

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sagara17 0:76bb47702467 1 #include "mbed.h"
sagara17 0:76bb47702467 2 #include <spi_functions.h>
sagara17 0:76bb47702467 3
sagara17 0:76bb47702467 4 ////////////////////////////////////////////////////////
sagara17 0:76bb47702467 5 int sendConfiguration(Serial &serialOut, SPI &dac_port, DigitalOut &sync)
sagara17 0:76bb47702467 6 {
sagara17 0:76bb47702467 7 int nWords= 12;
sagara17 0:76bb47702467 8 unsigned short dac_data[nWords];
sagara17 0:76bb47702467 9
sagara17 0:76bb47702467 10 //CONFIGURE ALL PORTS AS OUTPUTS
sagara17 0:76bb47702467 11 dac_data[0] = 0x0955; //
sagara17 0:76bb47702467 12 dac_data[1] = 0x0A55; //
sagara17 0:76bb47702467 13 dac_data[2] = 0x0B55; //
sagara17 0:76bb47702467 14 dac_data[3] = 0x0C55; //
sagara17 0:76bb47702467 15 dac_data[4] = 0x0D55; //
sagara17 0:76bb47702467 16 dac_data[5] = 0x0E55; //
sagara17 0:76bb47702467 17 dac_data[6] = 0x0F55; //
sagara17 0:76bb47702467 18
sagara17 0:76bb47702467 19 //SET ALL OUTPUTS TO 0
sagara17 0:76bb47702467 20 dac_data[7] = 0x4400; // P4 - P11
sagara17 0:76bb47702467 21 dac_data[8] = 0x4C00; // P12 - P19
sagara17 0:76bb47702467 22 dac_data[9] = 0x5400; // P20 - P27
sagara17 0:76bb47702467 23 dac_data[10]= 0x5C00; // P28 - P31
sagara17 0:76bb47702467 24
sagara17 0:76bb47702467 25 //EXIT SHUTDOWN MODE
sagara17 0:76bb47702467 26 dac_data[11]= 0x0401;
sagara17 0:76bb47702467 27 for (int i = 0; i < nWords; i++)
sagara17 0:76bb47702467 28 {
sagara17 0:76bb47702467 29 //serialOut.printf("WRITING %d (0x%04x).\n", dac_data[i], dac_data[i]);
sagara17 0:76bb47702467 30 mySPISend(dac_data[i], dac_port, sync);
sagara17 0:76bb47702467 31 }
sagara17 0:76bb47702467 32 return 0;
sagara17 0:76bb47702467 33 }
sagara17 0:76bb47702467 34
sagara17 0:76bb47702467 35 ////////////////////////////////////////////////////////
sagara17 0:76bb47702467 36 int sendTransfer(unsigned short data, SPI &dac_port, DigitalOut &sync)
sagara17 0:76bb47702467 37 {
sagara17 0:76bb47702467 38
sagara17 0:76bb47702467 39 return 0;
sagara17 0:76bb47702467 40 }
sagara17 0:76bb47702467 41
sagara17 0:76bb47702467 42 ////////////////////////////////////////////////////////
sagara17 0:76bb47702467 43 int mySPISend( unsigned short data, SPI &dac_port, DigitalOut &sync)
sagara17 0:76bb47702467 44 // This is the basic function used to send the signals.
sagara17 0:76bb47702467 45 {
sagara17 0:76bb47702467 46 //sync = 1;
sagara17 0:76bb47702467 47 wait (0.5);
sagara17 0:76bb47702467 48
sagara17 0:76bb47702467 49 sync = 0;
sagara17 0:76bb47702467 50
sagara17 0:76bb47702467 51 dac_port.write(data >> 8);// We have a 8 bit interface but need to write 16 bits. Two write in sequence (or use "transfer" instead)
sagara17 0:76bb47702467 52 dac_port.write(data);
sagara17 0:76bb47702467 53
sagara17 0:76bb47702467 54 wait(0.000005); //
sagara17 0:76bb47702467 55 sync = 1;
sagara17 0:76bb47702467 56
sagara17 0:76bb47702467 57 wait (0.5);
sagara17 0:76bb47702467 58 return 0;
sagara17 0:76bb47702467 59 }
sagara17 0:76bb47702467 60
sagara17 0:76bb47702467 61 ////////////////////////////////////////////////////////
sagara17 0:76bb47702467 62 int mySPIRead(Serial &serialOut, unsigned short data, SPI &dac_port, DigitalOut &sync)
sagara17 0:76bb47702467 63 // This is the basic function used to send the signals.
sagara17 0:76bb47702467 64 {
sagara17 0:76bb47702467 65 unsigned short nopdata= 0x0000;
sagara17 0:76bb47702467 66 unsigned short return1, return2;
sagara17 0:76bb47702467 67 wait (0.5);
sagara17 0:76bb47702467 68
sagara17 0:76bb47702467 69 sync = 0;
sagara17 0:76bb47702467 70
sagara17 0:76bb47702467 71 dac_port.write(data >> 8);// We have a 8 bit interface but need to write 16 bits. Two write in sequence (or use "transfer" instead)
sagara17 0:76bb47702467 72 dac_port.write(data);
sagara17 0:76bb47702467 73
sagara17 0:76bb47702467 74 wait(0.000005); //
sagara17 0:76bb47702467 75 sync = 1;
sagara17 0:76bb47702467 76
sagara17 0:76bb47702467 77 wait (0.2);
sagara17 0:76bb47702467 78 sync = 0;
sagara17 0:76bb47702467 79
sagara17 0:76bb47702467 80 return1= dac_port.write(nopdata >> 8);// No operation. Used to flush the 16 bits.
sagara17 0:76bb47702467 81 return2= dac_port.write(nopdata);
sagara17 0:76bb47702467 82
sagara17 0:76bb47702467 83 wait(0.000005); //
sagara17 0:76bb47702467 84 sync = 1;
sagara17 0:76bb47702467 85 wait (0.5);
sagara17 0:76bb47702467 86 serialOut.printf("Returned data = %d (0x%04x), %d (0x%04x).\n", return1, return1, return2, return2);
sagara17 0:76bb47702467 87 return 0;
sagara17 0:76bb47702467 88 }
sagara17 0:76bb47702467 89
sagara17 0:76bb47702467 90 ////////////////////////////////////////////////////////
sagara17 0:76bb47702467 91 int powerMode(SPI &dac_port, DigitalOut &sync, int mode)
sagara17 0:76bb47702467 92 {
sagara17 0:76bb47702467 93 int nWords= 2;
sagara17 0:76bb47702467 94 unsigned short dac_data[nWords];
sagara17 0:76bb47702467 95
sagara17 0:76bb47702467 96
sagara17 0:76bb47702467 97 dac_data[0]= 0x0400;//ENTER SHUTDOWN MODE
sagara17 0:76bb47702467 98 dac_data[1]= 0x0401;//EXIT SHUTDOWN MODE
sagara17 0:76bb47702467 99
sagara17 0:76bb47702467 100 if ((mode==0) || (mode==1))
sagara17 0:76bb47702467 101 {
sagara17 0:76bb47702467 102 mySPISend(dac_data[mode], dac_port, sync);
sagara17 0:76bb47702467 103 }
sagara17 0:76bb47702467 104
sagara17 0:76bb47702467 105 return 0;
sagara17 0:76bb47702467 106 }
sagara17 0:76bb47702467 107
sagara17 0:76bb47702467 108 ////////////////////////////////////////////////////////
sagara17 0:76bb47702467 109 int setPort(SPI &dac_port, DigitalOut &sync, int myPort, int newState)
sagara17 0:76bb47702467 110 {
sagara17 0:76bb47702467 111 int nWords= 1;
sagara17 0:76bb47702467 112 unsigned short dac_data[nWords];
sagara17 0:76bb47702467 113
sagara17 0:76bb47702467 114 dac_data[0]= (myPort + 0x0020)*0x0100 + newState;
sagara17 0:76bb47702467 115 mySPISend(dac_data[0], dac_port, sync);
sagara17 0:76bb47702467 116 /*
sagara17 0:76bb47702467 117 dac_data[0]= 0x0400;//ENTER SHUTDOWN MODE
sagara17 0:76bb47702467 118 dac_data[1]= 0x0401;//EXIT SHUTDOWN MODE
sagara17 0:76bb47702467 119
sagara17 0:76bb47702467 120 if ((mode==0) || (mode==1))
sagara17 0:76bb47702467 121 {
sagara17 0:76bb47702467 122 mySPISend(dac_data[mode], dac_port, sync);
sagara17 0:76bb47702467 123 }*/
sagara17 0:76bb47702467 124 return 0;
sagara17 0:76bb47702467 125 }