Mbed OS 文档翻译 之 参考(API(驱动(I2C)))

I2C

                                                                               

                                                                                      I2C 类层次结构

I2C 接口提供 I2C 主控功能。I2C 是双线串行协议,允许 I2C 主设备与 I2C 从设备交换数据。您可以使用它与 I2C 设备进行通信,例如串行存储器,传感器和其他模块或集成电路。

I2C 协议每条总线最多支持 127 个设备,其默认时钟频率为 100 KHz。

       注意: 请记住,在 sda 和 scl 上需要一个上拉电阻。I2C 总线上的所有驱动器都需要是开路集电极,因此必须在两个信号上使用上拉电阻。上拉电阻的典型值约为 2.2 k 欧姆,连接在引脚和 3v3 之间。

I2C 类参考

        注意: Arm Mbed API 使用 8 位地址,因此请确保在传递它们之前将 7 位地址左移 1 位。

mbed::I2C 类参考

公共类型
enum   RxStatus { NoData, MasterGeneralCall, MasterWrite, MasterRead }
enum   Acknowledge { NoACK = 0, ACK = 1 }
公共成员函数
  I2C (PinName sda, PinName scl)
void  frequency (int hz)
int  read (int address, char *data, int length, bool repeated=false)
int  read (int ack)
int  write (int address, const char *data, int length, bool repeated=false)
int  write (int data)
void  start (void)
void  stop (void)
virtual void  lock (void)
virtual void  unlock (void)
int  transfer (int address, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length, const event_callback_t &callback, int event=I2C_EVENT_TRANSFER_COMPLETE, bool repeated=false)
void  abort_transfer ()
受保护的成员函数
void  lock_deep_sleep ()
void  unlock_deep_sleep ()
void  irq_handler_asynch (void)
void  aquire ()
受保护的属性
event_callback_t  _callback
CThunk< I2C >  _irq
DMAUsage  _usage
bool  _deep_sleep_locked
i2c_t  _i2c
int  _hz
静态保护属性
static I2C *  _owner = NULL
static SingletonPtr< PlatformMutex >  _mutex

I2C hello, world

main.cpp                                                                                                                                                导入到 Mbed IDE

/* mbed Example Program
 * Copyright (c) 2006-2014 ARM Limited
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#include "mbed.h"
 
// Read temperature from LM75BD

I2C i2c(I2C_SDA , I2C_SCL ); 

const int addr7bit = 0x48;      // 7 bit I2C address
const int addr8bit = 0x48 << 1; // 8bit I2C address, 0x90

int main() {
    char cmd[2];
    while (1) {
        cmd[0] = 0x01;
        cmd[1] = 0x00;
        i2c.write(addr8bit, cmd, 2);
 
        wait(0.5);
 
        cmd[0] = 0x00;
        i2c.write(addr8bit, cmd, 1);
        i2c.read( addr8bit, cmd, 2);
 
        float tmp = (float((cmd[0]<<8)|cmd[1]) / 256.0);
        printf("Temp = %.2f\n", tmp);
    }
}

你可能感兴趣的:(Mbed,OS)