Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2018-июн-23 19:14

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 58 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: вопрос по SPI
СообщениеДобавлено: 2015-янв-28 10:46 
Не в сети

Зарегистрирован: 2014-ноя-17 08:47
Сообщения: 103
здравствуйте Уважаемые разработчики

столкнулся с непонятной проблемой при использовании связки из контроллеров 1986ВЕ1Т и 1986ВЕ9х связанных по SPI
помимо этого используется DMA и УАПП на 1986ВЕ1Т все передачи осуществляются через ДМА
причем если мы берем 2 контроллера 1986ВЕ9х, то у нас нет никаких проблем с передачей,
а при использовании разных контроллеров после определенного количества 16битных слов сообщение выдаваемое 1986ВЕ1Т начинает искажаться следующим образом:
последнее слово в посылке перемещается на 1 место в посылку остальное выдается по порядку;
для подтверждения прикрепляю пример, в примере использовались: 1986ВЕ1Т в керамическом корпусе ревизия 3, 1986ВЕ9х ревизия 3 корпус пластиковый,
а также картинки с осциллографа и съёмка памяти кейла.
итак система должна работать следующим образом: с 1986ВЕ9х приходит чипселект и клок на 1986ВЕ1Т, а 1986ВЕ1Т работает 4 каналами ДМА (2 выдает 2 принимает) и выдает не то что требуется и не то что записано у него в памяти, причем до 4 байт он выдает нормально, а после начинаются глюки;
такое ощущение что где-то не успевает до передать и отправляет следующей посылкой...
в общем что я делаю не так или какие есть рекомендации по исправлению этого глюка?

да точно... на снимках: желтая и синяя линии выдачи 1986ВЕ1Т(ssp1, ssp2), красная клок, зеленая чипселект


Вложения:
снимки.rar [76.53 КБ]
Скачиваний: 145
research_project_0.rar [770.14 КБ]
Скачиваний: 181
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по SPI
СообщениеДобавлено: 2015-янв-28 11:36 
Не в сети

Зарегистрирован: 2009-май-29 16:09
Сообщения: 590
Откуда: АО "ПКК Миландр"
rubygoblin писал(а):
здравствуйте Уважаемые разработчики

столкнулся с непонятной проблемой при использовании связки из контроллеров 1986ВЕ1Т и 1986ВЕ9х связанных по SPI
помимо этого используется DMA и УАПП на 1986ВЕ1Т все передачи осуществляются через ДМА
причем если мы берем 2 контроллера 1986ВЕ9х, то у нас нет никаких проблем с передачей,
а при использовании разных контроллеров после определенного количества 16битных слов сообщение выдаваемое 1986ВЕ1Т начинает искажаться следующим образом:
последнее слово в посылке перемещается на 1 место в посылку остальное выдается по порядку;
для подтверждения прикрепляю пример, в примере использовались: 1986ВЕ1Т в керамическом корпусе ревизия 3, 1986ВЕ9х ревизия 3 корпус пластиковый,
а также картинки с осциллографа и съёмка памяти кейла.
итак система должна работать следующим образом: с 1986ВЕ9х приходит чипселект и клок на 1986ВЕ1Т, а 1986ВЕ1Т работает 4 каналами ДМА (2 выдает 2 принимает) и выдает не то что требуется и не то что записано у него в памяти, причем до 4 байт он выдает нормально, а после начинаются глюки;
такое ощущение что где-то не успевает до передать и отправляет следующей посылкой...
в общем что я делаю не так или какие есть рекомендации по исправлению этого глюка?

да точно... на снимках: желтая и синяя линии выдачи 1986ВЕ1Т(ssp1, ssp2), красная клок, зеленая чипселект

Возьмите два контроллера 1986ВЕ1Т.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по SPI
СообщениеДобавлено: 2015-янв-28 11:49 
Не в сети

Зарегистрирован: 2014-ноя-17 08:47
Сообщения: 103
ну .... это не совсем решение проблемы, да и второй в конечной системе не требуется, в основном 1986ВЕ1Т и идет на замену 1986ВЕ9х из-за наличия аппаратного ARINC
поэтому используются разные МК.
может дело в том, что они не могут быть состыкованы по SPI?
или у них связка ДМА-SPI работают по разному?
если так то по каким правилам идет перетасовка в сообщении и на какой длине сообщения она начинается?
и сколько таких "переломов" существует, по которым меняются правила выдачи сообщений?

второго к сожалению у меня нету, но я думаю что проблема сохранится потому как с 1986ВЕ9х на 1986ВЕ1Т идет 2 провода: это чипселект и клок больше они ничем, кроме питания, не связаны; выдает в воздух и принимает воздух, ну с приёмом кстати тоже глюки если, но я их пока не отслеживал, сначала с выдачей разберусь, потому как принимаю "эхо"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по SPI
СообщениеДобавлено: 2015-янв-28 12:34 
Не в сети

Зарегистрирован: 2009-май-29 16:09
Сообщения: 590
Откуда: АО "ПКК Миландр"
За один цикл DMA происходит передача из DMA в SPI DMA_VALUE_TRANSMITH(SIZE_DMA_SPI1_TX_MASSIVE / 2) 16 битных слов, если правильно отследил
SPI DMA_VALUE_TRANSMITH(SIZE_DMA_SPI1_TX_MASSIVE / 2)=16. Буфер FIFO SPI 8 ячеек по 16 бит. Значит не все данные из цикла DMA помещаются в FIFO, что с ними происходит? Вы пробовали уменьшать значение SIZE_DMA_SPI1_TX_MASSIVE, это как-то влияет?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по SPI
СообщениеДобавлено: 2015-янв-28 12:37 
Не в сети

Зарегистрирован: 2014-ноя-17 08:47
Сообщения: 103
вооот точно пробовал все нормально начинает работать когда SIZE_DMA_SPI1_TX_MASSIVE = 4, у меня даже снимки памяти и сигнала вложены
так... а это получается я не могу больше 8 16битных слов цикл набрать? или как?
у меня например посылка должны содержать 20 16битных слов, у меня получится тогда сделать так чтобы они все были переданы по ДМА?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по SPI
СообщениеДобавлено: 2015-янв-28 12:48 
Не в сети

Зарегистрирован: 2009-май-29 16:09
Сообщения: 590
Откуда: АО "ПКК Миландр"
rubygoblin писал(а):
вооот точно пробовал все нормально начинает работать когда SIZE_DMA_SPI1_TX_MASSIVE = 4, у меня даже снимки памяти и сигнала вложены
так... а это получается я не могу больше 8 16битных слов цикл набрать? или как?
у меня например посылка должны содержать 20 16битных слов, у меня получится тогда сделать так чтобы они все были переданы по ДМА?

А пробовали пересылать 32-x разрядные слова из DMA в SPI (src_size=2’b10 ), что при этом получается? DMA может передать сколько указано, но FIFO больше 8 не примет, разбиение происходит на несколько циклов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по SPI
СообщениеДобавлено: 2015-янв-28 13:02 
Не в сети

Зарегистрирован: 2014-ноя-17 08:47
Сообщения: 103
32 битными словами не пробовал там кажется верхняя часть слова отрезается из-за регистра данных SPI = 16бит и массив будет занимать в 2 раза больше места, а с 16 битными словами не получится из-за того что разбиения не происходит как для 32 битных слов? я пробовал 8битными, но там совсем абракадабра получается, хотя я мог и в программе накосячить...
предлагаете попробовать 32 битными словами переписать --- я попробую...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по SPI
СообщениеДобавлено: 2015-янв-28 13:07 
Не в сети

Зарегистрирован: 2009-май-29 16:09
Сообщения: 590
Откуда: АО "ПКК Миландр"
rubygoblin писал(а):
32 битными словами не пробовал там кажется верхняя часть слова отрезается из-за регистра данных SPI = 16бит и массив будет занимать в 2 раза больше места, а с 16 битными словами не получится из-за того что разбиения не происходит как для 32 битных слов? я пробовал 8битными, но там совсем абракадабра получается, хотя я мог и в программе накосячить...
предлагаете попробовать 32 битными словами переписать --- я попробую...

Попробуйте 32 битными (страшие будут урезаться) и количество слов в цикле всё-таки меньше сделать, равных размеру FIFO. Но если Вы запрашиваете 20 слов мастером SPI, то количество циклов DMA должно быть как-то кратно 20, я так думаю.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по SPI
СообщениеДобавлено: 2015-янв-28 14:10 
Не в сети

Зарегистрирован: 2014-ноя-17 08:47
Сообщения: 103
попробовал... все равно спереди добавляется 16 неизвестных бит потом идет нормальная посылка(которую я прописал в память) потом еще 3 слова 16бит неизвестных...
даже не знаю...
может на SPI в ведомом режиме пагубно влияет установленный в "0" чипселект?
а циклов и так 20... я на плате, которая выдает чипселект и клок синхронно меняю время отведенное под выдачу/прием данных
а Вы предложили 32битными словами писать это почему?
я еще попробую 8битами пересылать , но что-то сомневаюсь что получится... но попробовать стоит...
нет с 8 битами тоже последний передаваемый байт переносится в начало...
даже не знаю... жду дальнейших рекомендаций...


Последний раз редактировалось rubygoblin 2015-янв-28 14:31, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по SPI
СообщениеДобавлено: 2015-янв-28 14:27 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1116
Откуда: Тула
я немножко добавлю свои 5 копеек... В управляющей структуре есть src_size, есть и dst_size. Может вы dst_size не изменили и контроллер ДМА делает одно чтение 32 бит и две записи по 16?

_________________
сочувствующий…


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по SPI
СообщениеДобавлено: 2015-янв-28 14:34 
Не в сети

Зарегистрирован: 2014-ноя-17 08:47
Сообщения: 103
нет этого не может быть при перенастройке виртуального регистра я меняю сразу все поля отвечающие за инкремент адреса и размер данных
Размерность данных приемника
Примечание – Значение этого поля должно быть равно значению поля src_size.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по SPI
СообщениеДобавлено: 2015-янв-28 14:47 
Не в сети

Зарегистрирован: 2009-май-29 16:09
Сообщения: 590
Откуда: АО "ПКК Миландр"
rubygoblin писал(а):
попробовал... все равно спереди добавляется 16 неизвестных бит потом идет нормальная посылка(которую я прописал в память) потом еще 3 слова 16бит неизвестных...
даже не знаю...
может на SPI в ведомом режиме пагубно влияет установленный в "0" чипселект?
а циклов и так 20... я на плате, которая выдает чипселект и клок синхронно меняю время отведенное под выдачу/прием данных
а Вы предложили 32битными словами писать это почему?
я еще попробую 8битами пересылать , но что-то сомневаюсь что получится... но попробовать стоит...
нет с 8 битами тоже последний передаваемый байт переносится в начало...
даже не знаю... жду дальнейших рекомендаций...

SIZE_DMA_SPI1_TX_MASSIVE Вы не меняли?
Я предлагаю проанализировать следющую ифнормацию:
1. При SIZE_DMA_SPI1_TX_MASSIVE=4 у Вас всё работает.
2. • SSPTXDMASREQ – запрос передачи отдельного символа, инициируется модулем приемопередатчика. Сигнал переводится в активное состояние в случае, если буфер FIFO передатчика содержит по меньшей мере одну свободную ячейку;
• SSPTXDMABREQ – запрос блочного обмена данными, инициируется модулем приемопередатчика. Сигнал переводится в активное состояние в случае, если буфер FIFO передатчика содержит четыре или менее символов;
3. Если Вы хотите передать 20 слов по 16 разрядов, то на это требуется 5 циклов DMA c SIZE_DMA_SPI1_TX_MASSIVE=4.
4. Случайные данные, которые передаются по SPI могут попадать в FIFO только от DMA, а DMA передаёт их в FIFO только по сигналам SSPTXDMASREQ или SSPTXDMABREQ


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по SPI
СообщениеДобавлено: 2015-янв-28 14:59 
Не в сети

Зарегистрирован: 2014-ноя-17 08:47
Сообщения: 103
менял это значение зависит от SIZE_SPI1_AND_SPI2 изменяя это значение изменяется SIZE_DMA_SPI1_TX_MASSIVE поэтому точно менял...пробовал передавать 4 и 8 байтов в различных режимах 8, 16, 32 ошибка в первых двух случаях последний выдаваемый байт переезжает на первое место а в третьем сообщение набивается в начале и в конце недостоверными данными

ну тогда еще можно попробовать выровнять посылку до 4 и отключить единичные передачи так? не помогло...


Последний раз редактировалось rubygoblin 2015-янв-28 15:04, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по SPI
СообщениеДобавлено: 2015-янв-28 15:04 
Не в сети

Зарегистрирован: 2009-май-29 16:09
Сообщения: 590
Откуда: АО "ПКК Миландр"
rubygoblin писал(а):
менял это значение зависит от SIZE_SPI1_AND_SPI2 изменяя это значение изменяется SIZE_DMA_SPI1_TX_MASSIVE поэтому точно менял...пробовал передавать 4 и 8 байтов в различных режимах 8, 16, 32 ошибка в первых двух случаях последний выдаваемый байт переезжает на первое место а в третьем сообщение набивается в начале и в конце недостоверными данными

ну тогда еще можно попробовать выровнять посылку до 4 и отключить единичные передачи так?

То что посылку надо выравнивать с циклами DMA это скорее всего, единичные передачи также могут быть причиной случайных данных в SPI.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по SPI
СообщениеДобавлено: 2015-янв-28 15:21 
Не в сети

Зарегистрирован: 2014-ноя-17 08:47
Сообщения: 103
вот еще такая штука... я когда 1 раз столкнулся с этой проблемой подумал, тактовой частоты недостаточно для выдачи и 1 слово остается в фифо и при следующей передаче выдается как 1 ... в связи с этим добавил тактовой частоты на 1 слово итог слово перестало переноситься в начало и выдавалось в положенном месте, но все посылка сдвигалась на 1 слово в право и 1 словом становилось всегда 1 и тоже слово или 0x5555 или 0xAAAA это позволяло с учетом сдвинутого слова передавать 24 байта на 32 байтах посылка теряла стабильность и начинала постоянно переключаться добавление тактовой частоты ни к чему не приводило больше

и я так понял Вы считаете что проблема в ДМА? ну последние адреса я просчитывал и писал на них определенные значения... размер массива тоже считал в памяти запись значений по этим адресам тоже говорила что все правильно ну и количество передач учтено в макросе (итоговое значение = значение - 1) адреса источников и назначений в виртуальных структурах совпадает с тем что записано в программе... очень интересно получается... 9х и 1Т имеют одинаковое описание на ДМА(ну кроме того что 1Тработает с областью 0x20100000) на 9х все стабильно передается и принимается, а на 1Т возникают необъяснимые ошибки... непонятно...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 58 ]  На страницу 1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB