기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

지난번에 질문해서 cpufreq 관련 데이터를 얻을 수 있었습니다.

답변자님 감사드립니다.

 

제가 power manegement 관련해서 계속 프로젝트를 진행하다보니

 

s5pv210기판은 max17040배터리가 붙여져 있어서 세부적인 배터리용량을 얻을려며는

 

i2c인터페이스로 통신을 해야 하더라구요.

 

간단히 배터리 용량만 가져오면 될것이라는 생각에 read 함수를 짰는데 레지스터에 있는 값을 가져오질 못하더라구요...

 

i2c파일오픈 -> slave address설정 -> read register번호 전송 -> 데이터 읽기 순이 아닌가요??

 

 int temp, file,  ctl;

 char filename[20];
 int i;
unsigned char addr = 0x6c;
unsigned char m_addr = 0x02;
unsigned char l_addr = 0x03;
 char buf[2];

int bufi[2];

 

//i2c장치파일 열기

  sprintf(filename, "/dev/i2c-%d", 1);
  file=open(filename, O_RDWR);
  if( file < 0 )
  {
   close(file[i]);
   temp=-1;

return temp;
  }

 

//slave 주소 설정
  ctl=ioctl(file, I2C_SLAVE, addr);
  if( ctl < 0 )
  {
   temp=-2;
   return temp;

  }

//읽을 레지스터 위치 설정

  write(file, &m_addr,1);

//데이터 읽기

  read(file, &buf[0],1);

 

//읽을 레지스터 위치 설정

  write(file, &l_addr,1);

//데이터 읽기

  read(file, &bf[1],1);

 

bufi[0]=buf[0];

bufi[1]=buf[1];

// 4비트 이동 후 합침

   temp=(bufi[0] << 4) + (buf[1]i >> 4);
  return temp;


송의석

2011.05.25 07:35:14
*.54.174.151

Odroid에 적용된 배터리 게이지 이군요. MAX17040G 가 적용되어 있습니다. Odroid의 u-boot , Kernel, android source를 참고하시면 해결책을 찾으실 수 있을 겁니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수
» i2c 통신 관련 문의드립니다 [1] 크리모 2011-05-25 875

사용자 로그인