пятница, 1 декабря 2017 г.

CAN контроллер в STM32 режима DMA похоже не имеет,
а приём по прерыванию имеет особенность - после обрыва и восстановления линии он возвращается в режим готовности из режима приёма без срабатывания прерывания завершения приёма.
Примерный костыль:
if (HAL_CAN_GetState(&hcan)==HAL_CAN_STATE_READY) { HAL_CAN_Receive_IT(&hcan, CAN_FIFO0); }
пока всё работает нормально HAL_CAN_STATE_BUSY_RX0, а вот после обрыва линии опять "взводит" приёмник....
p/s бит ABOM желательно установить....

Комментариев нет :

Отправить комментарий