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

FM 라디오 드라이버 작성하는 건 아직 초보이고...

빨리 해야하는 압박감에..다른 방법으로 눈을 돌렸습니다..

어플리케이션에서 /dev/i2c-0 에 접근하여 하는 방법이 있는 듯 해서 아래있는 코드를 작성해 보았습니다.

일단 프로그램 돌렸을때 에러는 발생하지 않고 무난하게 실행은 됩니다..

<궁금한 점>
1. 16bit의 값을 write 하고 read 해야하는데..아래 같은 방법으로 가능할까요?

2. write함수로 칩의 내부 레지스터를 지정하고
다시 write함수로 값을 전달할 수 있을까요?

3. write함수로 칩의 내부 레지스터 를 지정하고
read함수로 2byte 만큼 읽어올 수 있을까요?

아래 코드는 이재훈님이 작성한 aesop2440에서  tvp5150디바이스를 제어한 테스트 코드가 있는 pdf파일에서 보고 작성한 내용입니다.
이 코드를 저는 아래의 주석과 같이 이해를 하고 있는데 맞는지 궁금합니다..
조언 부탁드립니다..

int main ()
{
    int file;
    char filename[20] = "/dev/i2c-0";
    int addr = 0x10>>1;
    unsigned short data = 0x0000;
    unsigned short magic = 0x0000;

    printf("SI4702 Radio Chip Test...n");

    if ((file = open(filename, O_RDWR)) < 0)     
    {  
        printf("nFile Open Error");
        exit(1);
    }  
    if (ioctl(file, I2C_SLAVE, addr) < 0)       
    {  
        printf("nSlave Address Error");
        exit(1);
    }   

    //칩 내부 레지스터 주소 02에 0x4001이라는 2byte 데이타를 write
    write(file, 0x02, 1);
    write(file, 0x4001, 2);
    delay();

    //칩 내부 레지스터 주소 07에서 magic이라는 변수에 2byte 만큼 읽어오기
    write(file, 0x07, 1);
    read(file, &magic, 2);
    printf("nMagic number : 0x%x", magic);

    write(file, 0x00, 1);       //register set
    read(file , &data, 2);      //read data
    printf("nDevice ID : 0x%x", data);

    close(file);
}


김형태

2009.06.24 05:09:19
*.88.228.127

디바이스를 꼭 커널에서 클라이언트로 등록해주어야 제어를 할 수 있는 건가요?...
현재 테스트하고 있는 보드는 i2c-0 (GPB5, GPB6)에 디바이스 3개가 달려있습니다.
최종환 님께서 올린자료 (i2c-0에 연결된 디바이스 찾는 프로그램)를 실행해 보았는데 mt9d111(캠 관련..) 을 찾지 못합니다..
반면 mv6410에서는 디바이스를 찾는데..어떤 부분이 문제인지 잘 모르겠습니다.. 물론 같은 커널로 실행해 보았습니다..
mv6410과 틀린점이 있다면 디바이스 3개가 달려있고 현재 mv6410은 캠 하나 달려있다는 것입니다..
그리고 mv6410에서 i2c로 동작하는 캠을 부팅 초기부터 스코프로 찍어보았는데 클락만 발생하고 데이터는 아무런 신호가 없습니다..
그래도 캠은 잘 동작하는 것 같구요...
i2c로 센서만 초기화하고 넘어가도 뭔가 데이터가 나가고 들어오는 것을 볼 수 있을 것 같은데..보이질 않네요..
제대로 동작하는게 맞을까요?

조언 부탁드립니다..ㅜㅜ
List of Articles
번호 제목 글쓴이 날짜 조회 수
2048 AESOP-6410 : linux-kernel-2.6.21.5 - 090327 컴파일 방법... [2] 서덕재 2009-06-22 822
2047 터치 스크린 포팅(tslib) 방법에 대한 질문입니다. [2] 안병기 2009-06-22 1312
» s3c6410 i2c 관련질문입니다. (댓글 질문추가) [1] 김형태 2009-06-17 1178
2045 6410 USB OTG 문의 [2] 신민호 2009-06-17 1153
2044 커널 버젼 올리고 나니 LCD가 안나옵니다. [1] 한영석 2009-06-17 698
2043 LCD Rotation 질문입니다. [1] 김진형 2009-06-16 648
2042 6410 회로설계시 질문 [4] 신민호 2009-06-15 1003
2041 mfc 관련 질문 사항 [1] 안시영 2009-06-15 630
2040 이솝 6410 사운드 드라이버 관련 [3] 홍성만 2009-06-13 788
2039 800x480 LCD 질문입니다. [2] 김진형 2009-06-12 775
2038 s3c6410 I2C 관련 질문 입니다. [2] 김형태 2009-06-05 1092
2037 6410 usb OTG 장치연결 실패 [1] 정해수 2009-06-05 915
2036 AESOP6410 회로설계시 질문? [2] 임의석 2009-06-05 614
2035 Dcache를 사용 할려면 mmu를 enable 시켜야 하나요? [1] 이성호 2009-06-05 652
2034 nand에 파일시스템 적용하는 것에 관한 질문입니다. [1] 안병기 2009-06-05 1207
2033 deep sleep시 gpio 정보도 같이 사라지는지 궁금합니다. 우한규 2009-06-04 889
2032 ide방식 하드 연결. 로그좀 봐주세요 [2] 한영석 2009-06-04 868
2031 2.6.28버젼에서의 카메라 인터페이스 김재형 2009-06-04 789
2030 리눅스 카메라 드라이버 관련..(MT9D111) [2] 김광석 2009-06-03 1504
2029 블루투스 포팅관련 질문입니다. [5] 안병기 2009-06-03 2526

사용자 로그인