• 전체강좌

    [WAD-MX6W] Windows 10 IoT 에서 I2C 테스트하기

    twitter facebook

    안녕하세요? 러찌입니다.


    이번 시간에는 Windows 10 IoT Core OS가 실행된
    WAD-MX6W 보드에서 I2C를 테스트해 보았습니다.


    I2C(Inter-Integrated Circuit)는,

    필립스에서 개발된 직렬 컴퓨터 버스입니다.


    I2C 통신은 2개의 핀(Data, Clock)과

    소프트웨어만을 이용하여
    여러 장치들을 제어할 수 있는 장점이 있습니다.


    그리고 빠른 속도를 요구하지 않는

    간단하고 저비용의 주변 장치들에 적합합니다.


    i.MX6 Quad CPU는 I2C 를 최대 3개까지 구성할 수 있으며,
    Standard Mode(100 kbits/s)와 Fast mode(400kbits/s)를

    지원하고 있습니다.


    저희 WAD-MX6W 보드에는,

    I2C를 이용하여 아래와 같이 다양한 주변 장치들과
    통신을 하도록 설계되어 있습니다.


    - Touch 모듈의 Touch 입력 값 받아오기
    - Display 장치 EDID 값 받아오기
    - Camera 모듈 설정
    - 오디오 코덱 설정


    위 기능과 함께 WAD-MX6W 보드는

    Extension Interface를 통해

    I2C 라인을 추가로 제공합니다.


    이를 통해서 다른 주변 기기를 연결하여

    I2C 통신을 할 수 있습니다.


    Windows 10 IoT OS를 지원하는 WAD-MX6W BSP에서는
    I2C 디바이스 드라이버를 제공합니다.


    디바이스 드라이버가 잘 동작되는지 확인하기 위해

    WAD-MX6W 보드에 있는 Extension Interface를 통해,

    온습도 센서를 연결하고 I2C 통신을 테스트 해보았습니다.


    아래 캡쳐된 사진과 같이 잘 동작하였습니다.



    센서는 BME280 이라는 모듈을 사용하였고,

    온도와 습도 그리고 압력을 보여줍니다.


    "BME280" 모듈을 검색해 보시면,

    C# 언어로 만들어진 UWP 기반 소스가 있습니다.
    하드웨어 연결이 문제가 없다면,

    테스트 하시는데 어려움이 없으실 것입니다.


    소스에 대해서 간략하게 설명을 드리자면,


    최초 MainPage가 실행될 때,

    BME280의 클래스 인스턴스를 동적으로 생성한 후,
    초기화를 수행합니다.


    초기화 단계에서는,

    BME280 모듈과 통신을 위한
    I2C 초기화를 진행합니다.


    I2C의 Slave Address를 0x77로 설정하고,

    Bus Speed를 Fast Mode로 설정합니다.


    그리고 물리적으로 연결된 I2C 포트를 설정합니다.

    WAD-MX6W 보드의 Extension Interface에서는

    I2C3를 제공하고 있으므로,
    I2CControllerName을 "I2C3"로 설정합니다.


    그리고 위 관련 정보를 가지고,

    BME280이 하드웨어적으로 잘 연결되었는지
    확인하기 위해 I2C를 통해 CHIP ID를 읽습니다.


    읽어온 CHIP ID가 BME280이 맞다면,
    Calibration등의 필요한 레지스터 설정을 진행하고,

    초기화를 완료합니다.


    만약 CHIP ID가 null로 리턴하거나

    맞지 않은 ID라면, 초기화를 더이상 진행하지 않고,

    이후부터는 ERROR를 리턴하게 됩니다.


    초기화가 성공하였다면,
    이후에는 Timer를 통해, BME280 에서 수신되는

    I2C 데이터를 파싱하여 온습도와 압력의 변화되는 값을

    화면에 계속 표시하게 됩니다.


    여기까지가 샘플 소스의 내용이며,

    소스 내용은 어렵지 않으므로
    한번씩 확인해 보시면 되겠습니다.


    아래 영상을 보시면 아시겠지만,
    Windows 10 IoT Core OS가 실행된 WAD-MX6W 보드에

    I2C를 통해 연결된 BME280 모듈과의 통신이

    잘 되는 것을 확인하실 수 있습니다.


    I2C는 산업 표준이기 때문에, BME280 모듈 외에도,
    통신하고자 하는 모듈이 I2C를 지원한다면,

    간단하게 샘플 프로그램을 만들어서

    어플리케이션을 개발하실 수 있습니다.


    기회가 된다면, Windows 10 IoT Core를 지원하는

    임베디드 보드에서 테스트 해보시길 바랍니다.


    그럼 이번 글은 여기서 마치도록 하겠습니다.


    글 읽어주셔서 감사합니다.

    아래는 관련 영상입니다.


    꼭 한번씩 봐주시면 감사하겠습니다.



    * 아래는 저희가 운영하는 페이스북이며, 한번씩 방문해 주시면 감사하겠습니다.

       https://www.facebook.com/wearedev1


    * 유튜브 채널 구독 부탁 드립니다. 아래 주소에 가시면 쉽게 하실 수 있습니다.
       https://www.youtube.com/channel/UCZuDcO4s6m8lt916Nj5SjcA


    미리 감사드립니다.^^