Arduino to Peripheral Module adapter library

Dependents:   ARD2PMD_WebServer

This library assigns the proper pins for an Arduino compatible board with the ard2pmd adapter board.

  • mux I2C pins mux(D14, D15)

Digital I/O

pmd[8] is an array of pointers to the DigitalInOut objects

IndexNamePmod
0pa11
1pa22
2pa33
3pa44
4pb17
5pb28
6pb39
7pb410

MAX14661 Multiplexer Abstraction

mux_a[17] is an array of integers representing the bit mask of a multiplexer switch arranged in Arduino order

IndexPinName
0D0RX
1D1TX
2D2D3
3D3D4
4D4PB1
5D5PB2
6D6PB3
7D7PB4
8D8D8
9D9D9
10D10PA1
11D11PA2
12D12PA3
13D13PA4
14D14SDA
15D15SCL
16na0

mux_p[9] is an array of integers representing the bit mask of a multiplexer switch arranged in Pmod order

IndexPinName
0D10PA1
1D11PA2
2D12PA3
3D13PA4
4D4PB1
5D5PB2
6D6PB3
7D7PB4
8na0
Committer:
gsteiert
Date:
Sat Feb 15 22:08:18 2014 +0000
Revision:
2:722a0e1df9a9
Parent:
0:d42cfc64e43e
Child:
3:18ae8990f74b
Fixed pin to mux mapping

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gsteiert 0:d42cfc64e43e 1 /* ARD2PMD Board Driver Library
gsteiert 0:d42cfc64e43e 2 *
gsteiert 0:d42cfc64e43e 3 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
gsteiert 0:d42cfc64e43e 4 * and associated documentation files (the "Software"), to deal in the Software without restriction,
gsteiert 0:d42cfc64e43e 5 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
gsteiert 0:d42cfc64e43e 6 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
gsteiert 0:d42cfc64e43e 7 * furnished to do so, subject to the following conditions:
gsteiert 0:d42cfc64e43e 8 *
gsteiert 0:d42cfc64e43e 9 * The above copyright notice and this permission notice shall be included in all copies or
gsteiert 0:d42cfc64e43e 10 * substantial portions of the Software.
gsteiert 0:d42cfc64e43e 11 *
gsteiert 0:d42cfc64e43e 12 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
gsteiert 0:d42cfc64e43e 13 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
gsteiert 0:d42cfc64e43e 14 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
gsteiert 0:d42cfc64e43e 15 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
gsteiert 0:d42cfc64e43e 16 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
gsteiert 0:d42cfc64e43e 17 */
gsteiert 0:d42cfc64e43e 18
gsteiert 0:d42cfc64e43e 19 #ifndef ARD2PMD_H
gsteiert 0:d42cfc64e43e 20 #define ARD2PMD_H
gsteiert 0:d42cfc64e43e 21
gsteiert 0:d42cfc64e43e 22 #include "mbed.h"
gsteiert 0:d42cfc64e43e 23 #include "MAX14661.h"
gsteiert 0:d42cfc64e43e 24
gsteiert 0:d42cfc64e43e 25
gsteiert 0:d42cfc64e43e 26 /** ARD2PMD Library, Provides utilities for configuring the Maxim ARD2PMD Board
gsteiert 0:d42cfc64e43e 27 *
gsteiert 0:d42cfc64e43e 28 * Example:
gsteiert 0:d42cfc64e43e 29 * @code
gsteiert 0:d42cfc64e43e 30 * // Configure board to pass UART signals to peripheral connector.
gsteiert 0:d42cfc64e43e 31 *
gsteiert 0:d42cfc64e43e 32 * #include "ARD2PMD.h"
gsteiert 0:d42cfc64e43e 33 *
gsteiert 0:d42cfc64e43e 34 * ARD2PMD a2p(p28, p27);
gsteiert 0:d42cfc64e43e 35 *
gsteiert 0:d42cfc64e43e 36 * int main() {
gsteiert 0:d42cfc64e43e 37 * a2p.setMux((ARD2PMD::RX | ARD2PMD::PA3), (ARD2PMD::TX | ARD2PMD::PA2));
gsteiert 0:d42cfc64e43e 38 * }
gsteiert 0:d42cfc64e43e 39 * @endcode
gsteiert 0:d42cfc64e43e 40 */
gsteiert 0:d42cfc64e43e 41 class ARD2PMD
gsteiert 0:d42cfc64e43e 42 {
gsteiert 0:d42cfc64e43e 43 public:
gsteiert 0:d42cfc64e43e 44
gsteiert 0:d42cfc64e43e 45 /** Create a ARD2PMD interface
gsteiert 0:d42cfc64e43e 46 *
gsteiert 0:d42cfc64e43e 47 * @param sda I2C data line pin
gsteiert 0:d42cfc64e43e 48 * @param scl I2C clock line pin
gsteiert 0:d42cfc64e43e 49 * @param addr MAX14661 I2C address
gsteiert 0:d42cfc64e43e 50 */
gsteiert 0:d42cfc64e43e 51 ARD2PMD(PinName sda, PinName scl, int addr = 0x98);
gsteiert 0:d42cfc64e43e 52
gsteiert 0:d42cfc64e43e 53 ~ARD2PMD();
gsteiert 0:d42cfc64e43e 54
gsteiert 0:d42cfc64e43e 55 /** Name the register addresses
gsteiert 0:d42cfc64e43e 56 */
gsteiert 0:d42cfc64e43e 57 enum MUXsignals {
gsteiert 2:722a0e1df9a9 58 RX = MAX14661::SW01, /**< UART Receive */
gsteiert 2:722a0e1df9a9 59 TX = MAX14661::SW02, /**< UART Transmit */
gsteiert 2:722a0e1df9a9 60 D2 = MAX14661::SW03, /**< Digital 2 */
gsteiert 2:722a0e1df9a9 61 D3 = MAX14661::SW04, /**< Digital 3 */
gsteiert 2:722a0e1df9a9 62 PB1 = MAX14661::SW05, /**< Pmd row B pin 1 */
gsteiert 2:722a0e1df9a9 63 PB2 = MAX14661::SW06, /**< Pmd row B pin 2 */
gsteiert 2:722a0e1df9a9 64 PB3 = MAX14661::SW07, /**< Pmd row B pin 3 */
gsteiert 2:722a0e1df9a9 65 PB4 = MAX14661::SW08, /**< Pmd row B pin 4 */
gsteiert 2:722a0e1df9a9 66 D8 = MAX14661::SW16, /**< Digital 8 */
gsteiert 2:722a0e1df9a9 67 D9 = MAX14661::SW15, /**< Digital 9 */
gsteiert 2:722a0e1df9a9 68 PA1 = MAX14661::SW14, /**< Pmd row A pin 1 */
gsteiert 2:722a0e1df9a9 69 PA2 = MAX14661::SW13, /**< Pmd row A pin 1 */
gsteiert 2:722a0e1df9a9 70 PA3 = MAX14661::SW12, /**< Pmd row A pin 1 */
gsteiert 2:722a0e1df9a9 71 PA4 = MAX14661::SW11, /**< Pmd row A pin 1 */
gsteiert 2:722a0e1df9a9 72 SDA = MAX14661::SW10, /**< I2C Data */
gsteiert 2:722a0e1df9a9 73 SCL = MAX14661::SW09 /**< I2C Clock */
gsteiert 0:d42cfc64e43e 74 };
gsteiert 0:d42cfc64e43e 75
gsteiert 0:d42cfc64e43e 76 /** Opens all mux switches
gsteiert 0:d42cfc64e43e 77 */
gsteiert 0:d42cfc64e43e 78 void clearMux();
gsteiert 0:d42cfc64e43e 79
gsteiert 0:d42cfc64e43e 80 /** Simultaneously sets both mux channels
gsteiert 0:d42cfc64e43e 81 *
gsteiert 0:d42cfc64e43e 82 * @param chA the signals to route through channel A
gsteiert 0:d42cfc64e43e 83 * @param chB the signals to route through channel B
gsteiert 0:d42cfc64e43e 84 */
gsteiert 0:d42cfc64e43e 85 void setMux(int chA, int chB);
gsteiert 0:d42cfc64e43e 86
gsteiert 0:d42cfc64e43e 87 /** Convert peripheral pin index to mux bit
gsteiert 0:d42cfc64e43e 88 *
gsteiert 0:d42cfc64e43e 89 * @param index the index [7-0] of desired pin on the peripheral connector
gsteiert 0:d42cfc64e43e 90 */
gsteiert 0:d42cfc64e43e 91 int iToMux(int index);
gsteiert 0:d42cfc64e43e 92
gsteiert 0:d42cfc64e43e 93 private:
gsteiert 0:d42cfc64e43e 94 MAX14661 _mux;
gsteiert 0:d42cfc64e43e 95 };
gsteiert 0:d42cfc64e43e 96
gsteiert 0:d42cfc64e43e 97 #endif