28551

Как рассчитать коэффициенты BITTMNG для CAN в МК К1986ВЕ?


Как рассчитать коэффициенты BITTMNG для CAN?

Все устройства CAN должны работать на одной скорости. Стандарт сети CAN не регламентирует физический уровень, поэтому сигнал от устройств на шине может приходить в разные моменты времени, в связи с чем, в каждом CAN-контроллере имеется блок цифровой фазовой автоподстройки. Этот блок разбивает битовый интервал на сегменты, которые состоят из квантов времени TQ (битовый интервал - сумма всех сегментов, по стандарту от 8 TQ до 25 TQ). Регистр CAN_BITTMNG как раз и позволяет задать значения этим сегментам в квантах времени, помимо задания делителя и режима выборки, и позволяет не только синхронизировать все устройства на шине, но и внести необходимые данные для задания определенной скорости работы.

Общая формула для скорости работы CAN следующая:

S = HCLK/(N*(DIV+1)),
где HCLK - частота работы МК,
N - сумма всех сегментов в квантах времени, 
DIV - делитель, задающийся также в регистре CAN_BITTMNG.

Пример: Если необходимо установить скорость работы в 1 Мб/с, то нужно внести следующие значения в регистр CAN_BITTMNG, например, для частоты МК в 80 МГц:

MDR_CAN1→BITTMNG = (7 « 0) Делитель тактовой частоты (8 – 1) | (1 « 16) Длительность сегмента распространения (2 TQ)

Сумма всех сегментов равна 10 TQ и удовлетворяет требованиям стандарта, а делитель задали равным 7. Тогда S = 80 МГц/(10*(7+1)) = 1 Мб/с. 

Таким образом, необходимо подбирать значения делителя и сегментов согласно частоте МК.

Документация

Теги

Был ли ответ полезным?