реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Вопрос по работе SPI, Прием по SPI с помехами
dmitry_michalych
сообщение Apr 7 2010, 19:07
Сообщение #1





Группа: Участник
Сообщений: 13
Регистрация: 6-10-09
Из: Питер
Пользователь №: 52 783



Всем доброго времени суток.
Исходные данные - SPI в ATMeg'e стоит в режиме slave, примерно раз в 10-15 секунд принимается посылка из 7 байт, которые раз от раза не меняются. CPOL=0, CPHA=1. Если в промежутках "тишины" на входе CLK проскочит короткий помеховый импульс, SPI воспримет его как приход первого бита? И в следующем пришедшем байте потеряется последний бит?
Как с этим бороться?
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
_dem
сообщение Apr 7 2010, 19:15
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 2-02-07
Из: CN, Ukraine
Пользователь №: 24 970



Бороться CS-ом.
Go to the top of the page
 
+Quote Post
dmitry_michalych
сообщение Apr 7 2010, 19:21
Сообщение #3





Группа: Участник
Сообщений: 13
Регистрация: 6-10-09
Из: Питер
Пользователь №: 52 783



Вы имели ввиду SS? Он увы, отсутствует. На землю посажен. Тот кто мастер, шлет данные и формирует клок. И если ему взбредет между посылками дернуть клок хоть разок, все последующие принятые данные идут в мусор. Посему я и хотел уточнить, есть ли у SPI какая-я то временная защита типа тайм-аутов, или все плохо, так как я склонен сейчас думать?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 7 2010, 19:32
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(dmitry_michalych @ Apr 7 2010, 21:36) *
Посему я и хотел уточнить, есть ли у SPI какая-я то временная защита типа тайм-аутов, или все плохо, так как я склонен сейчас думать?

А причем тут собственно SPI? Вы подключили три провода выкинув CS выступающий в качестве фреймового сигнала к некоторому устройству. Пока контролер ими НЕ управляет извне прибегает "помеха". Теперь Вы спрашиваете о том, нет-ли в этих трех продах интеллекта? В проводах интеллекта нет. Как способно устройство приемник выделять фреймы без CS - вопрос к устройству.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
rezident
сообщение Apr 7 2010, 19:52
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(dmitry_michalych @ Apr 8 2010, 01:22) *
Как с этим бороться?
Раз нет отдельного сигнала фреймовой синхронизации, то "боритесь" с помощью "временной" синхронизации. То бишь по истечение паузы определенной длительности во время которой не было приема, реинициализируйте модуль SPI, сбрасывая его логику.
Go to the top of the page
 
+Quote Post
dmitry_michalych
сообщение Apr 7 2010, 19:58
Сообщение #6





Группа: Участник
Сообщений: 13
Регистрация: 6-10-09
Из: Питер
Пользователь №: 52 783



Да, так и придется. Спасибо!
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 7 2010, 20:00
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(rezident @ Apr 7 2010, 22:07) *
реинициализируйте модуль SPI, сбрасывая его логику.

и если "повезет" вместе с идущим правильным фреймом sad.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
dmitry_michalych
сообщение Apr 7 2010, 20:17
Сообщение #8





Группа: Участник
Сообщений: 13
Регистрация: 6-10-09
Из: Питер
Пользователь №: 52 783



Тут ведь как? Или повезет, или не повезет. Ну нет у меня SS, и помехи лезут. Собственно, если разок не повезет, то и не страшно. Все, вопрос снят, всем сенкс!
Go to the top of the page
 
+Quote Post
rezident
сообщение Apr 7 2010, 20:41
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(zltigo @ Apr 8 2010, 02:15) *
и если "повезет" вместе с идущим правильным фреймом sad.gif
Если частота тактирования SPI не 100Гц а гораздо выше, то учитывая что
Цитата(dmitry_michalych @ Apr 8 2010, 01:22) *
примерно раз в 10-15 секунд принимается посылка из 7 байт
ничего теряться не должно. Конечно желательно, чтобы мастер тоже выдерживал оговоренную паузу между передачами.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 7 2010, 20:44
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(rezident @ Apr 7 2010, 22:56) *
тоже выдерживал оговоренную паузу между передачами.

И как часто сбрасывать? каждые 9,999 или 14,999 секунд?
Тогда уж пусть гонит периодически "пустой" байт заполнитель и байт "начало фрейма" в начале оного. Получение любого байта не заполнителя и не начала фрейма - сброс SPI


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
dmitry_michalych
сообщение Apr 7 2010, 20:50
Сообщение #11





Группа: Участник
Сообщений: 13
Регистрация: 6-10-09
Из: Питер
Пользователь №: 52 783



на мастера мне никак не повлиять. Думаю SCK завести на INT и отсчитывать время между фронтами клока, скорость передачи известна, благо контроллеру кроме как транслировать делать больше нечего
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 7 2010, 20:59
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(dmitry_michalych @ Apr 7 2010, 23:05) *
Думаю SCK завести на INT и..

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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
dmitry_michalych
сообщение Apr 7 2010, 21:09
Сообщение #13





Группа: Участник
Сообщений: 13
Регистрация: 6-10-09
Из: Питер
Пользователь №: 52 783



согласен
Go to the top of the page
 
+Quote Post
rezident
сообщение Apr 7 2010, 21:10
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(zltigo @ Apr 8 2010, 02:59) *
Тогда уж пусть гонит периодически "пустой" байт заполнитель и байт "начало фрейма" в начале оного. Получение любого байта не заполнителя и не начала фрейма - сброс SPI
Ну топикстартер умолчал, используется ли какой-то протокол с контролем CRC пакета или передаются 7 байт "чистой" информации? И что должно происходить в случае обнаружения ошибки? Весь фрейм в "мусорку" или передача должна повториться?
Go to the top of the page
 
+Quote Post
dmitry_michalych
сообщение Apr 7 2010, 21:22
Сообщение #15





Группа: Участник
Сообщений: 13
Регистрация: 6-10-09
Из: Питер
Пользователь №: 52 783



Про crc это уже другое. Собственно интересовало именно то, что если в качестве клока приходит ахинея из импульсов разной длительности, SPI-ю все равно, на восьмом спаде скажет, что у него байт готов. Думал, может там есть какие-то механизмы, как у com-порта, типа щучить отклонения в скорости передачи, тайм-ауты..
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 17:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01512 секунд с 7
ELECTRONIX ©2004-2016