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

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 udhcpc 에서 ip 못 받는 문제 [2] 공정표 2009-09-03 1469
5267 LCD 출력 I/F에 대해 여쭙니다. [2] 어떤이의꿈 2013-03-12 1469
5266 드디어 OS 부팅까지 ㅠㅠ 성공했네요..그런데 이더넷은 왜?????안되... [4] 혜민아빠 2012-04-20 1467
5265 [aesop6410][eclair] 커널/u-boot/안드로이드 자료 요청 [2] 김정희 2011-11-29 1467
5264 블루투스관련 작업해보신분 지식공유좀 부탁드립니다. 죠니주니 2011-10-06 1467
5263 [질문] 그래픽 드라이버에서 바이오스의 정보 참조? 김영삼 2008-02-27 1466
5262 android용 RFS만들 때 alsa지원 [9] 오태호 2009-10-04 1464
5261 ImageView에서 Image 그리는 순서? [2] ys2cdh 2011-11-17 1464
» i2c 관련 질문 드립니다. [3] 김승규 2008-02-04 1463
5259 Linaro에서 제공하는 boot, kernel [3] 박영기 2012-09-24 1463
5258 포팅시 주의점에 대해서 문의드립니다. [5] 테크 2013-03-17 1463
5257 LCD + LVDS interface 질문입니다. [3] 진돌이 2010-06-04 1462
5256 Eth 없이 Linux 개발 or 공부 하기 [7] 박명대 2012-02-28 1462
5255 임베디드 병렬처리 질문드립니다. [4] Supsupi 2013-01-19 1462
5254 system call process 질문드립니다. [4] Supsupi 2014-07-22 1462
5253 코드상에서 eCryptFs 사용하기 [1] 민이아빠 2012-02-15 1461
5252 웹 서비스 구현 [4] 권오혁 2014-01-23 1461
5251 u-boot에서 WFE 걸어둔 secondary core들 깨우는법 아시는분(corte... [1] 쁘앙쁘앙 2014-09-06 1461
5250 저도 아랫 분과 똑같습니다. NFS로 부팅하려 합니다. << ... [10] 유용출 2006-12-21 1460
5249 카메라 디바이스 드라이버 공부해보려는 학생입니다..(댓글답변해주세요... [4] rubio 2013-01-15 1460

사용자 로그인