Из справочника §30.7.7 Битовая синхронизация: ![enter image description here](https://i.stack.imgur.com/3z5wW.png)
Изменение порядка: BRP = (F PCLK / (BaudRate x (TS1 + TS2 + 3))) - 1
Не все значения TS1 и TS2 приводят к целочисленному значению для приведенной выше формулы, поэтому не будут генерировать правильный бод ставка. Кроме того, вы должны учитывать точку выборки - различные протоколы приложений CAN имеют определенные c предпочтительные рекомендации точки выборки, но в любом случае они должны составлять от 50% до 90%. Точка выборки в процентах:
1 - ((TS2 + 1) / (TS2 + TS1 + 3)) x 100%
Таким образом, существует несколько Решения относительно значений TS1 / TS2, но каждое из них дает отдельную точку выборки, поэтому вам нужно выбрать значения, которые:
- Генерируют ровно 500 Кбит / с (NBT = 2 микросекунды).
- Имеет точку выборки как можно ближе к предпочтительному значению в диапазоне от 50 до 90%.
Возможно, это не просто, и без знания вашего F PCLK нет можно посоветовать конкретно. Я создал электронную таблицу, которая генерирует все допустимые возможности с соответствующей точкой выборки.
Пример для F PCLK = 42 МГц: ![enter image description here](https://i.stack.imgur.com/XIx7i.png)
На основании вышеизложенного TS1 = 10, TS2 = 1, BRP = 5 , приведет к 500 Кбит / с с точкой выборки 85,7% - близко к рекомендации CANopen 87,5%.
Эти значения согласуются с калькулятором на http://www.bittiming.can-wiki.info/
Отметив, что значения в таблице являются значениями регистра + 1.