Library for MAXREFDES72# that supports configuration of shield for different PMOD types and the DS3231 RTC

Dependencies:   ds3231 max14661

Dependents:   ard2pmod_demo max14724_hello_world ALS_Proximity_Demo

Ard2Pmod Shield Component Page

Committer:
j3
Date:
Thu Mar 19 21:53:04 2015 +0000
Revision:
16:abb327ca5580
Parent:
15:014ab2d734e0
moved enum into class, updated max14661 and ds3231 libs

Who changed what in which revision?

UserRevisionLine numberNew contents of line
j3 0:bb62cd328247 1 /******************************************************************//**
j3 0:bb62cd328247 2 * @file ard2pmod.h
j3 0:bb62cd328247 3 *
j3 0:bb62cd328247 4 * @author Justin Jordan
j3 0:bb62cd328247 5 *
j3 14:ddd423459248 6 * @version 1.0
j3 0:bb62cd328247 7 *
j3 0:bb62cd328247 8 * Started: 11NOV14
j3 0:bb62cd328247 9 *
j3 0:bb62cd328247 10 * Updated:
j3 0:bb62cd328247 11 *
j3 0:bb62cd328247 12 * @brief Header file for ard2pmod class
j3 0:bb62cd328247 13 *
j3 0:bb62cd328247 14 ***********************************************************************
j3 0:bb62cd328247 15 *
j3 0:bb62cd328247 16 * @copyright
j3 15:014ab2d734e0 17 * Copyright (C) 2015 Maxim Integrated Products, Inc., All Rights Reserved.
j3 0:bb62cd328247 18 *
j3 0:bb62cd328247 19 * Permission is hereby granted, free of charge, to any person obtaining a
j3 0:bb62cd328247 20 * copy of this software and associated documentation files (the "Software"),
j3 0:bb62cd328247 21 * to deal in the Software without restriction, including without limitation
j3 0:bb62cd328247 22 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
j3 0:bb62cd328247 23 * and/or sell copies of the Software, and to permit persons to whom the
j3 0:bb62cd328247 24 * Software is furnished to do so, subject to the following conditions:
j3 0:bb62cd328247 25 *
j3 0:bb62cd328247 26 * The above copyright notice and this permission notice shall be included
j3 0:bb62cd328247 27 * in all copies or substantial portions of the Software.
j3 0:bb62cd328247 28 *
j3 0:bb62cd328247 29 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
j3 0:bb62cd328247 30 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
j3 0:bb62cd328247 31 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
j3 0:bb62cd328247 32 * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
j3 0:bb62cd328247 33 * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
j3 0:bb62cd328247 34 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
j3 0:bb62cd328247 35 * OTHER DEALINGS IN THE SOFTWARE.
j3 0:bb62cd328247 36 *
j3 0:bb62cd328247 37 * Except as contained in this notice, the name of Maxim Integrated
j3 0:bb62cd328247 38 * Products, Inc. shall not be used except as stated in the Maxim Integrated
j3 0:bb62cd328247 39 * Products, Inc. Branding Policy.
j3 0:bb62cd328247 40 *
j3 0:bb62cd328247 41 * The mere transfer of this software does not imply any licenses
j3 0:bb62cd328247 42 * of trade secrets, proprietary technology, copyrights, patents,
j3 0:bb62cd328247 43 * trademarks, maskwork rights, or any other form of intellectual
j3 0:bb62cd328247 44 * property whatsoever. Maxim Integrated Products, Inc. retains all
j3 0:bb62cd328247 45 * ownership rights.
j3 0:bb62cd328247 46 **********************************************************************/
j3 0:bb62cd328247 47
j3 0:bb62cd328247 48
j3 0:bb62cd328247 49 #ifndef ARD2PMOD_H
j3 0:bb62cd328247 50 #define ARD2PMOD_H
j3 0:bb62cd328247 51
j3 0:bb62cd328247 52
j3 0:bb62cd328247 53 #include "mbed.h"
j3 0:bb62cd328247 54 #include "max14661.h"
j3 0:bb62cd328247 55 #include "ds3231.h"
j3 0:bb62cd328247 56
j3 0:bb62cd328247 57
j3 0:bb62cd328247 58 #define ARD2PMOD_SDA D14
j3 0:bb62cd328247 59 #define ARD2PMOD_SCL D15
j3 0:bb62cd328247 60
j3 0:bb62cd328247 61
j3 0:bb62cd328247 62 /******************************************************************//**
j3 0:bb62cd328247 63 * Ard2Pmod Class
j3 0:bb62cd328247 64 * Used for establishing PMOD type, MAX14661 16:2 mux,
j3 0:bb62cd328247 65 * and DS3231 RTC interface
j3 0:bb62cd328247 66 *
j3 0:bb62cd328247 67 * Please See MAXREFDES72# pcb schematic for constraints.
j3 0:bb62cd328247 68 *
j3 4:349f2ec17a4b 69 * PMOD_TYPE_I2C_A -
j3 4:349f2ec17a4b 70 * Switches SWA9, SWA12 and SWB10, SWB11 closed. All other switches
j3 4:349f2ec17a4b 71 * open
j3 4:349f2ec17a4b 72 *
j3 4:349f2ec17a4b 73 * PMOD_TYPE_I2C_B -
j3 4:349f2ec17a4b 74 * Switches SWA9, SWA7 and SWB10, SWB8 closed. All other switches
j3 4:349f2ec17a4b 75 * open
j3 4:349f2ec17a4b 76 *
j3 4:349f2ec17a4b 77 * PMOD_TYPE_I2C_AB -
j3 0:bb62cd328247 78 * Switches SWA7, SWA9, SWA12 and SWB8, SWB10, SWB11 closed. All other
j3 0:bb62cd328247 79 * switches open
j3 0:bb62cd328247 80 *
j3 0:bb62cd328247 81 * PMOD_TYPE_1_GPIO -
j3 0:bb62cd328247 82 * Switches all open, mux not used
j3 0:bb62cd328247 83 *
j3 0:bb62cd328247 84 * PMOD_TYPE_2_SPI -
j3 0:bb62cd328247 85 * Switches all open, mux not used
j3 0:bb62cd328247 86 *
j3 0:bb62cd328247 87 * PMOD_TYPE_3_UART -
j3 13:41ebe12b9492 88 * Switches SWA12, SWA1, SWB11, SWB2 closed. All other switches open.
j3 0:bb62cd328247 89 *
j3 0:bb62cd328247 90 * PMOD_TYPE_4_UART -
j3 13:41ebe12b9492 91 * Switches SWA13, SWA2, SWB12, SWB1 closed. All other switches open.
j3 0:bb62cd328247 92 *
j3 0:bb62cd328247 93 * PMOD_TYPE_5_HBRIDGE -
j3 0:bb62cd328247 94 * Switches all open, mux not used
j3 0:bb62cd328247 95 *
j3 0:bb62cd328247 96 * PMOD_TYPE_6_HBRIDGE -
j3 0:bb62cd328247 97 * Switches all open, mux not used
j3 0:bb62cd328247 98 **********************************************************************/
j3 0:bb62cd328247 99 class Ard2Pmod : public Max14661, public Ds3231
j3 0:bb62cd328247 100 {
j3 0:bb62cd328247 101 public:
j3 16:abb327ca5580 102
j3 16:abb327ca5580 103 /**
j3 16:abb327ca5580 104 * pmod_type_t - enumerated PMOD types
j3 16:abb327ca5580 105 */
j3 16:abb327ca5580 106 typedef enum
j3 16:abb327ca5580 107 {
j3 16:abb327ca5580 108 PMOD_TYPE_I2C_A,
j3 16:abb327ca5580 109 PMOD_TYPE_I2C_B,
j3 16:abb327ca5580 110 PMOD_TYPE_I2C_AB,
j3 16:abb327ca5580 111 PMOD_TYPE_1_GPIO,
j3 16:abb327ca5580 112 PMOD_TYPE_2_SPI,
j3 16:abb327ca5580 113 PMOD_TYPE_3_UART,
j3 16:abb327ca5580 114 PMOD_TYPE_4_UART,
j3 16:abb327ca5580 115 PMOD_TYPE_5_HBRIDGE,
j3 16:abb327ca5580 116 PMOD_TYPE_6_HBRIDGE
j3 16:abb327ca5580 117 }pmod_type_t;
j3 16:abb327ca5580 118
j3 16:abb327ca5580 119
j3 6:9e75c6a2dff5 120 /**************************************************************//**
j3 6:9e75c6a2dff5 121 * Default constructor for Ard2Pmod Class, all mux switches open
j3 6:9e75c6a2dff5 122 * Use with Max14661 member functions for custom mux settings
j3 6:9e75c6a2dff5 123 *
j3 6:9e75c6a2dff5 124 * On Entry:
j3 6:9e75c6a2dff5 125 *
j3 6:9e75c6a2dff5 126 * On Exit:
j3 6:9e75c6a2dff5 127 * @return none
j3 6:9e75c6a2dff5 128 *
j3 6:9e75c6a2dff5 129 * Example:
j3 6:9e75c6a2dff5 130 * @code
j3 6:9e75c6a2dff5 131 * #include "ard2pmod.h"
j3 6:9e75c6a2dff5 132 *
j3 6:9e75c6a2dff5 133 * int main(void)
j3 6:9e75c6a2dff5 134 * {
j3 7:d3881d2c2d6b 135 * Ard2Pmod ard2pmod;
j3 6:9e75c6a2dff5 136 *
j3 6:9e75c6a2dff5 137 * //main app.
j3 6:9e75c6a2dff5 138 * for(;;)
j3 6:9e75c6a2dff5 139 * {
j3 6:9e75c6a2dff5 140 * }
j3 6:9e75c6a2dff5 141 * }
j3 6:9e75c6a2dff5 142 * @endcode
j3 6:9e75c6a2dff5 143 ******************************************************************/
j3 6:9e75c6a2dff5 144 Ard2Pmod();
j3 6:9e75c6a2dff5 145
j3 6:9e75c6a2dff5 146
j3 0:bb62cd328247 147 /**************************************************************//**
j3 0:bb62cd328247 148 * Constructor for Ard2Pmod Class
j3 0:bb62cd328247 149 *
j3 0:bb62cd328247 150 * On Entry:
j3 0:bb62cd328247 151 * @param[in] pmod_type - desired PMOD interface
j3 0:bb62cd328247 152 *
j3 0:bb62cd328247 153 * On Exit:
j3 0:bb62cd328247 154 * @return none
j3 0:bb62cd328247 155 *
j3 0:bb62cd328247 156 * Example:
j3 0:bb62cd328247 157 * @code
j3 0:bb62cd328247 158 * #include "ard2pmod.h"
j3 0:bb62cd328247 159 *
j3 0:bb62cd328247 160 * int main(void)
j3 0:bb62cd328247 161 * {
j3 0:bb62cd328247 162 * Ard2Pmod ard2pmod(PMOD_TYPE_1_GPIO);
j3 0:bb62cd328247 163 *
j3 0:bb62cd328247 164 * //main app.
j3 0:bb62cd328247 165 * for(;;)
j3 0:bb62cd328247 166 * {
j3 0:bb62cd328247 167 * }
j3 0:bb62cd328247 168 * }
j3 0:bb62cd328247 169 * @endcode
j3 0:bb62cd328247 170 ******************************************************************/
j3 0:bb62cd328247 171 Ard2Pmod(pmod_type_t pmod_type);
j3 0:bb62cd328247 172
j3 0:bb62cd328247 173 };
j3 0:bb62cd328247 174
j3 0:bb62cd328247 175
j3 0:bb62cd328247 176 #endif /* ARD2PMOD_H*/