Audio singal input and output example for DISCO-F746. Input: MEMS mic, Output: CN10 OUT, Acoustic effect: echo and frequency shift. DISCO-F746 によるオーディオ信号入出力.入力:MEMS マイク,出力:CN10 OUT,音響効果:エコー,周波数変換.

Dependencies:   F746_GUI F746_SAI_IO

Committer:
MikamiUitOpen
Date:
Mon Apr 10 13:44:13 2017 +0000
Revision:
10:56f2f01df983
Parent:
6:38f7dce055d0
11

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 6:38f7dce055d0 1 /* mbed Microcontroller Library
MikamiUitOpen 6:38f7dce055d0 2 * Copyright (c) 2006-2013 ARM Limited
MikamiUitOpen 6:38f7dce055d0 3 *
MikamiUitOpen 6:38f7dce055d0 4 * Licensed under the Apache License, Version 2.0 (the "License");
MikamiUitOpen 6:38f7dce055d0 5 * you may not use this file except in compliance with the License.
MikamiUitOpen 6:38f7dce055d0 6 * You may obtain a copy of the License at
MikamiUitOpen 6:38f7dce055d0 7 *
MikamiUitOpen 6:38f7dce055d0 8 * http://www.apache.org/licenses/LICENSE-2.0
MikamiUitOpen 6:38f7dce055d0 9 *
MikamiUitOpen 6:38f7dce055d0 10 * Unless required by applicable law or agreed to in writing, software
MikamiUitOpen 6:38f7dce055d0 11 * distributed under the License is distributed on an "AS IS" BASIS,
MikamiUitOpen 6:38f7dce055d0 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
MikamiUitOpen 6:38f7dce055d0 13 * See the License for the specific language governing permissions and
MikamiUitOpen 6:38f7dce055d0 14 * limitations under the License.
MikamiUitOpen 6:38f7dce055d0 15 */
MikamiUitOpen 6:38f7dce055d0 16 #include "BusInOut.h"
MikamiUitOpen 6:38f7dce055d0 17 #include "mbed_assert.h"
MikamiUitOpen 6:38f7dce055d0 18
MikamiUitOpen 6:38f7dce055d0 19 namespace mbed {
MikamiUitOpen 6:38f7dce055d0 20
MikamiUitOpen 6:38f7dce055d0 21 BusInOut::BusInOut(PinName p0, PinName p1, PinName p2, PinName p3, PinName p4, PinName p5, PinName p6, PinName p7, PinName p8, PinName p9, PinName p10, PinName p11, PinName p12, PinName p13, PinName p14, PinName p15) {
MikamiUitOpen 6:38f7dce055d0 22 PinName pins[16] = {p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15};
MikamiUitOpen 6:38f7dce055d0 23
MikamiUitOpen 6:38f7dce055d0 24 _nc_mask = 0;
MikamiUitOpen 6:38f7dce055d0 25 for (int i=0; i<16; i++) {
MikamiUitOpen 6:38f7dce055d0 26 _pin[i] = (pins[i] != NC) ? new DigitalInOut(pins[i]) : 0;
MikamiUitOpen 6:38f7dce055d0 27 if (pins[i] != NC) {
MikamiUitOpen 6:38f7dce055d0 28 _nc_mask |= (1 << i);
MikamiUitOpen 6:38f7dce055d0 29 }
MikamiUitOpen 6:38f7dce055d0 30 }
MikamiUitOpen 6:38f7dce055d0 31 }
MikamiUitOpen 6:38f7dce055d0 32
MikamiUitOpen 6:38f7dce055d0 33 BusInOut::BusInOut(PinName pins[16]) {
MikamiUitOpen 6:38f7dce055d0 34 _nc_mask = 0;
MikamiUitOpen 6:38f7dce055d0 35 for (int i=0; i<16; i++) {
MikamiUitOpen 6:38f7dce055d0 36 _pin[i] = (pins[i] != NC) ? new DigitalInOut(pins[i]) : 0;
MikamiUitOpen 6:38f7dce055d0 37 if (pins[i] != NC) {
MikamiUitOpen 6:38f7dce055d0 38 _nc_mask |= (1 << i);
MikamiUitOpen 6:38f7dce055d0 39 }
MikamiUitOpen 6:38f7dce055d0 40 }
MikamiUitOpen 6:38f7dce055d0 41 }
MikamiUitOpen 6:38f7dce055d0 42
MikamiUitOpen 6:38f7dce055d0 43 BusInOut::~BusInOut() {
MikamiUitOpen 6:38f7dce055d0 44 for (int i=0; i<16; i++) {
MikamiUitOpen 6:38f7dce055d0 45 if (_pin[i] != 0) {
MikamiUitOpen 6:38f7dce055d0 46 delete _pin[i];
MikamiUitOpen 6:38f7dce055d0 47 }
MikamiUitOpen 6:38f7dce055d0 48 }
MikamiUitOpen 6:38f7dce055d0 49 }
MikamiUitOpen 6:38f7dce055d0 50
MikamiUitOpen 6:38f7dce055d0 51 void BusInOut::write(int value) {
MikamiUitOpen 6:38f7dce055d0 52 for (int i=0; i<16; i++) {
MikamiUitOpen 6:38f7dce055d0 53 if (_pin[i] != 0) {
MikamiUitOpen 6:38f7dce055d0 54 _pin[i]->write((value >> i) & 1);
MikamiUitOpen 6:38f7dce055d0 55 }
MikamiUitOpen 6:38f7dce055d0 56 }
MikamiUitOpen 6:38f7dce055d0 57 }
MikamiUitOpen 6:38f7dce055d0 58
MikamiUitOpen 6:38f7dce055d0 59 int BusInOut::read() {
MikamiUitOpen 6:38f7dce055d0 60 int v = 0;
MikamiUitOpen 6:38f7dce055d0 61 for (int i=0; i<16; i++) {
MikamiUitOpen 6:38f7dce055d0 62 if (_pin[i] != 0) {
MikamiUitOpen 6:38f7dce055d0 63 v |= _pin[i]->read() << i;
MikamiUitOpen 6:38f7dce055d0 64 }
MikamiUitOpen 6:38f7dce055d0 65 }
MikamiUitOpen 6:38f7dce055d0 66 return v;
MikamiUitOpen 6:38f7dce055d0 67 }
MikamiUitOpen 6:38f7dce055d0 68
MikamiUitOpen 6:38f7dce055d0 69 void BusInOut::output() {
MikamiUitOpen 6:38f7dce055d0 70 for (int i=0; i<16; i++) {
MikamiUitOpen 6:38f7dce055d0 71 if (_pin[i] != 0) {
MikamiUitOpen 6:38f7dce055d0 72 _pin[i]->output();
MikamiUitOpen 6:38f7dce055d0 73 }
MikamiUitOpen 6:38f7dce055d0 74 }
MikamiUitOpen 6:38f7dce055d0 75 }
MikamiUitOpen 6:38f7dce055d0 76
MikamiUitOpen 6:38f7dce055d0 77 void BusInOut::input() {
MikamiUitOpen 6:38f7dce055d0 78 for (int i=0; i<16; i++) {
MikamiUitOpen 6:38f7dce055d0 79 if (_pin[i] != 0) {
MikamiUitOpen 6:38f7dce055d0 80 _pin[i]->input();
MikamiUitOpen 6:38f7dce055d0 81 }
MikamiUitOpen 6:38f7dce055d0 82 }
MikamiUitOpen 6:38f7dce055d0 83 }
MikamiUitOpen 6:38f7dce055d0 84
MikamiUitOpen 6:38f7dce055d0 85 void BusInOut::mode(PinMode pull) {
MikamiUitOpen 6:38f7dce055d0 86 for (int i=0; i<16; i++) {
MikamiUitOpen 6:38f7dce055d0 87 if (_pin[i] != 0) {
MikamiUitOpen 6:38f7dce055d0 88 _pin[i]->mode(pull);
MikamiUitOpen 6:38f7dce055d0 89 }
MikamiUitOpen 6:38f7dce055d0 90 }
MikamiUitOpen 6:38f7dce055d0 91 }
MikamiUitOpen 6:38f7dce055d0 92
MikamiUitOpen 6:38f7dce055d0 93 #ifdef MBED_OPERATORS
MikamiUitOpen 6:38f7dce055d0 94 BusInOut& BusInOut::operator= (int v) {
MikamiUitOpen 6:38f7dce055d0 95 write(v);
MikamiUitOpen 6:38f7dce055d0 96 return *this;
MikamiUitOpen 6:38f7dce055d0 97 }
MikamiUitOpen 6:38f7dce055d0 98
MikamiUitOpen 6:38f7dce055d0 99 BusInOut& BusInOut::operator= (BusInOut& rhs) {
MikamiUitOpen 6:38f7dce055d0 100 write(rhs.read());
MikamiUitOpen 6:38f7dce055d0 101 return *this;
MikamiUitOpen 6:38f7dce055d0 102 }
MikamiUitOpen 6:38f7dce055d0 103
MikamiUitOpen 6:38f7dce055d0 104 DigitalInOut& BusInOut::operator[] (int index) {
MikamiUitOpen 6:38f7dce055d0 105 MBED_ASSERT(index >= 0 && index <= 16);
MikamiUitOpen 6:38f7dce055d0 106 MBED_ASSERT(_pin[index]);
MikamiUitOpen 6:38f7dce055d0 107 return *_pin[index];
MikamiUitOpen 6:38f7dce055d0 108 }
MikamiUitOpen 6:38f7dce055d0 109
MikamiUitOpen 6:38f7dce055d0 110 BusInOut::operator int() {
MikamiUitOpen 6:38f7dce055d0 111 return read();
MikamiUitOpen 6:38f7dce055d0 112 }
MikamiUitOpen 6:38f7dce055d0 113 #endif
MikamiUitOpen 6:38f7dce055d0 114
MikamiUitOpen 6:38f7dce055d0 115 } // namespace mbed