[INTERFACE]/USB_FTDI2008. 10. 5. 21:14

[FT2232 EVM, FT245 EVM] VB테스트 프로그램 작성 - Data Read

[FT2232 EVM, FT245 EVM] VB테스트 프로그램 작성 - Data Read


사용자 삽입 이미지

FT245, FT2232 EVM을 이용한 Data Read테스트 프로그램을 작성 했다.
기존 [FT2232 EVM, FT245 EVM] VB테스트 프로그램 예제를 수정하여 데이터 Read도 가능하도록 하였다.

VB소스 코드



VB 폼을 수정해 DataRead 해서 출력할 수 있도록 수정..



FT245, FT2232를 이용하여 1바이트 데이터를 읽기 위해 먼저 SetBitMode()함수에서 Data방향을 Input으로 설정하고 FT_GetBitMode()함수로 포트 상태를 읽으면 된다.

Private Sub Command5_Click()
    'Data Read Function
    Dim ret As Long
   
    Dim data As Byte

    'BitBang모드 설정.b0-b7=In, BitBangMode(1)
    If FT_SetBitMode(m_DeviceHandle, &H0, &H1) <> FT_OK Then
        Label1.Caption = "모드설정 실패"
        Exit Sub
    End If
   
    ret = FT_GetBitMode(m_DeviceHandle, data)
   
    Label2.Caption = data
   
    'BitBang모드 설정.b0-b7=In, BitBangMode(1)
    ret = FT_SetBitMode(m_DeviceHandle, &HFF, &H1)
End Sub

Posted by nexp

댓글을 달아 주세요

[INTERFACE]/USB_FTDI2008. 5. 24. 01:21

[FT245 EVM] 관련자료

[FT245 EVM] 관련자료



테스트 예제
FTDI사 최신 드라이버 및 DLL파일






PC 인터페이스 프로그램
VB테스트 프로램 작성 :

VB예제 소스


C#을 이용한 하드웨어 제어
VC++ .net을 이용한 하드웨어 제어

 

FT245 EVM 회로도 :






Data 입출력 전압을 결정하는 VIO설정은  J6을 이용해 설정할 수 있다..



테스트 보드

Posted by nexp

댓글을 달아 주세요

[INTERFACE]/USB_FTDI2008. 3. 15. 11:32

[FT2232 EVM]PC프로그램 작성 - LED제어 VB예제

[FT2232 EVM]PC프로그램 작성 - LED제어 VB예제



프로그램 작성
코드 자체는 간단하고 디바이스 오픈하고 핸들받아서 Read, Write하면된다.
주의 사항은 FT_SetBitMode()함수로 Bit모드로 제어해야 8비트 버퍼를 제어할 수 있다.

FT2232(FT245) Device Open
If FT_OpenEx(strDescription, FT_OPEN_BY_DESCRIPTION, m_lngHandle) <> FT_OK Then
    LoggerList.AddItem "Open Failed"
    Exit Sub
End If

If FT_SetBitMode(m_lngHandle, &HFE, &H1) <> FT_OK Then
    LoggerList.AddItem "BIT Mmode  Failed"
    GoTo CloseHandle
End If


데이터를 출력할 때는 FT_Write()함수를 사용하였고 strWriteBuffer버퍼에 데이터를 쓰면 되는데... String로 잡으니 0~127까지 출력되는것 같다. 이부분 수정이 필요한데 이참에 VC++로 가는것이 좋을듯 해서 일단 패스...

If FT_Write(m_lngHandle, strWriteBuffer, 1, lngBytesWritten) <> FT_OK Then
    LoggerList.AddItem "Write Failed"
    'GoTo CloseHandle
End If

테스트 프로그램 실행 결과
PORTA에 연결된 LED가 스위치에 따라 제어되는 것을 확인할 수 있다.


Posted by nexp

댓글을 달아 주세요

[INTERFACE]/USB_FTDI2008. 3. 12. 21:38

[FT2232 EVM]PC프로그램 작성

[FT2232 EVM]PC프로그램 작성

사용자 삽입 이미지

FT2232 드라이버로딩은 되었으니 하드웨어는 문제 없을듯 하고.. 다른 테스트 하기 위해 먼저 PC프로그램 부터 작성해 보자. C++언어이고 인터페이스가 손쉬운 VC++2000을 이용하여 만들 것이며  FTD사에서 제공하는 PC 예제파일(http://www.ftdichip.com/Projects/CodeExamples.htm) 을 다운 받았다.
 
전체 구성은 아래와 같고 프로젝트가 VC++2005와는 호환이 안되 자동 업데이트 했다.
 
<- VC++2005로 업데이트한 파일




구조는 아래 그림과 같다. DLL의 API이용해서 드라이버 파일(FTD2XX.sys) 접근하면 된다.



FT_OpenEx(), FT_Write(), FT_Read()함수만 알면 별 문제 없을듯...
드라이버 NAME만 던져주면 문제 없겠군..
FT_OpenEx()함수 부터 보자
 private: System::Void OpenPort()
    {
    FT_STATUS ftStatus = FT_OK;
    if(dwOpenFlags == FT_LIST_NUMBER_ONLY) {
     int iSelIndex = comboBox1->SelectedIndex;
     if(iSelIndex >= 0)
      ftStatus = FT_Open(iSelIndex, &handle);
    }
    else {
     String * str;
     char cBuf[64];
     str = comboBox1->GetItemText(comboBox1->SelectedItem);
     for(int i = 0; i < str->Length; i++) {
      cBuf[i] = str->Chars[i];
     }
     ftStatus = FT_OpenEx(cBuf, dwOpenFlags, &handle);
    }
    }
 
 
Write() 부분
어라... 예제는 가상 시리얼 포트 예제 인것 같은데... 그냥 BaudRate 설정 없이 Write만 하면 될듯한데...
 FT_STATUS ftStatus = FT_OK;
 DWORD ret;
 char cBuf[100];
 // This assumes you have a loopback connector on the USB cable you are using.
 listBox1->Items->Clear();
 for(int i = 0; i < 100 ; i++) {
  cBuf[i] = (char)i;
 }
 if(handle == NULL) {
  OpenPort();
 }
 if(handle) {
  StartThread();
  ftStatus = FT_SetEventNotification(handle, FT_EVENT_RXCHAR, hEvent);
  ftStatus = FT_SetBaudRate(handle, 9600);
  ftStatus = FT_Write(handle, cBuf, 100, &ret);
 }
 else {
  MessageBox::Show("Open Failed");
  return;
 }
 
 
아무래도 이 예제보다는 Bit Bang mode로 접근해야 할듯 하다
Posted by nexp

댓글을 달아 주세요

  1. 비밀댓글입니다

    2008.06.01 19:20 [ ADDR : EDIT/ DEL : REPLY ]

[INTERFACE]/USB_FTDI2008. 3. 9. 09:15

[FT2232 EVM]보드 조립

[FT2232 EVM]보드 조립

[2008/3/8]
PCB나와서 조립 했다. 소형으로 만들긴 했는데... 몇가지 아쉬움이 있네...




[2008/3/9]
확장보드에 연결하여 테스트
드라이버까지는 정상적으로 올라가는것으로 봐서 큰 문제는 없을듯...





보드 조립완료
사용자 삽입 이미지

테스트 중 VCCIO전원을 연결하지 않아 IO전원이 출력되지 않는것 확인...
내부 레귤레이터 쓰면 될줄 알았는데... 데이트시트 보니 내부 레귤레이터는 내부에만 쓰고 외부는 IO는 따로 공급해야 하는것으로 되어 있네... 윽~
점퍼 하나 날려야 겠다.

-> 수정해서 2차 PCB제작
Posted by nexp

댓글을 달아 주세요