Тест связи по CAN

Создание проекта Vivado

Добавьте конфигурации параметров к существующей аппаратной платформе на основе схемы:

Ранее созданные проекты использовали PS UART0 для вывода отладочной информации. На отладочной плате также есть PL UART. Этот UART преобразуется в USB-интерфейс с помощью чипа USB-to-serial (CH340X), подключенного к выводам на стороне PL (BANK35). UART1 на стороне PS может быть выведен на эти два вывода на стороне PL через EMIO. В этот раз мы будем использовать этот последовательный порт для вывода отладочной информации.

CAN также выведен на выводы B35_IO0 и B35_IO25 на стороне PL через EMIO.

VeryCapture_20250619160554

 

VeryCapture_20250619160536

Схема UART1: UART1 выведен на выводы B35_L20_P и B35_L20_N на стороне PL через EMIO.

 

image-20250623154702402

VeryCapture_20250619164938

Интерфейс конфигурации:

VeryCapture_20250619160015

VeryCapture_20250619164637

На странице конфигурации тактовой частоты вы можете настроить тактовую частоту CAN. Эта частота понадобится позже для настройки скорости передачи данных CAN и точки выборки.

image-20250808161826231

Нажмите OK. Аналогично, щелкните правой кнопкой мыши по CAN_0 и UART_1_0, затем выберите 'Make External'. Программа автоматически сгенерирует внешние выводы, соответствующие интерфейсам CAN_0 и UART_1_0 в модуле верхнего уровня. Продолжайте выполнение последующих операций:

VeryCapture_20250619170853

Интерфейс конфигурации после завершения на основе схемы:

image-20250623154934543

image-20250623154914751

После синтеза, реализации и генерации битового потока экспортируйте новый файл .xsa.

VeryCapture_20250618121240

Создание проекта Vitis

Обновите проект платформы в Vitis: щелкните правой кнопкой мыши по созданному проекту платформы, выберите 'Update Hardware Specification' и укажите путь к файлу .xsa. Когда появится следующее диалоговое окно, нажмите OK, что будет означать успешное обновление.

VeryCapture_20250618121412

Поскольку мы будем использовать UART1 через EMIO для вывода отладочной информации, а платформа по умолчанию использует UART0, нам необходимо изменить некоторую информацию о платформе, а именно настройки BSP:

Аналогично, хотя существует два пакета поддержки платы (Board Support Packages), вы должны изменить тот, который показан ниже. Изменение другого не даст никакого эффекта. В конце нажмите OK.

Откройте Board Support Package -> Modify BSP Settings -> standalone и измените ps7_uart_0 на ps7_uart_1. Это назначит стандартный последовательный порт ввода/вывода на PS UART1.

VeryCapture_20250619170310

Реализация кода:

VeryCapture_20250619164453

Затем пересоберите проект платформы.

Далее создайте проект приложения. Единственное отличие заключается в выборе пустого файла .c при выборе шаблона.

Добавьте в проект исходный код из предоставленного нами примера. Вы также можете обратиться к встроенным тестовым проектам в Vitis. Типичный путь находится в каталоге установки Vitis: Xilinx\Vitis\2021.1\data\embeddedsw\XilinxProcessorIPLib\drivers.

Настройка скорости передачи и точки выборки CAN

Настройка скорости передачи данных CAN на ZYNQ7020 выполняется путем установки регистров контроллера CAN. В частности, вам необходимо рассчитать и установить значения для регистров CAN_BTR0 и CAN_BTR1, чтобы достичь желаемой скорости передачи и точки выборки.

Ниже приведены подробные шаги и объяснения:

Определение требуемой скорости передачи и точки выборки:

Во-первых, вам необходимо указать требуемую скорость передачи данных CAN, например, 500 кбит/с или 1 Мбит/с. В то же время вам также необходимо определить точку выборки, которую обычно рекомендуется устанавливать около 85%.

Что касается настройки точки выборки, рекомендации от CiA (CAN in Automation) следующие: (1) Обычно настраивайте ее в диапазоне от 75% до 80%. (2) Оптимально выбирать положение точки выборки около 85%. (3) Скорость > 800K: 75%; Скорость > 500K: 80%; Скорость <= 500K: 87.5%

Настройки скорости передачи и точки выборки требуют расчетов на основе приведенной ниже диаграммы. image-20250714100140699

Sync Segment: Сегмент синхронизации (sync_seg) Propagation Segment: Сегмент времени распространения (prop_seg) Phase Segment 1: Сегмент фазового буфера 1 (phase_seg1) Phase Segment 2: Сегмент фазового буфера 2 (phase_seg2)

Расчет значений для регистров BTR0 и BTR1:

Согласно техническому руководству контроллера CAN, взаимосвязь между скоростью передачи, точкой выборки и регистрами BTR0 и BTR1 выглядит следующим образом:

Настройка регистров контроллера CAN:

В контроллере CAN ZYNQ7020 найдите соответствующие регистры и запишите рассчитанные значения в CAN_BTR0 и CAN_BTR1.

Запуск контроллера CAN:

После завершения настройки регистров необходимо запустить контроллер CAN, чтобы перевести его в рабочее состояние.

Компиляция и отладка

Следуйте шагам компиляции и отладки из документации по IIC.

Обратите внимание, что на этот раз USB-последовательный порт, подключенный к компьютеру, должен быть PL_UART на плате разработки.

Тестирование CAN-связи обычно требует как минимум двух независимых CAN-каналов: один в качестве передатчика (Tx), а другой — в качестве приемника (Rx), чтобы проверить полную функциональность передачи и приема данных. Текущая плата разработки имеет только один CAN-канал, поэтому она не может напрямую выполнять тест с самопередачей и самоприемом. Требуется отдельное CAN-устройство.

Если у вас нет отдельного CAN-устройства, вы можете выполнить только петлевой тест:

image-20250707174425272

Результаты отладки в петлевом режиме выглядят следующим образом:

image-20250707180331312

Если у вас есть другое CAN-устройство, вы можете выполнить тест в нормальном режиме.

Если вы используете две наши платы разработки на одном компьютере и отлаживаете CAN-связь на обеих платах через их JTAG-порты с помощью двух отдельных экземпляров Vitis, вам сначала необходимо настроить JTAG-порты.

Одновременная отладка двух плат разработки на одном компьютере

По умолчанию порт JTAG-эмулятора — 3121. Если два эмулятора должны быть подключены к соответствующим платам разработки, вам нужно назначить разные порты для каждого эмулятора.

Затем в Vitis настройте соответствующие проекты на использование соответствующих портов.

Image

Image

При отладке выберите соответствующую портовую службу.