Я не использовал контроллеры PIC CAN, но в целом это выглядит примерно так:
Фаза seg 2 по отношению к общему количеству tq дает местоположение точки выборки.Независимо от того, какое приложение CAN вы используете, я бы посоветовал использовать стандартные рекомендации CANopen, для которой выборочная точка составляет 87,5%, с приемлемыми местоположениями в диапазоне от 85% до 90% (это более снисходительно при самых высоких скоростях передачи).
То есть 1 - тк PHSEG2 / тк всего должно быть около 87,5%.В вашем случае 1 - 4/15 = 0.73
.Вам нужно исправить это, увеличив размер других сегментов или уменьшив размер фазы seg 2. Это всегда немного проб и ошибок.
Что касается скорости передачи данных, вы, вероятно, получите некоторую формулу в соответствии со строкамииз:
clock / (tq total * baudrate) = prescaler
Ваш конкретный CAN-контроллер даст точную формулу для этого конкретного оборудования.Имейте в виду, что источник синхронизации, это необработанный генератор, это системные часы, это что-то еще?(PIC печально известны тем, что используют различные системные делители тактовых импульсов, и в этом случае вам может потребоваться регулировка PLL.)
SJW не влияет на скорость передачи данных.Это разрешенная ширина повторной синхронизации, используемая для несоответствий скорости передачи данных, в основном, при более высоких скоростях передачи данных.На скорости 250 кбит / с SJW = 1 должно работать нормально.