This repo contains the libraries of Mbed for LPC1549 with following changes: - IAP commands. - EEPROM write and read. - UART write and read (public) - CAN can_s -> LPC_C_CAN0_Type *can

Committer:
gmatarrubia
Date:
Tue Apr 14 15:00:13 2015 +0200
Revision:
0:820a69dfd200
Initial repo. IAP commands, EEPROM write/read, UART write/read, CAN

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gmatarrubia 0:820a69dfd200 1 /* mbed Microcontroller Library
gmatarrubia 0:820a69dfd200 2 * Copyright (c) 2006-2013 ARM Limited
gmatarrubia 0:820a69dfd200 3 *
gmatarrubia 0:820a69dfd200 4 * Licensed under the Apache License, Version 2.0 (the "License");
gmatarrubia 0:820a69dfd200 5 * you may not use this file except in compliance with the License.
gmatarrubia 0:820a69dfd200 6 * You may obtain a copy of the License at
gmatarrubia 0:820a69dfd200 7 *
gmatarrubia 0:820a69dfd200 8 * http://www.apache.org/licenses/LICENSE-2.0
gmatarrubia 0:820a69dfd200 9 *
gmatarrubia 0:820a69dfd200 10 * Unless required by applicable law or agreed to in writing, software
gmatarrubia 0:820a69dfd200 11 * distributed under the License is distributed on an "AS IS" BASIS,
gmatarrubia 0:820a69dfd200 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
gmatarrubia 0:820a69dfd200 13 * See the License for the specific language governing permissions and
gmatarrubia 0:820a69dfd200 14 * limitations under the License.
gmatarrubia 0:820a69dfd200 15 */
gmatarrubia 0:820a69dfd200 16 #ifndef MBED_I2C_H
gmatarrubia 0:820a69dfd200 17 #define MBED_I2C_H
gmatarrubia 0:820a69dfd200 18
gmatarrubia 0:820a69dfd200 19 #include "platform.h"
gmatarrubia 0:820a69dfd200 20
gmatarrubia 0:820a69dfd200 21 #if DEVICE_I2C
gmatarrubia 0:820a69dfd200 22
gmatarrubia 0:820a69dfd200 23 #include "i2c_api.h"
gmatarrubia 0:820a69dfd200 24
gmatarrubia 0:820a69dfd200 25 namespace mbed {
gmatarrubia 0:820a69dfd200 26
gmatarrubia 0:820a69dfd200 27 /** An I2C Master, used for communicating with I2C slave devices
gmatarrubia 0:820a69dfd200 28 *
gmatarrubia 0:820a69dfd200 29 * Example:
gmatarrubia 0:820a69dfd200 30 * @code
gmatarrubia 0:820a69dfd200 31 * // Read from I2C slave at address 0x62
gmatarrubia 0:820a69dfd200 32 *
gmatarrubia 0:820a69dfd200 33 * #include "mbed.h"
gmatarrubia 0:820a69dfd200 34 *
gmatarrubia 0:820a69dfd200 35 * I2C i2c(p28, p27);
gmatarrubia 0:820a69dfd200 36 *
gmatarrubia 0:820a69dfd200 37 * int main() {
gmatarrubia 0:820a69dfd200 38 * int address = 0x62;
gmatarrubia 0:820a69dfd200 39 * char data[2];
gmatarrubia 0:820a69dfd200 40 * i2c.read(address, data, 2);
gmatarrubia 0:820a69dfd200 41 * }
gmatarrubia 0:820a69dfd200 42 * @endcode
gmatarrubia 0:820a69dfd200 43 */
gmatarrubia 0:820a69dfd200 44 class I2C {
gmatarrubia 0:820a69dfd200 45
gmatarrubia 0:820a69dfd200 46 public:
gmatarrubia 0:820a69dfd200 47 enum RxStatus {
gmatarrubia 0:820a69dfd200 48 NoData,
gmatarrubia 0:820a69dfd200 49 MasterGeneralCall,
gmatarrubia 0:820a69dfd200 50 MasterWrite,
gmatarrubia 0:820a69dfd200 51 MasterRead
gmatarrubia 0:820a69dfd200 52 };
gmatarrubia 0:820a69dfd200 53
gmatarrubia 0:820a69dfd200 54 enum Acknowledge {
gmatarrubia 0:820a69dfd200 55 NoACK = 0,
gmatarrubia 0:820a69dfd200 56 ACK = 1
gmatarrubia 0:820a69dfd200 57 };
gmatarrubia 0:820a69dfd200 58
gmatarrubia 0:820a69dfd200 59 /** Create an I2C Master interface, connected to the specified pins
gmatarrubia 0:820a69dfd200 60 *
gmatarrubia 0:820a69dfd200 61 * @param sda I2C data line pin
gmatarrubia 0:820a69dfd200 62 * @param scl I2C clock line pin
gmatarrubia 0:820a69dfd200 63 */
gmatarrubia 0:820a69dfd200 64 I2C(PinName sda, PinName scl);
gmatarrubia 0:820a69dfd200 65
gmatarrubia 0:820a69dfd200 66 /** Set the frequency of the I2C interface
gmatarrubia 0:820a69dfd200 67 *
gmatarrubia 0:820a69dfd200 68 * @param hz The bus frequency in hertz
gmatarrubia 0:820a69dfd200 69 */
gmatarrubia 0:820a69dfd200 70 void frequency(int hz);
gmatarrubia 0:820a69dfd200 71
gmatarrubia 0:820a69dfd200 72 /** Read from an I2C slave
gmatarrubia 0:820a69dfd200 73 *
gmatarrubia 0:820a69dfd200 74 * Performs a complete read transaction. The bottom bit of
gmatarrubia 0:820a69dfd200 75 * the address is forced to 1 to indicate a read.
gmatarrubia 0:820a69dfd200 76 *
gmatarrubia 0:820a69dfd200 77 * @param address 8-bit I2C slave address [ addr | 1 ]
gmatarrubia 0:820a69dfd200 78 * @param data Pointer to the byte-array to read data in to
gmatarrubia 0:820a69dfd200 79 * @param length Number of bytes to read
gmatarrubia 0:820a69dfd200 80 * @param repeated Repeated start, true - don't send stop at end
gmatarrubia 0:820a69dfd200 81 *
gmatarrubia 0:820a69dfd200 82 * @returns
gmatarrubia 0:820a69dfd200 83 * 0 on success (ack),
gmatarrubia 0:820a69dfd200 84 * non-0 on failure (nack)
gmatarrubia 0:820a69dfd200 85 */
gmatarrubia 0:820a69dfd200 86 int read(int address, char *data, int length, bool repeated = false);
gmatarrubia 0:820a69dfd200 87
gmatarrubia 0:820a69dfd200 88 /** Read a single byte from the I2C bus
gmatarrubia 0:820a69dfd200 89 *
gmatarrubia 0:820a69dfd200 90 * @param ack indicates if the byte is to be acknowledged (1 = acknowledge)
gmatarrubia 0:820a69dfd200 91 *
gmatarrubia 0:820a69dfd200 92 * @returns
gmatarrubia 0:820a69dfd200 93 * the byte read
gmatarrubia 0:820a69dfd200 94 */
gmatarrubia 0:820a69dfd200 95 int read(int ack);
gmatarrubia 0:820a69dfd200 96
gmatarrubia 0:820a69dfd200 97 /** Write to an I2C slave
gmatarrubia 0:820a69dfd200 98 *
gmatarrubia 0:820a69dfd200 99 * Performs a complete write transaction. The bottom bit of
gmatarrubia 0:820a69dfd200 100 * the address is forced to 0 to indicate a write.
gmatarrubia 0:820a69dfd200 101 *
gmatarrubia 0:820a69dfd200 102 * @param address 8-bit I2C slave address [ addr | 0 ]
gmatarrubia 0:820a69dfd200 103 * @param data Pointer to the byte-array data to send
gmatarrubia 0:820a69dfd200 104 * @param length Number of bytes to send
gmatarrubia 0:820a69dfd200 105 * @param repeated Repeated start, true - do not send stop at end
gmatarrubia 0:820a69dfd200 106 *
gmatarrubia 0:820a69dfd200 107 * @returns
gmatarrubia 0:820a69dfd200 108 * 0 on success (ack),
gmatarrubia 0:820a69dfd200 109 * non-0 on failure (nack)
gmatarrubia 0:820a69dfd200 110 */
gmatarrubia 0:820a69dfd200 111 int write(int address, const char *data, int length, bool repeated = false);
gmatarrubia 0:820a69dfd200 112
gmatarrubia 0:820a69dfd200 113 /** Write single byte out on the I2C bus
gmatarrubia 0:820a69dfd200 114 *
gmatarrubia 0:820a69dfd200 115 * @param data data to write out on bus
gmatarrubia 0:820a69dfd200 116 *
gmatarrubia 0:820a69dfd200 117 * @returns
gmatarrubia 0:820a69dfd200 118 * '1' if an ACK was received,
gmatarrubia 0:820a69dfd200 119 * '0' otherwise
gmatarrubia 0:820a69dfd200 120 */
gmatarrubia 0:820a69dfd200 121 int write(int data);
gmatarrubia 0:820a69dfd200 122
gmatarrubia 0:820a69dfd200 123 /** Creates a start condition on the I2C bus
gmatarrubia 0:820a69dfd200 124 */
gmatarrubia 0:820a69dfd200 125
gmatarrubia 0:820a69dfd200 126 void start(void);
gmatarrubia 0:820a69dfd200 127
gmatarrubia 0:820a69dfd200 128 /** Creates a stop condition on the I2C bus
gmatarrubia 0:820a69dfd200 129 */
gmatarrubia 0:820a69dfd200 130 void stop(void);
gmatarrubia 0:820a69dfd200 131
gmatarrubia 0:820a69dfd200 132 protected:
gmatarrubia 0:820a69dfd200 133 void aquire();
gmatarrubia 0:820a69dfd200 134
gmatarrubia 0:820a69dfd200 135 i2c_t _i2c;
gmatarrubia 0:820a69dfd200 136 static I2C *_owner;
gmatarrubia 0:820a69dfd200 137 int _hz;
gmatarrubia 0:820a69dfd200 138 };
gmatarrubia 0:820a69dfd200 139
gmatarrubia 0:820a69dfd200 140 } // namespace mbed
gmatarrubia 0:820a69dfd200 141
gmatarrubia 0:820a69dfd200 142 #endif
gmatarrubia 0:820a69dfd200 143
gmatarrubia 0:820a69dfd200 144 #endif