Jump to content

    

Битые данные из RX_FIFO MAX3107

Всем доброго времени суток. Проблема - может быть кто сталкивался.

 

Имеется устройство (к сожалению, не моей разработки), и в нем MAX3107, стоящий на макетной плате в качестве моста между SPI-интерфейсом проца (CC5515) и одним устройством с UART. UART - полнодуплексный, 921600. SPI - от 6 до 15 МГц. CS SPI-интерфейса расходится еще на три устройства, которые в данной конфигурации спят. Обмен через мост идет пакетами по 64 байта.

 

На передачу связка работает без нареканий. При приеме же наблюдаю следующее - в вынимаемом из приемного FIFO потоке байт попадаются перестановки или вставки последовательностей байт из свежепринимаемых пакетов. Например, прилетели пакет P1 и за ним пакет P2. Последовательность вынимаемого из FIFO может выглядеть так:

 

P1[1], P1[2],..., P1[18], P2[1], P2[2], P1[19], P1[20], P1[30], P1[31], P1[21],..., P1[29], P1[30], P[31].

 

Последовательность получается длиннее на длину "вклинившихся" кусков.

 

Пробовал читать как одинарными обращениями к регистру RHR, так и пакетом (запись "0" в 0х00 MAX, затем пачка чтений). При одинарных обращениях ошибка возникает заметно реже (1-2 в 32 мбайтах потока), чем при пакетных (1 ошибка на 30-40 кбайт). При пакетной записи проблема отсутствует (проверяли логическим анализатором/бордой для приема UART на 921600).

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this