Playback system PGA test code
Dependencies: BufferedSerial mbed
main.cpp@0:2542aa3b6c07, 2017-10-31 (annotated)
- 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?
User | Revision | Line number | New 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 | /////////////// |