前言
本文作为bq24195的I2C使用教程,主要涉及I2C通信代码的实现以及一些注意事项,硬件部分稍有涉及但不是主要内容。
正文
硬件连接图:
I2C的上拉电阻10K或4.7K都行,阻值影响的是跳变沿的时间,即使fast mode I2C通信的频率也才400k左右,所以影响不大。
软件例程
我们用的是G2553的硬件I2C,有中断法和查询法,不想用中断的可以用查询法。如果选择了低功耗,建议用中断法。
MSP430G2553硬件I2C驱动-中断法
IT已经给我们准备好了,直接照搬msp430g2xx3_usci_i2c_standard_master.c例程就行。稍微整理一下做成i2c.h和i2c.c文件,力求简洁美观。
/*
* i2c.h
*/
#ifndef I2C_H_
#define I2C_H_
#include
#define SLAVE_ADDR 0x6B //BQ24195
#define MAX_BUFFER_SIZE 20
//******************************************************************************
// General I2C State Machine ***************************************************
//******************************************************************************
typedef enum I2C_ModeEnum{
IDLE_MODE,
NACK_MODE,
TX_REG_ADDRESS_MODE,
RX_REG_ADDRESS_MODE,
TX_DATA_MODE,
RX_DATA_MODE,
SWITCH_TO_RX_MODE,
SWITHC_TO_TX_MODE,
TIMEOUT_MODE
} I2C_Mode;
void initClockTo16MHz();
void initI2C();
void CopyArray(uint8_t *source, uint8_t *dest, uint8_t count);
I2C_Mode I2C_Master_WriteReg(uint8_t dev_addr, uint8_t reg_ad