MCP41XXX/42XXX. Single/Dual Digital Potentiometer with SPI™ Interface
MCP41XXX_42XXX.h@2:81f5716e32f7, 2018-08-21 (annotated)
- Committer:
- mcm
- Date:
- Tue Aug 21 15:44:32 2018 +0000
- Revision:
- 2:81f5716e32f7
- Parent:
- 1:ba1b5b4001f7
cs pin was forgotten, now the chip selects works as expected.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mcm | 1:ba1b5b4001f7 | 1 | /** |
mcm | 1:ba1b5b4001f7 | 2 | * @brief MCP41XXX_42XXX.h |
mcm | 1:ba1b5b4001f7 | 3 | * @details Single/Dual Digital Potentiometer with SPI™ Interface. |
mcm | 1:ba1b5b4001f7 | 4 | * Header file. |
mcm | 1:ba1b5b4001f7 | 5 | * |
mcm | 1:ba1b5b4001f7 | 6 | * |
mcm | 1:ba1b5b4001f7 | 7 | * @return N/A |
mcm | 1:ba1b5b4001f7 | 8 | * |
mcm | 1:ba1b5b4001f7 | 9 | * @author Manuel Caballero |
mcm | 1:ba1b5b4001f7 | 10 | * @date 21/August/2018 |
mcm | 1:ba1b5b4001f7 | 11 | * @version 21/August/2018 The ORIGIN |
mcm | 1:ba1b5b4001f7 | 12 | * @pre N/A. |
mcm | 1:ba1b5b4001f7 | 13 | * @warning N/A |
mcm | 1:ba1b5b4001f7 | 14 | * @pre This code belongs to AqueronteBlog ( http://unbarquero.blogspot.com ). |
mcm | 1:ba1b5b4001f7 | 15 | */ |
mcm | 1:ba1b5b4001f7 | 16 | #ifndef MCP41XXX_42XXX_H |
mcm | 1:ba1b5b4001f7 | 17 | #define MCP41XXX_42XXX_H |
mcm | 1:ba1b5b4001f7 | 18 | |
mcm | 1:ba1b5b4001f7 | 19 | #include "mbed.h" |
mcm | 1:ba1b5b4001f7 | 20 | /** |
mcm | 1:ba1b5b4001f7 | 21 | Example: |
mcm | 1:ba1b5b4001f7 | 22 | @code |
mcm | 1:ba1b5b4001f7 | 23 | |
mcm | 1:ba1b5b4001f7 | 24 | @endcode |
mcm | 1:ba1b5b4001f7 | 25 | */ |
mcm | 1:ba1b5b4001f7 | 26 | |
mcm | 1:ba1b5b4001f7 | 27 | |
mcm | 1:ba1b5b4001f7 | 28 | /*! |
mcm | 1:ba1b5b4001f7 | 29 | Library for the MCP41XXX_42XXX 3D Single/Dual Digital Potentiometer with SPI™ Interface. |
mcm | 1:ba1b5b4001f7 | 30 | */ |
mcm | 1:ba1b5b4001f7 | 31 | class MCP41XXX_42XXX |
mcm | 1:ba1b5b4001f7 | 32 | { |
mcm | 1:ba1b5b4001f7 | 33 | public: |
mcm | 1:ba1b5b4001f7 | 34 | /* Command Byte */ |
mcm | 1:ba1b5b4001f7 | 35 | /** |
mcm | 1:ba1b5b4001f7 | 36 | * @brief COMMAND SELECTION BITS |
mcm | 1:ba1b5b4001f7 | 37 | */ |
mcm | 1:ba1b5b4001f7 | 38 | typedef enum { |
mcm | 1:ba1b5b4001f7 | 39 | MCP41XXX_42XXX_COMMAND_NONE = ( 0b00 << 4 ), /*!< No Command will be executed */ |
mcm | 1:ba1b5b4001f7 | 40 | MCP41XXX_42XXX_COMMAND_WRITE_DATA = ( 0b01 << 4 ), /*!< Write the data contained in Data Byte to the potentiometer(s) determined by the potentiometer selection bits */ |
mcm | 1:ba1b5b4001f7 | 41 | MCP41XXX_42XXX_COMMAND_SHUTDOWN = ( 0b10 << 4 ) /*!< Potentiometer(s) determined by potentiometer selection bits will enter Shutdown Mode. Data bits for this command are 'don't cares' */ |
mcm | 1:ba1b5b4001f7 | 42 | } MCP41XXX_42XXX_command_selection_bits_t; |
mcm | 1:ba1b5b4001f7 | 43 | |
mcm | 1:ba1b5b4001f7 | 44 | |
mcm | 1:ba1b5b4001f7 | 45 | /** |
mcm | 1:ba1b5b4001f7 | 46 | * @brief POTENTIOMETER SELECTION BITS |
mcm | 1:ba1b5b4001f7 | 47 | */ |
mcm | 1:ba1b5b4001f7 | 48 | typedef enum { |
mcm | 1:ba1b5b4001f7 | 49 | MCP41XXX_42XXX_POTENTIOMETER_DUMMY_CODE = ( 0b00 << 0 ), /*!< Dummy Code: Neither Potentiometer affected */ |
mcm | 1:ba1b5b4001f7 | 50 | MCP41XXX_42XXX_POTENTIOMETER_COMMAND_POTENTIOMETER_0 = ( 0b01 << 0 ), /*!< Command executed on Potentiometer 0 */ |
mcm | 1:ba1b5b4001f7 | 51 | MCP41XXX_42XXX_POTENTIOMETER_COMMAND_POTENTIOMETER_1 = ( 0b10 << 0 ), /*!< Command executed on Potentiometer 1 */ |
mcm | 1:ba1b5b4001f7 | 52 | MCP41XXX_42XXX_POTENTIOMETER_COMMAND_BOTH_POTENTIOMETERS = ( 0b11 << 0 ) /*!< Command executed on both Potentiometers */ |
mcm | 1:ba1b5b4001f7 | 53 | } MCP41XXX_42XXX_potentiometer_selection_bits_t; |
mcm | 1:ba1b5b4001f7 | 54 | |
mcm | 1:ba1b5b4001f7 | 55 | |
mcm | 1:ba1b5b4001f7 | 56 | |
mcm | 1:ba1b5b4001f7 | 57 | |
mcm | 1:ba1b5b4001f7 | 58 | |
mcm | 1:ba1b5b4001f7 | 59 | #ifndef MCP41XXX_42XXX_VECTOR_STRUCT_H |
mcm | 1:ba1b5b4001f7 | 60 | #define MCP41XXX_42XXX_VECTOR_STRUCT_H |
mcm | 1:ba1b5b4001f7 | 61 | typedef struct { |
mcm | 1:ba1b5b4001f7 | 62 | uint8_t Dn; |
mcm | 1:ba1b5b4001f7 | 63 | } MCP41XXX_42XXX_vector_data_t; |
mcm | 1:ba1b5b4001f7 | 64 | #endif |
mcm | 1:ba1b5b4001f7 | 65 | |
mcm | 1:ba1b5b4001f7 | 66 | |
mcm | 1:ba1b5b4001f7 | 67 | |
mcm | 1:ba1b5b4001f7 | 68 | /** |
mcm | 1:ba1b5b4001f7 | 69 | * @brief INTERNAL CONSTANTS |
mcm | 1:ba1b5b4001f7 | 70 | */ |
mcm | 1:ba1b5b4001f7 | 71 | typedef enum { |
mcm | 1:ba1b5b4001f7 | 72 | MCP41XXX_42XXX_SUCCESS = 0, |
mcm | 1:ba1b5b4001f7 | 73 | MCP41XXX_42XXX_FAILURE = 1, |
mcm | 1:ba1b5b4001f7 | 74 | SPI_SUCCESS = 1 |
mcm | 1:ba1b5b4001f7 | 75 | } MCP41XXX_42XXX_status_t; |
mcm | 1:ba1b5b4001f7 | 76 | |
mcm | 1:ba1b5b4001f7 | 77 | |
mcm | 1:ba1b5b4001f7 | 78 | |
mcm | 1:ba1b5b4001f7 | 79 | |
mcm | 1:ba1b5b4001f7 | 80 | /** Create an MCP41XXX_42XXX object connected to the specified SPI pins. |
mcm | 1:ba1b5b4001f7 | 81 | * |
mcm | 1:ba1b5b4001f7 | 82 | * @param mosi SPI Master Output Slave Input |
mcm | 1:ba1b5b4001f7 | 83 | * @param miso SPI Master Input Slave Output |
mcm | 1:ba1b5b4001f7 | 84 | * @param sclk SPI clock |
mcm | 1:ba1b5b4001f7 | 85 | * @param cs SPI Chip Select |
mcm | 1:ba1b5b4001f7 | 86 | * @param freq SPI frequency in Hz. |
mcm | 1:ba1b5b4001f7 | 87 | */ |
mcm | 1:ba1b5b4001f7 | 88 | MCP41XXX_42XXX ( PinName mosi, PinName miso, PinName sclk, PinName cs, uint32_t freq ); |
mcm | 1:ba1b5b4001f7 | 89 | |
mcm | 1:ba1b5b4001f7 | 90 | /** Delete MCP41XXX_42XXX object. |
mcm | 1:ba1b5b4001f7 | 91 | */ |
mcm | 1:ba1b5b4001f7 | 92 | ~MCP41XXX_42XXX(); |
mcm | 1:ba1b5b4001f7 | 93 | |
mcm | 1:ba1b5b4001f7 | 94 | /** It updates the wiper value on the given channel. |
mcm | 1:ba1b5b4001f7 | 95 | */ |
mcm | 1:ba1b5b4001f7 | 96 | MCP41XXX_42XXX_status_t MCP41XXX_42XXX_SetWiper ( MCP41XXX_42XXX_potentiometer_selection_bits_t myChannel, MCP41XXX_42XXX_vector_data_t myWiperValue ); |
mcm | 1:ba1b5b4001f7 | 97 | |
mcm | 1:ba1b5b4001f7 | 98 | /** It performs a software shutdown. |
mcm | 1:ba1b5b4001f7 | 99 | */ |
mcm | 1:ba1b5b4001f7 | 100 | MCP41XXX_42XXX_status_t MCP41XXX_42XXX_SoftwareShutdown ( MCP41XXX_42XXX_potentiometer_selection_bits_t myChannel ); |
mcm | 1:ba1b5b4001f7 | 101 | |
mcm | 1:ba1b5b4001f7 | 102 | private: |
mcm | 1:ba1b5b4001f7 | 103 | SPI _spi; |
mcm | 1:ba1b5b4001f7 | 104 | DigitalOut _cs; |
mcm | 1:ba1b5b4001f7 | 105 | }; |
mcm | 1:ba1b5b4001f7 | 106 | |
mcm | 1:ba1b5b4001f7 | 107 | #endif |