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);
    }
}
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值