CAN и ETHERNET(К1921ВК01Т)

32-разрядные микроконтроллеры разработки АО "НИИЭТ"

Модераторы: ea, dav, bkolbov, Alis, pip, _sva_

serg_vega
Сообщения: 96
Зарегистрирован: 20 июл 2020, 15:50
Предприятие: АО "ВНИИ "Вега"

Re: CAN и ETHERNET(К1921ВК01Т)

Сообщение serg_vega »

Вот у меня возникает ALERT и "аппаратная установка бита INIT" а как узнать по какой причине это происходит?
dav
Сообщения: 208
Зарегистрирован: 14 дек 2015, 09:21
Предприятие: АО НИИЭТ
Откуда: АО НИИЭТ, Воронеж

Re: CAN и ETHERNET(К1921ВК01Т)

Сообщение dav »

serg_vega писал(а): 30 июл 2021, 10:41 Чем дальше в лес, тем толще партизаны... Проверил "расчет" скорости для 256КБит/сек от НИИЭТ. Да какой первокурсник его делал?!!! :shock:
1/256000= 3.9 мкс, а не 4 мкс!!!! Скорость в примере будет 250КБит/сек а не заявленные 256!!! Сколько байт в одном КБайте: 1000 или 1024?
Доброго времени суток!
В примере приведен расчет для скорости обмена 250Кбит/с (250 000 бит/сек).
dav
Сообщения: 208
Зарегистрирован: 14 дек 2015, 09:21
Предприятие: АО НИИЭТ
Откуда: АО НИИЭТ, Воронеж

Re: CAN и ETHERNET(К1921ВК01Т)

Сообщение dav »

serg_vega писал(а): 30 июл 2021, 12:39 Вот у меня возникает ALERT и "аппаратная установка бита INIT" а как узнать по какой причине это происходит?
Бит INIT автоматически устанавливается, если узел переходит в состояние «отключен от шины».
В состоянии «отключен от шины» сбрасывается счетчик ошибок.
ALERT прерывание, если разрешено, может быть сформировано, в том числе, и аппаратной установкой бита INIT.
serg_vega
Сообщения: 96
Зарегистрирован: 20 июл 2020, 15:50
Предприятие: АО "ВНИИ "Вега"

Re: CAN и ETHERNET(К1921ВК01Т)

Сообщение serg_vega »

dav писал(а): 02 авг 2021, 15:45
serg_vega писал(а): 30 июл 2021, 12:39 Вот у меня возникает ALERT и "аппаратная установка бита INIT" а как узнать по какой причине это происходит?
Бит INIT автоматически устанавливается, если узел переходит в состояние «отключен от шины».
В состоянии «отключен от шины» сбрасывается счетчик ошибок.
ALERT прерывание, если разрешено, может быть сформировано, в том числе, и аппаратной установкой бита INIT.
И как все вышесказанное использовать? Допустим я сделал прерывание по ALERT, счетчики ошибок уже будут сброшены. Остается LEC? В оговоренном сегодня случае (несовпадение скоростей передачи), а именно отсутствие подтверждений приема у меня LEC=b101 (5) Как это интерпретировать?
dav
Сообщения: 208
Зарегистрирован: 14 дек 2015, 09:21
Предприятие: АО НИИЭТ
Откуда: АО НИИЭТ, Воронеж

Re: CAN и ETHERNET(К1921ВК01Т)

Сообщение dav »

serg_vega писал(а): 02 авг 2021, 15:54
dav писал(а): 02 авг 2021, 15:45
serg_vega писал(а): 30 июл 2021, 12:39 Вот у меня возникает ALERT и "аппаратная установка бита INIT" а как узнать по какой причине это происходит?
Бит INIT автоматически устанавливается, если узел переходит в состояние «отключен от шины».
В состоянии «отключен от шины» сбрасывается счетчик ошибок.
ALERT прерывание, если разрешено, может быть сформировано, в том числе, и аппаратной установкой бита INIT.
И как все вышесказанное использовать? Допустим я сделал прерывание по ALERT, счетчики ошибок уже будут сброшены. Остается LEC? В оговоренном сегодня случае (несовпадение скоростей передачи), а именно отсутствие подтверждений приема у меня LEC=b101 (5) Как это интерпретировать?
В руководстве пользователя на стр. 261 приведено описание значений битового поля LEC. Для LEC=b101:
Разрядная ошибка или ошибка бита 0 (BIT 0 ERROR).
Ошибка возникает в случаях:
- во время передачи сообщения (или бита подтверждения, флага активной ошибки, флага перезагрузки), узел передает доминантный бит «0», но на шине обнаруживается рецессивный «1»;
- во время выхода из состояния «отключен от шины» при каждом обнаружении последовательности из 11 рецессивных битов. В этом случае, ЦП может использовать код 101 для отслеживания длительного простоя шины
Аватара пользователя
wertaswood
Сообщения: 5
Зарегистрирован: 06 сен 2021, 12:30
Предприятие: SELFCOMPANY

Re: CAN и ETHERNET(К1921ВК01Т)

Сообщение wertaswood »

Здравствуйте!
В ходе работы с контроллером К1921ВК01Т (а именно с его Ethernet-частью) возник вопрос. У регистра 2 конфигурации MAC есть поле CRCENABLE(4 бит), которое отвечает за добавление CRC в Frame.
Вопрос первый: работает ли у кого-нибудь этот бит соответствующим образом?
Вопрос второй: если вставка CRC работает, можно ли получить пример, чтобы понять в чём проблема?
Уж очень не хочется терять такой хороший функционал. Заранее спасибо!
dav
Сообщения: 208
Зарегистрирован: 14 дек 2015, 09:21
Предприятие: АО НИИЭТ
Откуда: АО НИИЭТ, Воронеж

Re: CAN и ETHERNET(К1921ВК01Т)

Сообщение dav »

wertaswood писал(а): 25 окт 2021, 14:21 Здравствуйте!
В ходе работы с контроллером К1921ВК01Т (а именно с его Ethernet-частью) возник вопрос. У регистра 2 конфигурации MAC есть поле CRCENABLE(4 бит), которое отвечает за добавление CRC в Frame.
Вопрос первый: работает ли у кого-нибудь этот бит соответствующим образом?
Вопрос второй: если вставка CRC работает, можно ли получить пример, чтобы понять в чём проблема?
Уж очень не хочется терять такой хороший функционал. Заранее спасибо!
Доброго времени суток!
Мы в своем примере реализации простого веб-сервера (пример lwip_httpd из репозитория K1921VKx_SDK) использовали режим дополнения до минимальной длины фрейма 60 байт + 4 байта CRC (так называемый Padding). Пример настройки регистра MAC2:

Код: Выделить всё

    NT_ETHERNET->MAC2 |= (ETHERNET_MAC2_CRCENABLE_Msk |
                          ETHERNET_MAC2_PADENABLE_Msk);
Аватара пользователя
wertaswood
Сообщения: 5
Зарегистрирован: 06 сен 2021, 12:30
Предприятие: SELFCOMPANY

Re: CAN и ETHERNET(К1921ВК01Т)

Сообщение wertaswood »

dav писал(а): 28 окт 2021, 16:56 Доброго времени суток!
Мы в своем примере реализации простого веб-сервера (пример lwip_httpd из репозитория K1921VKx_SDK) использовали режим дополнения до минимальной длины фрейма 60 байт + 4 байта CRC (так называемый Padding). Пример настройки регистра MAC2:

Код: Выделить всё

    NT_ETHERNET->MAC2 |= (ETHERNET_MAC2_CRCENABLE_Msk |
                          ETHERNET_MAC2_PADENABLE_Msk);
Спасибо за ответ! Посмотрели проект из репозитория, использовали его для пересылки UDP-пакетов в сетевой порт ПК. Отлавливали всё с помощью Wireshark и анализировали пакеты. Пришли к выводу, что контрольная сумма считается как с CRCENABLE = 1, так и с CRCENABLE = 0. И делает она это программно.

Соответственно, если задать в файле lwipopts.h значение переменной CHECKSUM_GEN_IP равное 0, то контрольная сумма не считается (равна нулю) при любом значении CRCENABLE.

Дело в том, что при прочтении документации сложилось впечатление, что контрольная сумма с установкой этого бита считается аппаратно, а не с помощью функций в библиотеке lwip. Наверное, мы ошибались.

Следовательно, вопросы:
1) отвечает ли бит CRCENABLE за аппаратное вычисление контрольной суммы?
2) если нет, то в чём его предназначение?
dav
Сообщения: 208
Зарегистрирован: 14 дек 2015, 09:21
Предприятие: АО НИИЭТ
Откуда: АО НИИЭТ, Воронеж

Re: CAN и ETHERNET(К1921ВК01Т)

Сообщение dav »

wertaswood писал(а): 29 окт 2021, 17:42 Следовательно, вопросы:
1) отвечает ли бит CRCENABLE за аппаратное вычисление контрольной суммы?
2) если нет, то в чём его предназначение?
Доброго времени суток!
Бит CRCENABLE отвечает за аппаратное вычисление контрольной суммы в структуре пакета Ethernet, но не в структурах протоколов Ethernet.
eth_frame.JPG
eth_frame.JPG (54.94 КБ) 3813 просмотров
Соответственно, аппаратно не реализована возможность вычисления контрольных сумм протоколов Ethernet (TCP/IP, UDP и др.)
Аватара пользователя
wertaswood
Сообщения: 5
Зарегистрирован: 06 сен 2021, 12:30
Предприятие: SELFCOMPANY

Re: CAN и ETHERNET(К1921ВК01Т)

Сообщение wertaswood »

dav писал(а): 01 ноя 2021, 10:32 Доброго времени суток!
Бит CRCENABLE отвечает за аппаратное вычисление контрольной суммы в структуре пакета Ethernet, но не в структурах протоколов Ethernet.
eth_frame.JPG
Соответственно, аппаратно не реализована возможность вычисления контрольных сумм протоколов Ethernet (TCP/IP, UDP и др.)
Всё понял, спасибо!
А теперь, когда Вы разъяснили мне о функционале этого бита, появился вопрос для "общего развития".
Для чего можно применять отключение контрольной суммы в Frame'е Ethernet'a? Возможно, я многое упускаю, не используя эту функцию.
На ум приходит только попытка получить хоть какие-то биты из плохого канала и создания какого-то форка Ethernet'a (или вообще чего-то иного на его базе).
Ответить

Вернуться в «32-разрядные микроконтроллеры»