• 大小: 5KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-16
  • 语言: 其他
  • 标签: BMP180  

资源简介

基于MPS430的BMP180程序,模拟IIC,与其他单片机通用

资源截图

代码片段和文件信息

#include “bmp280.h“

extern void delay_us(u16 us);
extern void delay_ms(u16 ms);


 BMP280_T g_tBMP280 ;

static void i2c_Delay(void)
{
uint8_t i;

/* 
CPU主频168MHz时,在内部Flash运行 MDK工程不优化。用台式示波器观测波形。
循环次数为5时,SCL频率 = 1.78MHz (读耗时: 92ms 读写正常,但是用示波器探头碰上就读写失败。时序接近临界)
循环次数为10时,SCL频率 = 1.1MHz (读耗时: 138ms 读速度: 118724B/s)
循环次数为30时,SCL频率 = 440KHz, SCL高电平时间1.0us,SCL低电平时间1.2us

上拉电阻选择2.2K欧时,SCL上升沿时间约0.5us,如果选4.7K欧,则上升沿约1us

实际应用选择400KHz左右的速率即可
*/
for (i = 0; i < 30; i++);
}

/*
*********************************************************************************************************
* 函 数 名: i2c_Start
* 功能说明: CPU发起I2C总线启动信号
* 形    参:  无
* 返 回 值: 无
*********************************************************************************************************
*/
static void i2c_Start(void)
{
/* 当SCL高电平时,SDA出现一个下跳沿表示I2C总线启动信号 */
I2C_SDA_1();
I2C_SCL_1();
i2c_Delay();
I2C_SDA_0();
i2c_Delay();
I2C_SCL_0();
i2c_Delay();
}

/*
*********************************************************************************************************
* 函 数 名: i2c_Start
* 功能说明: CPU发起I2C总线停止信号
* 形    参:  无
* 返 回 值: 无
*********************************************************************************************************
*/
static void i2c_Stop(void)
{
/* 当SCL高电平时,SDA出现一个上跳沿表示I2C总线停止信号 */
I2C_SDA_0();
I2C_SCL_1();
i2c_Delay();
I2C_SDA_1();
}

/*
*********************************************************************************************************
* 函 数 名: i2c_SendByte
* 功能说明: CPU向I2C总线设备发送8bit数据
* 形    参:  _ucByte : 等待发送的字节
* 返 回 值: 无
*********************************************************************************************************
*/
static void i2c_SendByte(uint8_t _ucByte)
{
uint8_t i;

/* 先发送字节的高位bit7 */
for (i = 0; i < 8; i++)
{
if (_ucByte & 0x80)
{
I2C_SDA_1();
}
else
{
I2C_SDA_0();
}
i2c_Delay();
I2C_SCL_1();
i2c_Delay();
I2C_SCL_0();
if (i == 7)
{
 I2C_SDA_1(); // 释放总线
}
_ucByte <<= 1; /* 左移一个bit */
i2c_Delay();
}
}

/*
*********************************************************************************************************
* 函 数 名: i2c_ReadByte
* 功能说明: CPU从I2C总线设备读取8bit数据
* 形    参:  无
* 返 回 值: 读到的数据
*********************************************************************************************************
*/
static uint8_t i2c_ReadByte(void)
{
uint8_t i;
uint8_t value;

/* 读到第1个bit为数据的bit7 */
value = 0;
for (i = 0; i < 8; i++)
{
value <<= 1;
I2C_SCL_1();
i2c_Delay();
if (I2C_SDA_READ())
{
value++;
}
I2C_SCL_0();
i2c_Delay();
}
return value;
}

/*
*********************************************************************************************************
* 函 数 名: i2c_WaitAck
* 功能说明: CPU产生一个时钟,并读取器件的ACK应答信号
* 形    参:  无
* 返 回 值: 返回0表示正确应答,1表示无器件响应
*******************************************************************************************************

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      10657  2015-03-29 22:26  bmp180\bmp280.c

     文件       1445  2015-03-29 22:24  bmp180\bmp280.h

     文件       3458  2015-03-30 18:03  bmp180\main.c

     目录          0  2015-04-21 10:38  bmp180

----------- ---------  ---------- -----  ----

                15560                    4


评论

共有 条评论