TI中文支持网
TI专业的中文技术问题搜集分享网站

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

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

Cheng.W:

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

MCU程序如何执行?

gang yang2:

回复 Cheng.W:

@wang cheng

我是按照ti给的规格书来操作的,我只要把   对应的数据写到这几个dataflash的位置即可实现温度和电流,电压校准,

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

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

zhoucan bi:

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

gang yang2:

回复 zhoucan bi:

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

zhoucan bi:

回复 gang yang2:

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

gang yang2:

回复 zhoucan bi:

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

zhoucan bi:

回复 gang yang2:

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一直没变低电平!

赞(0)
未经允许不得转载:TI中文支持网 » bq27541的dataflash写数据的时候,为什么有时候回出现些2次呢?
分享到: 更多 (0)