Playback system PGA test code

Dependencies:   BufferedSerial mbed

Committer:
Arkadi
Date:
Tue Oct 31 07:50:41 2017 +0000
Revision:
0:2542aa3b6c07
Child:
1:ae4cce570326
Playback system PGA test code

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Arkadi 0:2542aa3b6c07 1 ////////////////////////////////////////
Arkadi 0:2542aa3b6c07 2 // Tau_ReSpeaker_PGA_Test //
Arkadi 0:2542aa3b6c07 3 // Arkadiraf@gmail.com - 31/10/2017 //
Arkadi 0:2542aa3b6c07 4 ////////////////////////////////////////
Arkadi 0:2542aa3b6c07 5 /*
Arkadi 0:2542aa3b6c07 6 Receive byte from pc for settings
Arkadi 0:2542aa3b6c07 7 byyyyxxxx - y- Set PGA gain , x- select channle
Arkadi 0:2542aa3b6c07 8 Realterm mode Binary, send message 0xYX (Hex format)
Arkadi 0:2542aa3b6c07 9 */
Arkadi 0:2542aa3b6c07 10
Arkadi 0:2542aa3b6c07 11 /*
Arkadi 0:2542aa3b6c07 12 Board : Nucleo STM32F303k8
Arkadi 0:2542aa3b6c07 13 */
Arkadi 0:2542aa3b6c07 14
Arkadi 0:2542aa3b6c07 15 /*
Arkadi 0:2542aa3b6c07 16 Pinout:
Arkadi 0:2542aa3b6c07 17 PC - Serial 2
Arkadi 0:2542aa3b6c07 18 PA_2 (Tx) --> STLINK
Arkadi 0:2542aa3b6c07 19 PA_15 (Rx) --> STLINK
Arkadi 0:2542aa3b6c07 20
Arkadi 0:2542aa3b6c07 21 SPI PGA112:
Arkadi 0:2542aa3b6c07 22 PB_5 --> MOSI (DIO)
Arkadi 0:2542aa3b6c07 23 PB_4 --> MISO (DIO N.C.)
Arkadi 0:2542aa3b6c07 24 PB_3 --> SCLK
Arkadi 0:2542aa3b6c07 25 PA_11 --> SSEL (PGA_CS)
Arkadi 0:2542aa3b6c07 26 */
Arkadi 0:2542aa3b6c07 27
Arkadi 0:2542aa3b6c07 28 ///////////////
Arkadi 0:2542aa3b6c07 29 // Libraries //
Arkadi 0:2542aa3b6c07 30 ///////////////
Arkadi 0:2542aa3b6c07 31 #include "mbed.h"
Arkadi 0:2542aa3b6c07 32 #include "BufferedSerial.h" // solves issues of loosing data. alternative doing it yourself
Arkadi 0:2542aa3b6c07 33
Arkadi 0:2542aa3b6c07 34 ///////////////
Arkadi 0:2542aa3b6c07 35 // #defines //
Arkadi 0:2542aa3b6c07 36 ///////////////
Arkadi 0:2542aa3b6c07 37
Arkadi 0:2542aa3b6c07 38 #define DEBUG_MOD1
Arkadi 0:2542aa3b6c07 39
Arkadi 0:2542aa3b6c07 40 /////////////
Arkadi 0:2542aa3b6c07 41 // Objects //
Arkadi 0:2542aa3b6c07 42 /////////////
Arkadi 0:2542aa3b6c07 43
Arkadi 0:2542aa3b6c07 44 // uart
Arkadi 0:2542aa3b6c07 45 BufferedSerial pc(USBTX, USBRX);
Arkadi 0:2542aa3b6c07 46
Arkadi 0:2542aa3b6c07 47 // SPI with PGA112
Arkadi 0:2542aa3b6c07 48 SPI spi(PB_5, PB_4, PB_3); // mosi, miso, sclk , SSEL
Arkadi 0:2542aa3b6c07 49
Arkadi 0:2542aa3b6c07 50 DigitalOut PGA_CS(PA_11); // chip select manual
Arkadi 0:2542aa3b6c07 51
Arkadi 0:2542aa3b6c07 52 ///////////////
Arkadi 0:2542aa3b6c07 53 // variables //
Arkadi 0:2542aa3b6c07 54 ///////////////
Arkadi 0:2542aa3b6c07 55
Arkadi 0:2542aa3b6c07 56 uint8_t in_byte=0;
Arkadi 0:2542aa3b6c07 57
Arkadi 0:2542aa3b6c07 58 ///////////////
Arkadi 0:2542aa3b6c07 59 // Functions //
Arkadi 0:2542aa3b6c07 60 ///////////////
Arkadi 0:2542aa3b6c07 61
Arkadi 0:2542aa3b6c07 62 ////////////////////////
Arkadi 0:2542aa3b6c07 63 // Main Code Setup : //
Arkadi 0:2542aa3b6c07 64 ////////////////////////
Arkadi 0:2542aa3b6c07 65 int main()
Arkadi 0:2542aa3b6c07 66 {
Arkadi 0:2542aa3b6c07 67 pc.baud(57600);
Arkadi 0:2542aa3b6c07 68 #ifdef DEBUG_MOD1
Arkadi 0:2542aa3b6c07 69 pc.printf("MIC Test\r\n");
Arkadi 0:2542aa3b6c07 70 #endif
Arkadi 0:2542aa3b6c07 71
Arkadi 0:2542aa3b6c07 72 // Initialize PGA112
Arkadi 0:2542aa3b6c07 73 // Disable PGA112
Arkadi 0:2542aa3b6c07 74 PGA_CS=1;
Arkadi 0:2542aa3b6c07 75 wait(0.1); // module startup
Arkadi 0:2542aa3b6c07 76 // Init SPI format
Arkadi 0:2542aa3b6c07 77 spi.format(16,0);
Arkadi 0:2542aa3b6c07 78 spi.frequency(8000000);
Arkadi 0:2542aa3b6c07 79
Arkadi 0:2542aa3b6c07 80 // Enable PGA112
Arkadi 0:2542aa3b6c07 81 PGA_CS=0;
Arkadi 0:2542aa3b6c07 82 // write Register
Arkadi 0:2542aa3b6c07 83 spi.write(0x0000);
Arkadi 0:2542aa3b6c07 84 // Disable PGA112
Arkadi 0:2542aa3b6c07 85 PGA_CS=1;
Arkadi 0:2542aa3b6c07 86
Arkadi 0:2542aa3b6c07 87
Arkadi 0:2542aa3b6c07 88
Arkadi 0:2542aa3b6c07 89
Arkadi 0:2542aa3b6c07 90 ///////////////////////
Arkadi 0:2542aa3b6c07 91 // Main Code Loop : //
Arkadi 0:2542aa3b6c07 92 ///////////////////////
Arkadi 0:2542aa3b6c07 93 while(1) {
Arkadi 0:2542aa3b6c07 94 if (pc.readable()) {
Arkadi 0:2542aa3b6c07 95 in_byte=pc.getc();
Arkadi 0:2542aa3b6c07 96 #ifdef DEBUG_MOD1
Arkadi 0:2542aa3b6c07 97 pc.putc(in_byte);
Arkadi 0:2542aa3b6c07 98 #endif
Arkadi 0:2542aa3b6c07 99 uint8_t writeMSB = 0x2A;
Arkadi 0:2542aa3b6c07 100 uint8_t writeLSB = in_byte;
Arkadi 0:2542aa3b6c07 101 //uint16_t writeU16 = ((writeMSB<<8) | (writeLSB&0x00FF));
Arkadi 0:2542aa3b6c07 102 uint16_t writeU16 = ((writeMSB<<8) | (writeLSB));
Arkadi 0:2542aa3b6c07 103 PGA_CS=0;
Arkadi 0:2542aa3b6c07 104 // write Register
Arkadi 0:2542aa3b6c07 105 spi.write(writeU16);
Arkadi 0:2542aa3b6c07 106 // Disable PGA112
Arkadi 0:2542aa3b6c07 107 PGA_CS=1;
Arkadi 0:2542aa3b6c07 108
Arkadi 0:2542aa3b6c07 109 }// end serial
Arkadi 0:2542aa3b6c07 110
Arkadi 0:2542aa3b6c07 111 // // Enable PGA112
Arkadi 0:2542aa3b6c07 112 // PGA_CS=0;
Arkadi 0:2542aa3b6c07 113 // // write Register
Arkadi 0:2542aa3b6c07 114 // spi.write(0x2A00);
Arkadi 0:2542aa3b6c07 115 // // Disable PGA112
Arkadi 0:2542aa3b6c07 116 // PGA_CS=1;
Arkadi 0:2542aa3b6c07 117 //
Arkadi 0:2542aa3b6c07 118 // // delay
Arkadi 0:2542aa3b6c07 119 // wait(1.0);
Arkadi 0:2542aa3b6c07 120 //
Arkadi 0:2542aa3b6c07 121 // // Enable PGA112
Arkadi 0:2542aa3b6c07 122 // PGA_CS=0;
Arkadi 0:2542aa3b6c07 123 // // write Register
Arkadi 0:2542aa3b6c07 124 // spi.write(0x2A30);
Arkadi 0:2542aa3b6c07 125 // // Disable PGA112
Arkadi 0:2542aa3b6c07 126 // PGA_CS=1;
Arkadi 0:2542aa3b6c07 127 //
Arkadi 0:2542aa3b6c07 128 // // delay
Arkadi 0:2542aa3b6c07 129 // wait(1.0);
Arkadi 0:2542aa3b6c07 130
Arkadi 0:2542aa3b6c07 131 }// end main loop
Arkadi 0:2542aa3b6c07 132 }// end main
Arkadi 0:2542aa3b6c07 133
Arkadi 0:2542aa3b6c07 134 ///////////////
Arkadi 0:2542aa3b6c07 135 // Functions //
Arkadi 0:2542aa3b6c07 136 ///////////////