Тему Can в STM32F103RBT6 закрыли, открою новую.
Чип STM32F105, использую библиотеку от st (но это не важно).
После завершенияинициализации снимаем бит CAN_MCR_INRQ и ожидаем подтверждение CAN_MSR_INAK которое выдается когда шина перешла в Bus Idle. В моем устройстве в момент инициализации кан состояние шины может быть произвольным. Из-за этого инициализация завершается с ошибкой таймаута если шина в момент инициализации находится в доминантном состоянии. Инициализация выполняются по команде снаружи которая может поступить когда угодно. Не исполнить команду мое устройство не может.
Как быть ?
В связи с этим: можно ли "на ходу" изменять биты SILM и LBKM чтобы инициализировать кан в режиме Hot Selftest и потом уже настроенный вводить в работу? Т.е так: Normal->Hot Selftest->Init->Normal
В ДШ пишут что CAN_BTR следует менять только в режиме инициализации, но это скорее относится к настройкам битрейта.