2016-06-26 3 views
1

디스플레이를 구동하기 위해 SPI 모드에서 FT232H IC를 사용하고 싶습니다. 나는 클럭 주파수를 5 MHz로 설정했다. 내 코드를 테스트 할 때, 나는 긴밀한 루프에서도 명령이 약 120 마이크로 초 간격으로 실행된다는 것을 알아 차렸다. 아래 코드에서 4 바이트를 쓰는 명령을 실행합니다. VB에서 스톱워치를 사용하여 동작을 측정하고 범위의 신호를 봅니다. 이 코드는 한 번 실행하려면 약 200 마이크로 초, 한 번에 두 번 실행하려면 약 320 마이크로 초, 세 번 동안 450 마이크로 초 걸리는 등의 효과가 있습니다. 실제로 바이트를 보내는 데는 약 7 마이크로 초 밖에 걸리지 않습니다. 나머지 시간 동안 아무 일도 일어나지 않습니다. 즉, 120 마이크로 초가 각 전송과 함께 낭비되는 것처럼 보입니다. 질문 :이 비활성 시간에만 FT232H의 루틴을 복구 할 수 있습니까? 여기에 뭔가가 빠졌습니까? 더 나은 명령을 사용할 수 있습니까? SPI를 사용하여 가능한 한 빨리 ILI9341 디스플레이 드라이버 칩에 데이터를 클록합니다. 나는 다른 사람들이 그 일을했다는 것을 알고있다. 제안을 환영합니다!FT232H 쓰기 명령 대기 시간

'Start 
    'Data transmit, no receive 
    SendBuffer(0) = &H10 'Output on rising clock, no input, MSB first, clock a number of bytes out 
    SendBuffer(1) = &H3  'Length L 
    SendBuffer(2) = &H0  'Length H 
    SendBuffer(3) = &HA 
    SendBuffer(4) = &HAA 
    SendBuffer(5) = &HA 
    SendBuffer(6) = &HAA 

    'About 1-3 microseconds to this point 

    FT_Status = FT_Write_Bytes(FT_Handle, SendBuffer(0), 7, BytesWritten) ' Write buffer to the device 

    '201 microseconds to this point 

    'Data transmit, no receive 
    SendBuffer(0) = &H10 'Output on rising clock, no input, MSB first, clock a number of bytes out 
    SendBuffer(1) = &H3  'Length L 
    SendBuffer(2) = &H0  'Length H 
    SendBuffer(3) = &HA 
    SendBuffer(4) = &HAA 
    SendBuffer(5) = &HA 
    SendBuffer(6) = &HAA 
    FT_Status = FT_Write_Bytes(FT_Handle, SendBuffer(0), 7, BytesWritten) ' Write buffer to the device 

    '321 microseconds to here 

    'Data transmit, no receive 
    SendBuffer(0) = &H10 'Output on rising clock, no input, MSB first, clock a number of bytes out 
    SendBuffer(1) = &H3  'Length L 
    SendBuffer(2) = &H0  'Length H 
    SendBuffer(3) = &HA 
    SendBuffer(4) = &HAA 
    SendBuffer(5) = &HA 
    SendBuffer(6) = &HAA 
    FT_Status = FT_Write_Bytes(FT_Handle, SendBuffer(0), 7, BytesWritten) ' Write buffer to the device 

    '450 microseconds to here 

답변

0

당신의 칩 (FT232H) 경험하지만, 여기에 몇 가지 가능성 일반적으로이 없습니다 : 다음 너무 낮게 설정하면

  1. 일부 IC는 내부 통신

    에 대해 별도의 시계를 명령이 SPI 모듈로 전송되고 SPI이 전송되지 않을 때까지 기다리는 중입니다. 본인.

  2. 인터럽트 타이밍

    당신이 다음 인터럽트를 사용하는 경우 중 하나를 당신의 ISR이 지연이라고 (또한 모듈은 가끔 자신의 시계를이야있다 중단) 또는 당신은 타이머/카운터와 같은 다른 프로세스에 의해 차단됩니다 백그라운드에서 또는 USB/DMA 전송 또는 구성 또는 다른 ISR.

  3. 디버그 인터페이스

    디버깅 인터페이스 (같은 JTAG) 당신이 그것을 중지 할 수 있습니다를 사용하는 경우. 그런 경우 이러한 인터페이스없이 원시 응용 프로그램을 시도하고 오실로스코프로 측정하여이를 제외하십시오.

  4. 전원 관리

    일부 칩이 사용하지 않는 모듈을 구동하고 사용하기 전에 그들이 약간의 시간이 소요되는 시작해야 할 전력을 저장합니다. 이는 모듈의 구성을 변경하는 경우에도 해당 될 수 있습니다. 칩 그런데 요즘 강제로

    에서

  5. 버그/(다음 과거에 훨씬 더 높은) 칩에 버그를 떠나 더 높은 가능성이있는 경영진에 의해 시장에 새로운 칩을 돌진했다. 그래서 이것을 배제하지 마라. 나는이 몇 배를 이미 우연히 발견했다. 일반적으로 칩 생산자에게 연락하거나 업데이트/정오표 및 알려진 버그 목록에 대한 데이터 시트를 확인하십시오.

0

지연이 USB 대량 전송 고려 사항과 관련되어 있음을 칩 공장에서 알게되었습니다. 각 전송에 가능한 한 많은 데이터를 버퍼링하여 타이밍에 대해 작업하겠습니다.