Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: CY7C68013A FIFO
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > RS232/LPT/USB/PCMCIA/FireWire
Igoryok
Доброго времени суток. Мучаюсь одним вопросом-как вставить несколько байт в начало пакета, передаваемого в FIFO?. Суть в следующем: с АЦП идет поток данных и пишется в FIFO, чтоб передать по USB HS в комп. Предполагается использовать GPIF для ввода данных. НО! Необходимо в самое начало каждого пакета вставлять несколько байт служебной информации (счетчик шины, который требуют программисты). Судя по TRM можно редактировать пакеты при AUTOIN=0, но очень расплывчыто написано...Можно ли записать в буфер несколько байт, а потом включить запись с АЦП через GPIF? Не потрутся ли записанные данные? И по какому принципу работает адресный счетчик этого FIFO?
jur
Цитата(Igoryok @ Feb 12 2007, 14:07) *
Судя по TRM можно редактировать пакеты при AUTOIN=0, но очень расплывчыто написано...
Написано расплывчато, да.
Цитата(Igoryok @ Feb 12 2007, 14:07) *
Можно ли записать в буфер несколько байт, а потом включить запись с АЦП через GPIF? Не потрутся ли записанные данные? И по какому принципу работает адресный счетчик этого FIFO?
Суть тут очень проста. Дело в том, что когда буфер FIFO заполнен, он поступает в распоряжение SIO. Если AUTOIN=1, то он тут же передается в шину. Но если AUTOIN=0, то с буфером можно делать, что заблагорассудится. В частности, изменить в нем любые байты. А после изменения нужно "вручную" передать их в USB. Вот пример:

// FIFO заполнен, корректируем содержимое пакета
EP4FIFOBUF[0] = packet_counter++;
EP4BCH = 2; // send 512 bytes
SYNCDELAY;
EP4BCL = 0; // arm EP4IN

В этом примере в начало пакета добавляется его номер и скорректированный пакет уходит в USB.
Igoryok
[/quote]
Дело в том, что когда буфер FIFO заполнен....... с буфером можно делать, что заблагорассудится..
[/quote]
Это я понял из TRM, у меня ситуация другая-мне СНАЧАЛО надо записать 5 байт в буфер FIFO, а потом уже заполнять его через GPIF. Если сначало его заполнить, а потом начать редактировать первые 5 байт, то по логике они потрутся (потеряются 5 байт информации) и заменятся на новые (отредактированные), что в моем случае недопустимо. Может кто сталкивался с подобной проблемой?
jur
Цитата(Igoryok @ Feb 13 2007, 08:11) *
у меня ситуация другая-мне СНАЧАЛО надо записать 5 байт в буфер FIFO, а потом уже заполнять его через GPIF. Если сначало его заполнить, а потом начать редактировать первые 5 байт, то по логике они потрутся (потеряются 5 байт информации) и заменятся на новые (отредактированные), что в моем случае недопустимо.
Не представляю себе ситуации, когда было бы нельзя записать эти 5 байт в буфер после его заполнения... А так они конечно затрутся GPIF'ом. Тут надо что-то извращенное замутить...
vmp
Глупый вопрос - а почему именно в начало буфера?
Может быть программистов устроят 5 байт в конце буфера?
Raimis
Цитата(Igoryok @ Feb 13 2007, 10:11) *
Если сначало его заполнить, а потом начать редактировать первые 5 байт, то по логике они потрутся (потеряются 5 байт информации) и заменятся на новые (отредактированные), что в моем случае недопустимо. Может кто сталкивался с подобной проблемой?

С подобной проблемой несталкивался, но одно решение пришло в голову:
В GPIF надо писать не в 8-битным, а 16-битным режимом. С АЦП подавать 8 бит, а в С68013 записать 16 бит. Тогда только половина пакета пакета будет заполнена (каждый второй байт будет с АЦП). Ну вот эту другую 'половину' можно заполнить любой информацией. Такой метод подойдет конечно только в том случае если есть двойной запас скорости.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.