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

SDA신호 출력을 오실로스코프로 확인하려고 하는데요. 파형이 안찍히네요.

현재 2410보드를 사용하고 있으며 이솝 게시판의 2.6.13커널을 이용하여 device driver에서 i2c를 set하여

커널 부팅시 다음과 같은 디버그 메세지를 확인하였습니다.

i2c /dev entries driver
s3c2410-i2c s3c2410-i2c: slave address 0x10
s3c2410-i2c s3c2410-i2c: bus frequency set to 99 KHz
s3c2410-i2c s3c2410-i2c: i2c-0: S3C I2C adapter

또한, /dev/i2c-0 장치 파일을 확인하였고 이 장치를 열어서 간단하게 명령어를 날리는 어플리케이션 코드를 작성하였습니다.

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <sys/poll.h>
#include <termios.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>

#include <linux/i2c.h>
#include <linux/i2c-dev.h>


unsigned char command[1] = {0x55};


int main(int argc, char **argv)
{
        char filename[20];
        int file, i;

        unsigned char addr = 0x86>>1;                //slave의 주소를 셋팅하고,
        sprintf(filename, "/dev/i2c-0");

        //장치파일을 열고,
        if( (file = open(filename, O_RDWR) ) < 0 )
        {
                printf("File Open Errorn");
                exit(1);
        }
        
        else
                printf("File Open Successn");


        //slave 주소 셋팅하고,
        if( ioctl(file, I2C_SLAVE, addr) < 0 )
        {
                printf("Error : Slave Address...n");
                exit(1);
        }
        else
                printf("Success : Slave Address...n");

        printf("nSlave address : %xn", addr);

        //0x55명령을 1초간격으로 100번 날린다.
        for(i = 0; i < 100; i++)
        {
                write(file, command, 1);        
                printf("i : %d, command : %xn", i, command[0]);
                sleep(1);
        }
}

정말 간단한 어플리케이션인데요.

오실로 스코프로 SDA를 측정하면 제 예상대로라면 최초 start 비트 후에 SCL클럭핀에서 클럭이 계속 나와야 하고, SDA핀에서는 0x86>>1이므로 0100 0110에서 0010 0011로 시프트된후 MSB부터 7bit가 출력되고 write신호이므로 최종 SDA핀에서는 0010 0010 신호가 나간뒤 ack신호가 출력해야 할듯 하나 SDA에서 어떤 신호도 잡히고 있지 않습니다.

혹시 디바이스 드라이버 단에서 뭐를 더 손봐줘야 할게 있을까요? ^^;;
설 연휴 잘 쉬시고 새해 복 많이 받으세요~~

김광준

2008.02.05 08:57:57
*.236.89.217

혹시 풀업저항은 붙어있나요?

김승규

2008.02.05 17:07:50
*.247.144.149

자답입니다. 풀업저항 연결하였고, 위와같은 코드로 SDA 핀에서 slave address가 출력 되는걸 확인했습니다. 근데 slave address 이후에 나가는 1byte짜리 data가 출력이 안되네요~ ㅡ,.ㅡ~

김광준

2008.02.06 22:38:04
*.236.89.217

I2C 사양을 잘 살펴보면 주소를 전송하면 슬레브로부터 응답비트를 기대하게
되는데 응답비트가 오지 않으면 보통 거기서 통신이 멈춰집니다.
List of Articles
번호 제목 글쓴이 날짜 조회 수sort
5268 J-Tag으로 norflash writer 문제 질문드립니다. file 오박사 2010-06-25 571
5267 Odroid-T] 펌웨어 OneNAND에 라이팅하기? [2] 장세현 2010-09-08 571
5266 영상통화 관련 app 사용시 문의 입니다. [1] niki 2011-04-26 571
5265 [질문]2410용 jtag프로그램 구할수있을까요? [1] 문철민 2007-01-26 572
5264 paragui에서 Text(Font)가 나오지 않네요. [1] 마은빈 2009-04-23 572
5263 자료실의 2.6.29커널의 base는? [6] 오태호 2009-09-01 572
5262 Android source build 문의 [2] 지영아빠 2009-11-13 572
5261 회로도에 X1, X3, X4 질문입니다. [1] 현쓰 2010-01-11 572
5260 안드로이드 컴파일 옵션에 대해 질문이 있는데요... 김영일 2010-02-04 572
5259 24만원짜리? 38만원짜리? 오드로이드... [1] 김형섭 2010-02-17 572
5258 6410 인코딩/디코딩 컨테이어 처리와 관련하여 [2] 꿈꾸는자 2010-04-07 572
5257 [오드로이드] microSD 덤프를 뜨고 싶습니다. [2] 장트러블탄 2010-05-14 572
5256 ez-2440 부트로더 분석중 물밑에돌고래 2011-02-10 572
5255 Touch 입력에 관한 질문 양파링 2011-05-27 572
5254 Odriod 터치 오동작 [2] mrsoccer 2009-11-15 573
5253 sdl_gfx 소스 다운 받는 사이트가 어디인가요? [1] 시안 2010-05-08 573
5252 임베디드 보드를 pc에 연결하면 파일목록을 볼수있게 하고 싶은데요 [1] 해돌이 2011-01-16 573
5251 N-Type B/D에 odroid7 froyo 올려서 동작시킬 때, 아래와 같은 ... [2] 한주현 2011-03-11 573
5250 [질문] 커널 2.4.x 를 gcc 3.4.x 로 컴파일할려면? [1] 임은향 2007-08-28 574
5249 [완료] rootfs lib(shared) making (libtool?) [3] 박종석 2007-10-31 574

사용자 로그인