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();
}
相关推荐
学生哥-_-8 小时前
STM32通过KEIL pack包轻松移植LVGL,并学会使用GUI guider
stm32·lvgl·tftlcd·gui guider·gt911
贝塔实验室8 小时前
FPGA 动态重构配置流程
驱动开发·fpga开发·硬件架构·硬件工程·射频工程·fpga·基带工程
三三十二8 小时前
STM32实战:数字音频播放器开发指南
stm32·单片机·嵌入式硬件
让子弹飞0211 小时前
35.成功解决编写关于“江协科技”编写技巧第二期标志位积累的问题
stm32·按键
木子单片机12 小时前
基于STM32语音识别柔光台灯
stm32·单片机·嵌入式硬件·proteus·语音识别·keil
lingzhilab16 小时前
零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程
stm32·嵌入式硬件·信息可视化
lixzest21 小时前
Keil调试模式下,排查程序崩溃简述
stm32·单片机
可乐鸡翅好好吃1 天前
通过BUG(prvIdleTask、pxTasksWaitingTerminatio不断跳转问题)了解空闲函数(prvIdleTask)和TCB
c语言·stm32·单片机·嵌入式硬件·bug·keil
广药门徒1 天前
我认为STM32输入只分为模拟输入 与 数字输入
stm32·单片机·嵌入式硬件
早睡的叶子2 天前
proteus8安装教程
stm32·嵌入式硬件