Как рассчитать коэффициенты 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 Мб/с.
Таким образом, необходимо подбирать значения делителя и сегментов согласно частоте МК.