ReSpeaker Switch V02
Dependencies: mbed MbedJSONValue
main.cpp
- Committer:
- Arkadi
- Date:
- 2017-06-05
- Revision:
- 0:f65ba5fb350e
- Child:
- 1:2b61ae8e6f94
File content as of revision 0:f65ba5fb350e:
//////////////////////////////////////// // Tau_ReSpeaker_DSP_Test // // Arkadiraf@gmail.com - 05/06/2017 // //////////////////////////////////////// /* Receive byte from pc to reroute input outputs b1xxxxxxx - define input port; b10000000 - port 0, b10000001 - port 1, b10000010 - port 2 etc , b10000011 - port 3 etc. b0xxxxxxx - define output ports; b10000001 - port 1, b10000011 - port 1&2, b10000000 - non. */ /* Board : Nucleo STM32F446RE Power Source : USB || Jumper 5V source from STM32 DSP board */ /* Nucleo board modification: to use PH_0 as IO modify boards as followed: SB54 and SB55 ON SB16 and SB50 (MCO) OFF http://www.st.com/content/ccc/resource/technical/document/user_manual/98/2e/fa/4b/e0/82/43/b7/DM00105823.pdf/files/DM00105823.pdf/jcr:content/translations/en.DM00105823.pdf */ /* Pinout: PC - Serial 2 PA_2 (Tx) --> STLINK PA_3 (Rx) --> STLINK Switch - Serial 3 PC_10 (Tx) --> SW_Rx PC_11 (Rx) --> SW_Tx I2C_Bus PB_8 --> SCL PB_9 --> SDA Digital output : PA_5 --> led (DigitalOut) PA_10 --> SW_Trigger MUX: CD74HC4067 PC_12 --> MUX_S0 PD_2 --> MUX_S1 PH_0 --> MUX_S2 PH_1 --> MUX_S3 Speaker Switch : SN74LVC1G3157 PB_2 --> EN_SPK_1 PB_1 --> EN_SPK_2 PB_15 --> EN_SPK_3 PB_14 --> EN_SPK_4 PB_13 --> EN_SPK_5 MIC Interrupts: PC_15 --> INTER_1 PC_14 --> INTER_2 PA_15 --> INTER_3 PA_14 --> INTER_4 PA_13 --> INTER_5 Digital Input PC_13 --> BTN (Blue) Analog Input PA_0 --> A_DATA_1 PA_1 --> A_DATA_2 PA_4 --> A_DATA_3 PB_0 --> A_DATA_4 PC_1 --> A_DATA_5 Analog Output */ /////////////// // Libraries // /////////////// #include "mbed.h" #include "BufferedSerial.h" // solves issues of loosing data. alternative doing it yourself /////////////// // #defines // /////////////// #define DEBUG_MOD1 ///////////// // Objects // ///////////// // uart BufferedSerial pc(USBTX, USBRX); // digital input DigitalIn user_button(PC_13); // digital output DigitalOut led(PA_5); DigitalOut sw_trigger(PA_10); // MUX: CD74HC4067 DigitalOut mux_s0(PC_12); DigitalOut mux_s1(PD_2); DigitalOut mux_s2(PH_0); DigitalOut mux_s3(PH_1); // speaker switch DigitalOut en_spk_1(PB_2); DigitalOut en_spk_2(PB_1); DigitalOut en_spk_3(PB_15); DigitalOut en_spk_4(PB_14); DigitalOut en_spk_5(PB_13); // MIC interrupts DigitalOut inter_1(PC_15); DigitalOut inter_2(PC_14); DigitalOut inter_3(PA_15); DigitalOut inter_4(PA_14); DigitalOut inter_5(PA_13); // analog input AnalogIn a_data_1(PA_0); AnalogIn a_data_2(PA_1); AnalogIn a_data_3(PA_4); AnalogIn a_data_4(PB_0); AnalogIn a_data_5(PC_1); /////////////// // variables // /////////////// uint8_t in_byte=0; /////////////// // Functions // /////////////// //////////////////////// // Main Code Setup : // //////////////////////// int main() { pc.baud(57600); #ifdef DEBUG_MOD1 pc.printf("ReSpeaker Test \r\n"); #endif /////////////////////// // Main Code Loop : // /////////////////////// while(1) { // check button state if (user_button) { if (pc.readable()) { in_byte=pc.getc(); #ifdef DEBUG_MOD1 pc.putc(in_byte); #endif // check if command of input or output if ((bool)(in_byte & 0b10000000)) { // set input mux_s0.write((bool)(in_byte & 0b00000001)); mux_s1.write((bool)(in_byte & 0b00000010)); mux_s2.write((bool)(in_byte & 0b00000100)); mux_s3.write((bool)(in_byte & 0b00001000)); } else { // set output en_spk_1.write((bool)(in_byte & 0b00000001)); en_spk_2.write((bool)(in_byte & 0b00000010)); en_spk_3.write((bool)(in_byte & 0b00000100)); en_spk_4.write((bool)(in_byte & 0b00001000)); en_spk_5.write((bool)(in_byte & 0b00010000)); } } } else { // set default input / output en_spk_1.write(1); en_spk_2.write(1); en_spk_3.write(1); en_spk_4.write(1); en_spk_5.write(1); // mux input mux_s0.write(0); mux_s1.write(0); mux_s2.write(0); mux_s3.write(0); } }// end main loop }// end main /////////////// // Functions // ///////////////