IIC驱动的MPL3115A2海拔气压传感器

qq_44755624 2019-11-27 05:39:17

有个MPL3115A2气压海拔传感器的数据读取问题想请问下各位大佬。在配置完IIC后,使用逻辑分析仪抓波形是正常的。但是读取寄存器(0x00 0x01 0x02 0x03 0x04)的时候返回来的值都是0xEE。使用仿真调试的时候,读取到的几个寄存器的值先是0x0E,然后过很短一段时间就变成0xEE(是同时改变的),后面从寄存器读出的值就保持是0xEE了.根据手册传感器写地址使用0xC0,读地址使用0xC1,按照网上教程初始化了。还望各位大佬指教一下,万分感谢!
在网上查看类似的问题是返回0xFF,基本都是IIC配置的问题。返回0xEE有点看不明白,会不会可能是写完第一个寄存器读取值后,后面的其他寄存器读取都没有读到,而是读到第一个寄存器的值。有没有使用过这个模块的大佬~

这是初始化和读取的代码:
/**********no fifo/polling************/
static uint8_t LocalStatus;
void altiude_data_read(uint8_t *DataBuf)
{
    LocalStatus=iic_read_reg(0x06);
    if((LocalStatus & 0x08)==0x08)
    {
        * DataBuf    = iic_read_reg(0x01);          //altitude
        *(DataBuf+1) = iic_read_reg(0x02);
        *(DataBuf+2) = iic_read_reg(0x03);
        *(DataBuf+3) = iic_read_reg(0x04);          //temperature
        *(DataBuf+4) = iic_read_reg(0x05);
    }
    LocalStatus=0;
}
 
void MPL3115A_Init(void)
{
    iic_write_reg(0x11,0x01);
    iic_write_reg(0x26,0x04);
    iic_write_reg(0x26,0xb9);
    iic_write_reg(0x13,0x07);
}
/*iic读写传感器*/
void iic_write_reg(uint8_t write_address, uint8_t SendByte)
{
    IIC_Start(); 
    IIC_Send_Byte(SLAVE_WRITE_ADDR);         //发送器件地址0XC0,写数据。
    IIC_Wait_Ack();
    IIC_Send_Byte(write_address);           //发送写入数据的目的地址。
    IIC_Wait_Ack();                               
    IIC_Send_Byte(SendByte);                //发送字节                            
    IIC_Wait_Ack();
            
    IIC_Stop();                             //产生一个停止条件
    delay_us(1000);
}
 
 
uint8_t iic_read_reg(uint8_t read_address)
{
    uint8_t temp=0;
    IIC_Start();
    IIC_Send_Byte(SLAVE_WRITE_ADDR);         //发送器件地址0XC0,写数据 
    IIC_Wait_Ack();
    IIC_Send_Byte(read_address);             //发送开始读数的地址
    IIC_Wait_Ack();
 
    HAL_GPIO_WritePin(GPIOC, GPIO_PIN_11, GPIO_PIN_RESET);
    IIC_Start();
    IIC_Send_Byte(SLAVE_READ_ADDR);         //进入接收模式              
    IIC_Wait_Ack();
 
    temp=IIC_Read_OneByte();
    IIC_Stop();                             //产生一个停止条件
    return temp;
}
...全文
450 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
freezy 2021-08-09
  • 打赏
  • 举报
回复

哥们后面找到问题了吗

27,520

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧