微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI电源管理交流 > bq27541的dataflash写数据的时候,为什么有时候回出现些2次呢?

bq27541的dataflash写数据的时候,为什么有时候回出现些2次呢?

时间:10-02 整理:3721RD 点击:

  我用单片机按照iic的时序往bq27541的ccgain和ccdelta写数据的时候,为什么会有时候写2次呢,我单片机明明只写了一次!

两次都是完全相同的数据么?bq27541是属于从设备。

MCU程序如何执行?

@wang cheng

我是按照ti给的规格书来操作的,我只要把

   对应的数据写到这几个dataflash的位置即可实现温度和电流,电压校准,

按照ti给的读写Dataflash时序去 写对应的程序即可!

但是现在遇到了点问题,就是校准电压的时候,我明明是校准的5mv,偏偏我自己用单片机校准10mv,说明执行了2次校准,但是我不知道这2次是怎么来的!

你用的是什么型号单片机呢?能提供你的IIC程序么?

 怎么提供,我自己琢磨好久才弄出来的,你无条件的向我索要,我自己用上位机做的协议,发命令,然后做校准

您是用模拟IIC吗?延时多少才可以呢?

 跟延迟没关系吧,我最快能做到80khz,保证稳定,还有读写dataflash跟读寄存器是一样的。

void IIC27541_Start1(void)
{
 SDA_OUT();     

 IIC_SDA=1;     
 IIC_SCL=1;
 delay_us(56);
  IIC_SDA=0;//START:when CLK is high,DATA change form high to low
 delay_us(56);
 IIC_SCL=0;// 

delay_us(56);
}

void IIC27541_Send_Byte1(u8 txd)
{                       
    u8 t;  
 SDA_OUT();     
    IIC_SCL=0;//À­µÍʱÖÓ¿ªÊ¼Êý¾Ý´«Êä
    for(t=0;t<8;t++)
    {             
        IIC_SDA=(txd&0x80)>>7;
        txd<<=1;   
  delay_us(56);  
  IIC_SCL=1;
  delay_us(56);
  IIC_SCL=0; 
//  delay_us(40);
    } 
}

u8 IIC27541_Wait_Ack1(void)
{
 u16 ucErrTime=0;
 SDA_IN();      //SDAÉèÖÃΪÊäÈë 
 IIC_SDA=1;delay_us(1);   
 IIC_SCL=1;delay_us(1); 
 while(READ_SDA)
 {
  ucErrTime++;
  if(ucErrTime>2500)
  {
   IIC_Stop();
   return 1;
  }
 }
 IIC_SCL=0;//ʱÖÓÊä³ö0    
 return 0; 
}

先开始 IIC27541_Start1();

再发送 IIC27541_Send_Byte1(0xaa);

等应答 IIC27541_Wait_Ack1(void);

结果是一直没应答 READ_SDA一直没变低电平!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top