Committer:
mcm
Date:
Wed Oct 11 16:06:06 2017 +0000
Revision:
2:5cbf7e01ee23
Parent:
1:26bfcb9024a0
The driver was completed and tested, it works as expected.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mcm 1:26bfcb9024a0 1 /**
mcm 1:26bfcb9024a0 2 * @brief PCF8574.h
mcm 1:26bfcb9024a0 3 * @details Remote 8-bit I/O expander for I2C-bus with interrupt.
mcm 1:26bfcb9024a0 4 * Functions file.
mcm 1:26bfcb9024a0 5 *
mcm 1:26bfcb9024a0 6 *
mcm 1:26bfcb9024a0 7 * @return NA
mcm 1:26bfcb9024a0 8 *
mcm 1:26bfcb9024a0 9 * @author Manuel Caballero
mcm 1:26bfcb9024a0 10 * @date 11/October/2017
mcm 1:26bfcb9024a0 11 * @version 11/October/2017 The ORIGIN
mcm 1:26bfcb9024a0 12 * @pre NaN.
mcm 1:26bfcb9024a0 13 * @warning NaN
mcm 1:26bfcb9024a0 14 * @pre This code belongs to AqueronteBlog ( http://unbarquero.blogspot.com ).
mcm 1:26bfcb9024a0 15 */
mcm 1:26bfcb9024a0 16
mcm 1:26bfcb9024a0 17 #include "PCF8574.h"
mcm 1:26bfcb9024a0 18
mcm 1:26bfcb9024a0 19
mcm 1:26bfcb9024a0 20 PCF8574::PCF8574 ( PinName sda, PinName scl, uint32_t addr, uint32_t freq )
mcm 1:26bfcb9024a0 21 : i2c ( sda, scl )
mcm 2:5cbf7e01ee23 22 , PCF8574_Addr ( addr )
mcm 1:26bfcb9024a0 23 {
mcm 1:26bfcb9024a0 24 i2c.frequency( freq );
mcm 1:26bfcb9024a0 25 }
mcm 1:26bfcb9024a0 26
mcm 1:26bfcb9024a0 27
mcm 1:26bfcb9024a0 28 PCF8574::~PCF8574()
mcm 1:26bfcb9024a0 29 {
mcm 1:26bfcb9024a0 30 }
mcm 1:26bfcb9024a0 31
mcm 1:26bfcb9024a0 32
mcm 1:26bfcb9024a0 33
mcm 1:26bfcb9024a0 34 /**
mcm 1:26bfcb9024a0 35 * @brief PCF8574_SetPins ( PCF8574_vector_data_t )
mcm 1:26bfcb9024a0 36 *
mcm 1:26bfcb9024a0 37 * @details It configures/sets the pins of the device.
mcm 1:26bfcb9024a0 38 *
mcm 1:26bfcb9024a0 39 * @param[in] myConfDATA: Data to set up the device.
mcm 1:26bfcb9024a0 40 *
mcm 1:26bfcb9024a0 41 * @param[out] NaN.
mcm 1:26bfcb9024a0 42 *
mcm 1:26bfcb9024a0 43 *
mcm 1:26bfcb9024a0 44 * @return Status of PCF8574_SetPins.
mcm 1:26bfcb9024a0 45 *
mcm 1:26bfcb9024a0 46 *
mcm 1:26bfcb9024a0 47 * @author Manuel Caballero
mcm 1:26bfcb9024a0 48 * @date 11/October/2017
mcm 1:26bfcb9024a0 49 * @version 11/October/2017 The ORIGIN
mcm 1:26bfcb9024a0 50 * @pre NaN
mcm 1:26bfcb9024a0 51 * @warning NaN.
mcm 1:26bfcb9024a0 52 */
mcm 1:26bfcb9024a0 53 PCF8574::PCF8574_status_t PCF8574::PCF8574_SetPins ( PCF8574_vector_data_t myConfDATA )
mcm 1:26bfcb9024a0 54 {
mcm 1:26bfcb9024a0 55 uint32_t aux = 0;
mcm 1:26bfcb9024a0 56
mcm 1:26bfcb9024a0 57
mcm 1:26bfcb9024a0 58 aux = i2c.write ( PCF8574_Addr, &myConfDATA.data, 1 );
mcm 1:26bfcb9024a0 59
mcm 1:26bfcb9024a0 60
mcm 1:26bfcb9024a0 61
mcm 1:26bfcb9024a0 62 if ( aux == I2C_SUCCESS )
mcm 1:26bfcb9024a0 63 return PCF8574_SUCCESS;
mcm 1:26bfcb9024a0 64 else
mcm 1:26bfcb9024a0 65 return PCF8574_FAILURE;
mcm 1:26bfcb9024a0 66 }
mcm 1:26bfcb9024a0 67
mcm 1:26bfcb9024a0 68
mcm 1:26bfcb9024a0 69
mcm 1:26bfcb9024a0 70 /**
mcm 1:26bfcb9024a0 71 * @brief PCF8574_ReadPins ( PCF8574_vector_data_t* )
mcm 1:26bfcb9024a0 72 *
mcm 1:26bfcb9024a0 73 * @details It gets the data from the device ( port status ).
mcm 1:26bfcb9024a0 74 *
mcm 1:26bfcb9024a0 75 * @param[in] NaN.
mcm 1:26bfcb9024a0 76 *
mcm 1:26bfcb9024a0 77 * @param[out] myReadDATA: ADC result into the chosen channel.
mcm 1:26bfcb9024a0 78 *
mcm 1:26bfcb9024a0 79 *
mcm 1:26bfcb9024a0 80 * @return Status of PCF8574_ReadPins.
mcm 1:26bfcb9024a0 81 *
mcm 1:26bfcb9024a0 82 *
mcm 1:26bfcb9024a0 83 * @author Manuel Caballero
mcm 1:26bfcb9024a0 84 * @date 11/October/2017
mcm 1:26bfcb9024a0 85 * @version 11/October/2017 The ORIGIN
mcm 1:26bfcb9024a0 86 * @pre NaN
mcm 1:26bfcb9024a0 87 * @warning NaN.
mcm 1:26bfcb9024a0 88 */
mcm 1:26bfcb9024a0 89 PCF8574::PCF8574_status_t PCF8574::PCF8574_ReadPins ( PCF8574_vector_data_t* myReadDATA )
mcm 1:26bfcb9024a0 90 {
mcm 1:26bfcb9024a0 91 uint32_t aux = 0;
mcm 1:26bfcb9024a0 92
mcm 1:26bfcb9024a0 93
mcm 1:26bfcb9024a0 94 aux = i2c.read ( PCF8574_Addr, &myReadDATA->data, 1 );
mcm 1:26bfcb9024a0 95
mcm 1:26bfcb9024a0 96
mcm 1:26bfcb9024a0 97
mcm 1:26bfcb9024a0 98 if ( aux == I2C_SUCCESS )
mcm 1:26bfcb9024a0 99 return PCF8574_SUCCESS;
mcm 1:26bfcb9024a0 100 else
mcm 1:26bfcb9024a0 101 return PCF8574_FAILURE;
mcm 1:26bfcb9024a0 102 }