마하전자기술연구소 LOGO

제품검색 고객센터053-604-2355
기술자료실

Home > 기술자료실 기술자료실

제 목 37. USB 접속 범용 I/O유니트
첨부파일

 

                  PIC16F877를 USB로 접속해, PC로부터 PIC의 입출력 포토를 제어
                  할 수 있도록(듯이) 한 것으로, 입출력 설정, 입출력을 비트마다 제어 할 수 있습니다.
                  게다가 액정 표시기를 접속하는 일도 가능해, PC로부터 메세지를
                  출력할 수가 있습니다.

 


 USB 인터페이스의 범용 I/O유니트

 PC와 USB로 접속해, 최대 28비트의
 입출력을 할 수 있는 범용의 유니트입니다.


【개요】

PIC16F877에 USB 디바이스 콘트롤러인, 내셔널 반도체사의
USBN9603」를 접속해, 풀 스피드에서의 USB 통신으로, 범용의 입출력을 실시해
.
이 유니트의 USB 통신으로 가능한 (일)것은 아래와 같이가 되고 있습니다.

 (1) PC로부터 PIC의 포토의 입출력 모드의 설정
     비트마다 입력인가 출력인지를 지정 할 수 있습니다.
 (2) PC로부터의 포토 입출력
    최대 28 핀의 입출력을 할 수 있습니다.
 (3) 액정 표시기에의 표시 메세지 출력
   PC로부터의 메세지를 액정 표시기에 표시한다.

【유니트의 구성】

본유니트의 전체 구성은 밑그림과 같이 되어 있어, PIC16F877와 SUBN9603만으로
대부분이 구성되어 있습니다. USBN9603로 PC와 풀 스피드 모드로 접속해
PIC16F877가 남은 포토는 모두 외부에 꺼내고 있습니다.
포토 B는, 액정 표시기에도 사용할 수 있도록(듯이), 포토 C와 조합하고 있습니다.






또, 모든 입출력의 포토에는 10 kΩ의 pull-up 저항을 붙이고 있기 때문에
스윗치류를 그대로 접속하면 입력이 가능해지고 있습니다.

【회로 구성】

상기의 구성을 회로도에서 나타내면(자) 밑그림과 같이 됩니다. USBN9603에는, 클락용
(으)로서 24 MHz의 크리스탈 발진기를 사용했습니다. 이 발진기는, 통상의 크리스탈
진동자와 같은 HC49US 타입이므로, 소형이어 사용하기 쉽다고 생각합니다. 다만 20 mA
(와)과 약간 소비 전류가 많습니다만.
그리고는 특별한 소자 회로도 없기 때문에 간단하다고 생각합니다. 밑그림은 확대 할 수 있습니다.







아래와 같은 파일은 WinDraft, WinBoard용의 회로도와 패턴도입니다.
다운로드해 해동해 사용해 주세요.

  ★ 회로도 파일(WinDraft용)
  ★ 패턴도 파일(WinBoard용)


【디바이스측 프로그램】

C언어판의 USB 기본 프로그램에, 각 엔드 포인트의 유저 처리부를
추가해 작성합니다.
엔드 포인트의 구성은 아래 표와 같이 하고 있습니다. IN/OUT의 견해는 호스트측으로부터
본 입출력이 되고 있습니다.
USBN9603는 최대로 엔드 포인트가 컨트롤+6개까지 사용할 수 있습니다. 기본 데바
의자 프로그램에서는, 전부를 사용할 수 있게 되어 있습니다만, 범용 I/O로서 사용해
있는 것은, 아래 표와 같이 컨트롤+4개입니다.

파이프 No 엔드 포인트 IN/OUT 처리 함수 용도
없음 0 IN/OUT 컨트롤 전송
배치용
0 1 벌크 IN do_tx1( ) 미사용
1 2 벌크 OUT do_rx1( ) 커멘드 출력
 ·범용 입출력 모드 설정 커멘드
 ·액정 표시기 모드 설정 커멘드
 ·상태 입력 커멘드
2 3 벌크 IN do_tx2( ) 미사용
3 4 벌크 OUT do_rx2( ) 전비트에의 출력
4 5 벌크 IN do_tx3( ) 전비트 상태 입력
5 6 벌크 OUT do_rx3( ) 액정에의 메세지 출력
16 문자×2행의 메세지 표시용

디바이스의 프로그램은 C언어 베이스가 되고 있습니다. C언어로 작성한 USB의
기본 프로그램에 유저 처리 부분을 추가하고 있습니다.
프로그램의 구성으로서는 아래와 같은 4개(살)이 되고 있습니다.
  
  usb_io2.c  :메인 프로그램
  usbmain.h :USB 처리 메인 링크 모듈
  usbn960x.h :USBN9603의 레지스터류의 정의 파일
  usbdef.h   :USB 관련의 정수와 디바이스 디스크립터를 정의한 파일

이하로부터 디바이스측의 상기 프로그램을 다운로드 할 수 있기 때문에
해동해, CCS의 C컴파일러로 사용해 주세요. MPLAB에 통합해 컴파일
하는 것이 편리합니다.

  ★ USB 접속 범용 I/O디바이스 프로그램  
  

 USB 기본 라이브러리 갱신에 수반해 대폭 갱신

  ★ USB 접속 범용 I/O디바이스 프로그램 (3/3)
   프로덕트 ID가 0 x0041로 변해있습니다.


메인 프로그램으로 USB 처리 메인 링크 모듈을 인클루드 하면,
그리고는, 유저 처리 부분만큼을 메인 프로그램으로 작성하면 좋게
되어 있습니다.
메인 프로그램으로 유저 처리부로서 추가한 부분은 아래와 같이가 되고 있습니다.

(1) 메인 처리의 기본 부분
  메인 처리로서 기본이 되는 부분에서, 여기서 USB의 버퍼의 사이즈 지정과
  usbmain.h라고 하는 USB 처리의 메인 함수를 링크하고 있습니다.
  그리고는 자신의 하드웨어 관련의 설정을 추가해, 마지막에 USB 초기화 함수
  의 init_usb( )를 콜그리고, 명명 루프가 됩니다.
  메인 루프에서는 아무것도 추가하고 있지 않았기 때문에, 공백인 채입니다.







(2) 커멘드 수신 처리(파이프 1)
  파이프 1의 수신 처리로 PC로부터의 커멘드 접수와 현재 상태의 반송입니다.
  PC로부터의 커멘드로서는, 액정 표시기를 사용하는 모드인가, 단순한 입출력
  만의 모드인가의 전환이라고 아무것도 변경하지 않는 모드의 3 종류가 있습니다.
  어느 경우에도, 현재 상태를 TX3, 파이프의 4로 돌려 보내고 있습니다.
  액정 표시기 모드때로는, 액정 표시기의 초기화를 해, 스타트 메세지
  (을)를 표시합니다.
  아무것도 변경하지 않는 모드는, 단순하게 현재 상태를 돌려 보낼 뿐(만큼)의 처리를 실시합니다.






(3) 포토 출력 제어(파이프 3)
 파이프 3의 수신 처리로 수신한 데이터를 각 포토에 설정 출력합니다. 이 때
 액정 표시 모드인지 어떤지에 의해, 출력하는 포토를 제한하고 있습니다.
 즉 액정 표시기를 사용하는 모드때로는, 액정 표시기가 접속되고 있는 포토
  에는 입출력할 수 없기 때문에, 거기에는 아무것도 하지 않게 하고 있습니다.











(4) 액정 표시 제어(파이프 5)
  파이프 5로부터는 액정 표시 데이터가 보내져 옵니다. 이 표시 데이터의 1바이트째는
  액정 표시기에 대한 커멘드가 되어 있어, 아래와 같은 제어를 실시합니다.

    0: 액정 표시기의 전클리어
    1: 1행째의 최초로 커서 세트
    2: 2행째의 최초로 커서 세트
  그 후에 계속되는 16 문자가 표시 데이터가 됩니다.












【호스트측 프로그램】

호스트측의 프로그램으로서는, 디바이스 드라이버와 응용 프로그램이
필요합니다.
우선, 디바이스 드라이버는 아래와 같이를 그대로 사용했습니다.
INF 파일에 디바이스를 추가합니다. 추가 디바이스는 아래와 같이로 합니다.
  프로덕트 ID  : 0x9B9
  프로덕트 ID  : 0x0041

 ★ 카시와노 마사히로씨작 「범용 USB 드라이버」(Interface 2000년 3월호)

응용 프로그램은, Visual Basic Ver6 그리고 작성했습니다.
프로젝트 관련 파일을 다운로드할 수 있도록(듯이) 했으므로, 사용해 주세요.

 ★ USB 접속 범용 I/O프로그램 실행 파일  (7/20)
    (VB6의 런타임 패키지가 필요합니다)

【범용 I/O제어 프로그램】   

범용 I/O제어용의 호스트 프로그램으로서는, 범용 I/O유니트의 전기능을
확인 할 수 있게 되어 있습니다. 그 기능은 아래와 같이 되어 있습니다.

(1) 프로그램 로드시에 USB 로가-를 오픈
  프로그램 기동시에 USB 로가-의 파이프를 오픈합니다. 따라서
  본프로그램 기동전에, 로가-유니트의 USB 접속이 완료해, 범용 USB
  드라이버가 기동하고 있을 필요가 있습니다.
(2) 모드의 제어
  LCD Mode 버튼을 누르면(자) 액정 표시 모드에, I/O Mode 버튼을 누르면(자)
  I/O모드에 모드의 전환 제어를 출력합니다.
(3) 전입출력 포토 상태 표시
  통상의 입출력 모드에서는 28개의 창에 초록과 빨강으로 High인가 Low인지를 표시합니다.
  액정 표시기를 사용하는 모드에서는, 사용할 수 없는 포토는 청색이 되어 사용할 수 없다
  일을 나타냅니다.
  단발독입버튼을 눌렀을 때는 1회만 입력해 표시합니다. 연속독입의
  때로는, 0. 1초간격으로 입력해 상태 표시를 하는 것을 반복합니다.
(4) 입출력 모드 설정
  체크 마크의 곳에 체크를 넣으면(자) 입력 모드에, 체크를 해제하면(자)
  출력 모드로 설정합니다. 실제의 설정 출력은 설정 출력 버튼을 눌렀을 때에
  출력됩니다.
(5) 데이터 출력
  상태 표시창을 클릭하면(자) 상태가 반전해, 그 상태로 설정 출력 버튼을
  누르면(자) 그 데이터가 출력됩니다.
(6) 액정 표시 출력
  LCD Mode로 해, 표시 데이터를 입력하고 나서 표시 출력 버튼을 누른다고 표시
  데이터가 출력됩니다.
  표시 데이터는 위쪽이 1행째에 아래 쪽이 2행째가 됩니다. 양쪽 모두 공백의
  때로는, 액정 표시기를 전클리어 합니다.
(7) 종료 처리
  종료 버튼을 누르면(자), 프로그램을 종료해, USB를 클로우즈 하고 나서 폼
  (을)를 소거합니다.

 프로그램을 기동하면(자) 범용 I/O유니트가 USB로 접속되고 있으면, 밑그림의
화면이 표시되고 준비 완료가 됩니다. 빨강과 초록으로 표시되는 것이, 현재의 전포토
상태가 됩니다.







LCD Mode 버튼을 눌러 액정 표시 모드로 하면(자), 밑그림과 같이 사용할 수 없다
포토는 청색이 됩니다.









【외관】

USB 접속의 범용 I/O유니트의 외관은 밑그림과 같이 되어 있습니다. 보드 단체
입니다.


액정 표시기를 접속해, PC로부터의 메세지를
표시하는 일도 가능합니다.



PIC16F877와 뒤편에 USBN9603가 실장되고 있을 뿐입니다.
외부와의 접속은 핀과 연결기가 되고 있습니다.



USB용의 B타입 소켓과 클락용의 24 MHz의
소형 크리스탈 발진기입니다.


USBN9603는 뒤편에 직접 납땜입니다.



외부 연결기로 액정 표시기를 접속할 수 있는 핀은
연결기에, 외는 1 핀 마다 스트랩 핀과
되어 있습니다. 입력용의 pull-up 저항은 모든
핀에 10 kΩ가 접속되고 있습니다.



USBN9603의 납땜은, 한 번 충분히의 반전으로
핀과 패턴을 납땜 해 버려, 그 후로,
기판을 세로로 하면서, 반전 팔뚝을 대어 여분의 반전을
아래 쪽에 흘려 취하도록(듯이) 해 마무리합니다.

목록보기

www.1chip.com, www.1chip.co.kr
www.micom114.com
자료실바로가기

대구광역시 북구 산격2동 1629 산업용재관 10동 13호 (2층) / Tel. 053-604-2355 / Fax. 053-383-2354 / E-mail. maha@paran.com