Это старая версия документа!
В STM32CubeIDE открыть проект.
Для сборки и прошивки используется конфигурация CAN_STm32F103C6T6 Debug
Нажать, подождать, готово!
Отправка сообщений происходит в бесконечном цикле, находящемся в функции main.
Генерация сообщений происходит следующим образом:
rand генерируется число n - количество шестнадцатеричных (4-битных) чисел, после чего вычисляется b - количество байт данных, которое будет отправлено (TxHeader.DLC).n 4-битных чисел и заполняется буфер данных.CRC-11 вычисляется заголовок (TxHeader.StdId), по которому можно проверить целостность данных при приёме.
Приём происходит в функции HAL_CAN_RxFifo0MsgPendingCallback.
По полученным данным вычисляется идентификатор (по тому же алгоритму CRC-11), который сравнивается с заголовком.
Во время работы программы считается общее количество отправленных/принятых сообщений, а также считаются ошибки.
Каждый раз при возникновении ошибки (будь то несоответствие чексуммы данных, или при аппаратных ошибках) все эти данные отправляются по UART.
Для данного проекта используются следующие пины на микроконтроллере:
Для подключения из консоли можно использовать следующую команду:
picocom -b 115200 <port>
Так выглядит вывод ошибок:
RX_CNT и TX_CNT - счётчики принятых и отправленных сообщений.RX_ERRORS и TX_ERRORS - счётчики ошибок при принятии и отправке сообщений.HARD_ERRORS - аппаратные ошибки.