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

 
 
 
Reply to this topicStart new topic
> AM3517: странности с шиной CAN на 10k
griabig
сообщение May 31 2013, 07:03
Сообщение #1


Участник
*

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



Добрый день,

имеется плата на базе TI AM3517. Обнаружилась весьма странная проблема с работой шины CAN на скорости 10k. На всех остальных стандартных скоростях (20k - 1M) никаких проблем нет.

Проблема заключается в следующем: похоже, что некорректно работает bit-stuffing (вставки дополнительного бита противоположного значения для автосинхронизации потока) при передаче более четырех нулей подряд. Вставляемый единичный бит имеет недостаточную длительность и в результате чего вся посылка прерывается по ошибке на линии. При передаче более четырех единиц, когда тоже необходим bit-stuffing ) таких проблем нет.

Все осциллограммы сняты для скорости 10k и отличаются лишь передаваемыми данными
1) Передаем пакет, в котором нет длительных посылок из одинаковых бит и поэтому нет необходимости в дополнительных битах синхронизации. Пакет успешно принимается.

Прикрепленное изображение



2) Передаем пакет, в котором передается пять единиц, и вставляется дополнительный нулевой бит синхронизации. Длительность пяти единиц корректная - 500 мкс. В этом случае пакет также передается успешно.

Код
$ cansend can0 -i 0x23F -v 0xA5 0xA5 0x55 0x55


Прикрепленное изображение


3) Передаем пакет, в котором передается пять нулей, и вставляется дополнительный единичный бит синхронизации. Длительность пяти нулей в этом случае почему-то получается некорректной (460 мкс вместо 500 мкс). В этом случае передача сразу прерывается, после этого осуществляется повторная передача, которая также обрывается.

Код
$ cansend can0 -i 0x2A0 -v 0xA5 0xA5 0x55 0x55


Прикрепленное изображение


4) Избежать обрыва передачи можно, если сместить sample point ближе к началу импульса с 0.85 to 0.6. Тогда весь пакет отправляется. Однако пять нулевых битов все равно имеют неправильную длительность 460 мкс, и поэтому этот битый пакет не принимается другой стороной.

Прикрепленное изображение


.

Сообщение отредактировал griabig - May 31 2013, 07:05
Go to the top of the page
 
+Quote Post
_3m
сообщение May 31 2013, 07:33
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960



Позиции следующих битов при сбое съезжают или остаются на месте ?
Еще: вы где смотрите - непосредственно на шине кан или на входе трансивера ?
Я скорость ниже 50к не применяю так как большая часть приемопередатчиков имеет фичу "dominant time-out". А 82c250 не совместим с низковольтной логикой.
Go to the top of the page
 
+Quote Post
griabig
сообщение May 31 2013, 08:58
Сообщение #3


Участник
*

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



Цитата(_3m @ May 31 2013, 11:33) *
Позиции следующих битов при сбое съезжают или остаются на месте ?
Еще: вы где смотрите - непосредственно на шине кан или на входе трансивера ?
Я скорость ниже 50к не применяю так как большая часть приемопередатчиков имеет фичу "dominant time-out". А 82c250 не совместим с низковольтной логикой.

Выход смотел непосредственно на шине между CAN-High и CAN-Low. Позиции следующих битов не съезжают. Действительно, похоже, что проблема именно из-за dominant time-out приемо-передатчика. Огромное спасибо.
А есть какие-нибудь передачики с несколько большим интервалом diminant time-out, подходящие для применения с низковольтной логикой?

Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 6th July 2025 - 09:09
Рейтинг@Mail.ru


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