Raspberry Pi > C > RPi_i2c_comm_180227: v0.4 > GPIO 핀 레벨 설정 및 레벨 읽기까지

4790 단어 RPiCgpioI2C
Raspberry Pi 2 Model B (以下RPi)
Raspbian Jessie
Python 2.7.9

I2C 통신을 구현하려고합니다.
그 전단계로서 SCL의 클록 출력을 해 본다.

코드 v0.4



v0.4 @ GitHub

처리 개요


  • GPIO26에 클럭 출력
  • 5 클럭
  • 약 200usec
  • 처음: 260usec
  • 이후: 160usec


  • GPIO05의 값을 읽는다.
  • gpio readall 명령으로 H 레벨 확인


  • 파일 구성


  • RPi_i2c_comm_180227.c
  • 메인 프로그램

  • wait_msec_nsec_180301.c 및 .h
  • 대기 처리를위한 함수


  • RPi_i2c_comm_180227.c의 main()



    RPi_i2c_comm_180227.c
    ...
    int main(){
        int loop;
        int pinlvl; // pin level
    
        // 1. output clock at [GPIO_SCL]
        gpio_setExport(GPIO_SCL, /* bfOn=*/true);
        gpio_setDirection(GPIO_SCL, /* bfOut=*/true);        
        for(loop=0; loop<5; loop++) {
            gpio_setLevel(GPIO_SCL, GPIO_HIGH);
            Wait_about200usec();
            gpio_setLevel(GPIO_SCL, GPIO_LOW);
            Wait_about200usec();
        }
        gpio_setExport(GPIO_SDA, /* bfOn=*/false);
    
        // 2. read at [GPIO05]
        gpio_setExport(5, /* bfOn=*/true);
        pinlvl = gpio_getLevel(5);
        printf("SDA:%d\n", pinlvl);
        gpio_setExport(5, /* bfOn=*/false);
    
        return 0;
    }
    
    $ gcc RPi_i2c_comm_180227.c wait_msec_nsec_180301.c
    $ ./a.out 
    SDA:1
    



    관련


  • [Resolved] Raspberry Pi > GPIO > GPIO26의 출력 설정(H 레벨)에서 ssh 연결이 끊긴다 > link: Why are some GPIO pins not available?
  • Raspberry Pi > GPIO > C > i2c_send_command_180227.c > v0.1, v0.2 > GPIO24를 H 레벨로 출력
  • Raspberry Pi > C > 밀리초 대기 처리 > test_delay_180301.c | wait_msec_nsec_180301.c 및 .h > 3.8kHz (260usec)
  • 좋은 웹페이지 즐겨찾기