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

 
 
> Настройка скорости
Санёк76
сообщение Mar 12 2011, 21:11
Сообщение #1





Группа: Новичок
Сообщений: 7
Регистрация: 6-03-11
Пользователь №: 63 428



Приветствую

для организации CAN шины между AVR-контроллерами я использую связку MCP2510 + MCP2551.

Для изменения сокорости передачи бита можно изменять временную кванту и длинну сегментов (в этих квантах).
Можно ли менять скорость измененением либо только ванты либо только длин сегментов от 125Кбит до 1Мбит при 16МГц тактовой частоты?
Достаточно ли 0,5 мкс, чтобы сигнал распространился по сети (витая пара, 2-3 метра)?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ldimitri
сообщение Mar 18 2011, 14:08
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 13-11-08
Пользователь №: 41 594



Добрый день!

RX0OVF - бит переполнения приемного буфера 0. Если вы не прочитали сообщение из буфера прежде чем пришло следующее (или при чтении забыли сбросить флаг прерывания RX0IF) - устанавливается в 1.
RX1OVF - аналогично, но для приемного буфера 1.


Если счетчик ошибок увеличивается :
Рекомендация 1 - Проверить каналы передачи данных. Самая распространенная проблема. Могут быть перепутаны выводы, могут не стоять терминаторы (на коротких линия отсутствие терминаторов незаметно, хотя и были прецеденты).
Рекомендация 2 - Проверить, все ли устройства работают на одинаковой скорости. Если нет - исправить. Если да - исключать устройства из шины по одному (пускать кабель в обход устройства) и смотреть, из-за какого устройства был весь сыр-бор.

Если MCP перешел в режим bus-off - переинициализируйте его с нуля. Если такое происходит постоянно - вероятно у вас не все в порядке с каналом передачи.


TQ - единичный временной отрезок. Каждый бит на шине формируется из некоторого количества этих временных отрезков (NTQ), обычно 8 - 20. Количество выбирается произвольно (обычно 8, 10, 16, 20 - зависит от того, на какое число частота кварца хорошо делится).
Время этого отрезка определяется временем передачи одного бита, деленным на общее количество TQ.

Бит на шине состоит из 4 сегментов: сегмент синхронизации, сегмент распространения, фазовый сегмент 1, фазовый сегмент 2.
Сумма длин всех этих сегментов должна равняться NTQ.
Все сегменты, кроме сегмента синхронизации можно установить программно - в регистрах CNF2 и CNF3 (см. даташит )

Для скорости 250К время передачи одного бита 1 / 250000 = 0.000004с (4мкс).
Для того, чтобы длина 1 бита на шине соответствовала этому времени, необходимо установить делитель(BRP) в регистре CNF1.
Этот делитель вычисляется по формуле:
BRP = (( FOSC / ( 2 * NTQ * BITRATE )) - 1),
где
NTQ - количество TQ,
BITRATE - скорость в бит/с ( в вашем случае 250000)
FOSC - вы и так поняли wink.gif


Автонастройка скорости по CAN возможна только программным способом (простой перебор и проверка на наличие сообщений).
Не рекомендую - вещь бесполезная и ненужная, лучше согласовать с производителями других узлов в CAN сети рабочую скорость.

Для конфигурации на скорость 250КБит/с:
__mcp_write(CNF1, BRP_VAL(250000));
__mcp_write(CNF2, 0x90);
__mcp_write(CNF3, 0x02);

И напоследок ссылочка: Статья о битовой синхронизации. Там на русском языке описывается вся необходимая информация для того, чтобы вы в любое время дня и ночи смогли настроить контроллер на нужную вам скорость. sm.gif

Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 27th June 2025 - 08:42
Рейтинг@Mail.ru


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