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

INA226 电流监测芯片

  请问有谁调试过INA226这块芯片的,能够给个QQ,想请教下问题。谢谢。

#include<reg51.h>
#include<intrins.h>
#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int
#define read_addr 0x81  //写配置寄存器时对应的器件地址
#define write_addr 0x80 //读转换结果时对应的器件地址
uchar H_AD; // H_AD用于存储高八位A/D转换结果
uchar L_AD; // L_AD用于存储低八位A/D转换结果
sbit SDA = P1^0;
sbit SCL = P1^1;
void delay_ms(uint n)
{
uchar i;
while(n–)
{
for(i=0;i<100;i++);
}
}
void Start(void)
{
SDA = 1;
    SCL = 1;
_nop_();_nop_();_nop_();_nop_();
SDA = 0;
_nop_();_nop_();_nop_();_nop_();
}
void Stop(void)
{
SDA = 0;
    SCL = 1;
_nop_();_nop_();_nop_();_nop_();
SDA = 1;
_nop_();_nop_();_nop_();_nop_();
}
void slave_ACK(void)
{
// SDA = 0;
// _nop_();_nop_();_nop_();_nop_();
// SCL = 1;
// _nop_();_nop_();_nop_();_nop_();
// SCL = 0;
   uchar i=0;
   SCL=1;
   _nop_();_nop_();_nop_();_nop_();
   while((SDA==1)&&(i<255))
      i++;
   SCL=0;
   _nop_();_nop_();_nop_();_nop_();
}
void check_ACK(void)
{
 SDA=1;
 SCL=1;
 F0=0;
 if(SDA==1)
    F0=1;
 SCL=0;
}
void ATWriteByte(uchar dat)
{
uchar i;
for(i=0;i<8;i++)
{
SCL = 0;
_nop_();_nop_();_nop_();_nop_();
SDA = ((dat<<i)&0x80)?1:0;
SCL = 1;
}
SCL = 0;
}
uchar ATReadByte(void)
{
uchar i,temp = 0;
SDA = 1;
for(i=0;i<8;i++)
{
SCL = 0;
_nop_();_nop_();_nop_();_nop_();
SCL = 1;
_nop_();_nop_();_nop_();_nop_();
temp <<= 1;
if(SDA==1)
{
temp |= 0x01;
}
}
return temp;
}
void setting_INA226(void)
{
  Start();
  ATWriteByte(write_addr);
  slave_ACK(); 
  ATWriteByte(0x00);
  slave_ACK(); 
  ATWriteByte(0x42);
  slave_ACK();
  ATWriteByte(0x93);
  slave_ACK();
  ATWriteByte(write_addr);
  slave_ACK(); 
  ATWriteByte(0x01);
  slave_ACK();
  Stop();
}
void READ_INA226(void)
{
Start();
ATWriteByte(read_addr);
slave_ACK();
    H_AD=ATReadByte();
check_ACK();
L_AD=ATReadByte();
Stop();
ES=0;
    SBUF=H_AD;
while(TI==0);
TI=0;
 
SBUF=L_AD;
while(TI==0);
TI=0;
ES=1;
}
void init()
{
TMOD=0x21;
TH1=0xfd;
TL1=0xfd;
TR1=1;
SM0=0;
SM1=1;
REN=1;
PS=1;
EA=1;
ES=1;
}
void main()
{  
   init();
   setting_INA226();
   while(1)
   {
   READ_INA226();
   }
}
以上是我的代码,我就是想测一个25毫欧姆电阻的电流,所以我想读出数据寄存器中分流电压的值。我利用串口助手想把读取的数据显示,但是输出的结果不对,请大神帮帮忙,拜谢了。
shun sheng zhang:

调试之后,我主器件给从机器发送从器件地址之后,从机没有应答,是怎么回事?

Decapton Wang:

回复 shun sheng zhang:

A0A1是怎么连接的?主机给从机的地址是否给对了?另外,现有的程序,是否能够“写”出如图24那样的时序?由图24,首先要主机指定从机地址,然后发register pointer byte,然后才是写数据,检查一下程序是否写对了。

shun sheng zhang:

回复 Decapton Wang:

谢谢你的回答。我已经调通了,当时可能是延时有点问题。谢谢。

xun zhang:

回复 shun sheng zhang:

您的延时指的是哪里的延时啊?小弟现在遇到同样的问题,还望赐教

赞(0)
未经允许不得转载:TI中文支持网 » INA226 电流监测芯片
分享到: 更多 (0)