2016-06-26 2 views
1

Я хочу использовать микросхему FT232H в режиме SPI для управления дисплеем. Я установил тактовую частоту до 5 МГц. При тестировании моего кода я заметил, что даже в замкнутом цикле команды выполняются на расстоянии около 120 микросекунд. В приведенном ниже коде я выдаю команду для записи 4 байта. Я время действия с секундомером в VB, а также смотреть сигналы в области. Код занимает около 200 микросекунд, чтобы выполнить один раз и около 320 микросекунд для выполнения дважды подряд, 450 микросекунд в 3 раза и т. Д. Фактическая отправка байтов занимает всего около 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. некоторые микросхемы имеют отдельные часы для внутренней связи

    если установлен слишком низко, то вы ждете, пока команда не будет отправлена ​​на модуль SPI, а не на SPI передать его самостоятельно.

  2. Прерывание время

    Если вы используете прерывания, то либо ваш ISR вызываются с задержкой (также прерывают модуль иногда S собственные часы) или блокируются другим процессом, как таймер/счетчики в фоновом режиме или Передача или конфигурация USB/DMA или ISR.

  3. Debug интерфейс

    Если вы используете интерфейс отладки (например JTAG) вы могли быть остановлены им. В таком случае попробуйте сырое приложение без такого интерфейса и измерить осциллографом, чтобы это исключить.

  4. Управление питания

    Для экономии энергии некоторых чипов питания неиспользуемых модулей и перед использованием они должны быть запущены, которая занимает некоторое время. Это может иметь место, даже если вы меняете конфигурацию модуля.

  5. Ошибка в чипе

    Ну с ныне вынуждены/ринулись новые чипы на рынке управления есть более высокие возможности оставлять ошибки в чипах (значительно выше, чем в прошлом). Так что не исключайте этого. Я несколько раз наткнулся на это несколько раз. Обычно пытайтесь связаться с производителем чипов и/или проверить его техническое описание для обновлений/ошибок и известных списков ошибок.

0

Я узнал от фабрики чипов, что задержка связана с соображениями массового переноса USB. Я буду работать со временем, буферизируя как можно больше данных при каждой передаче.

 Смежные вопросы

  • Нет связанных вопросов^_^