BMP280芯片I2C驱动开发指南


这颗芯片不太容易焊接,不能长时间风枪吹,否则容易掉壳。

第一部分 硬件连接


电路很简单,没什么需要注意的。

第二部分 软件驱动


本来打算使用SPL06的,结果焊接掉壳了,更换成bmp280了。函数名没有变过来。。。

c 复制代码
void SPL06_Init()
{
    u8 uChipID = 0;
    // wait stable
    SPL06_WriteReg(SPL06_DEV,0xE0,0xB6);
    delay_ms(300);

    while(uChipID!= 0x58){ 
        // 1.Device Reset & check Device
        uChipID = SPL06_ReadReg(SPL06_DEV,0xd0); // Read ID
        delay_ms(2000);        // device check
        delay_ms(2000);        // device check
        delay_ms(2000);        // device check
    }
    printf("BMP280 check Pass!:deviceID = 0x%x \r\n",uChipID);
    
    //2.Device Settings
}
u8 SPL06_ReadReg(u8 dAddr, u8 Reg)
{
    u8 Value = 0;
    //1.启动IIC
    IIC_Start();
    //2.写设备地址
    IIC_Send_Byte((dAddr << 1)|0);
    //3.wait
    if(IIC_Wait_Ack())
    {
        IIC_Stop();
        return 1;
    }
    //4.寄存器地址
    IIC_Send_Byte(Reg);
    //5.wait
    if(IIC_Wait_Ack())
    {
        IIC_Stop();
        return 1;
    }
    //6.启动IIC
    IIC_Start();
    //7.设备地址
    IIC_Send_Byte((dAddr << 1)|1);
    //8.wait read ack
    if(IIC_Wait_Ack())
    {
        IIC_Stop();
        return 1;
    }
    
    Value = IIC_Read_Byte(1);
    //9.stop
    IIC_Stop();
    return Value;
}

void SPL06_WriteReg(u8 dAddr, u8 Reg, u8 Value)
{
    //1.启动IIC
    IIC_Start();
    //2.写设备地址
    IIC_Send_Byte((dAddr << 1)|0);
    //3.wait
    while(IIC_Wait_Ack());
    //4.写寄存器地址
    IIC_Send_Byte(Reg);
    //5.wait
    IIC_Wait_Ack();
    //6.写value
    IIC_Send_Byte(Value);
    //7.wait
    IIC_Wait_Ack();
    //8.stop
    IIC_Stop();
}
相关推荐
LCG元1 小时前
STM32 RS485 Modbus RTU通信系统设计:从协议解析到工程实战
stm32·单片机·嵌入式硬件
咖啡星人k1 小时前
MonkeyCode 架构深度解析:SDD 规范驱动开发的工程哲学
驱动开发·架构·monkeycode
小此方3 小时前
Re:Linux系统篇(四十六)信号篇·四:一文串联操作系统底层:时钟中断、内核态切换、系统调用与 Linux 信号处理全解析
linux·驱动开发·信号处理
Zyed1 天前
[FreeRTOS]Day7项目介绍
stm32·单片机·嵌入式硬件
LCG元1 天前
嵌入式开发踩坑排查实战:从 STM32 外设初始化到 Linux SPI 驱动的 15 类硬件疑难故障深度复盘
linux·stm32·单片机
piaoyiren1 天前
基于 STM32F103 蓝牙遥控云台超声波避障小车
stm32·单片机·嵌入式硬件·蓝牙·超声波测距·直流电机
Zyed1 天前
[FreeRTOS]Day8-Part1队列+红外遥控器玩游戏+旋转编码器玩游戏
stm32·单片机·玩游戏
十月的皮皮1 天前
STM32从零到量产开发:四路继电器工业控制模块开发— Modbus RTU 通讯协议设计
stm32·stm32cubemx·hal库
GeekArch2 天前
第28讲:避坑——AI堆栈分配错误、栈溢出BUG
c语言·人工智能·stm32·mcu·学习·bug
wuyk5552 天前
59.嵌入式C语言高级宏定义实战:多行宏、字符串化与符号拼接
c语言·开发语言·stm32·单片机·嵌入式硬件·物联网·51单片机