좋은 하루 나는 STM32F746에 STM32F407 전환 할 수 있도록 노력 해왔다STM32F746 CAN 초기화 시간 제한
모든. 내가 겪었던 문제는 ST HAL 라이브러리를 사용하여 CAN을 초기화하는 것이 었습니다. 코드는 MX Cube (4.16)에서 생성되었습니다.
Nucleo-144 STM32F746을 사용하여 디버깅하는 동안 초기화 코드 (MX_CAN1_Init())를 지나칠 수 있었지만 디버깅에서 uLink Pro를 사용하는 프로덕션 시스템에서는 사용할 수 없었습니다. CAN 주변 장치 (MSR INAK 비트가 지워지지 않음)를 기다리는 시간이 초과됩니다.
CAN 핀이 연결되어 있지 않습니다. 즉, 떠있었습니다.
일반적으로 CAN Rx 핀은 CAN 트랜시버에 의해 올바른 유휴 레벨로 구동됩니다. 이 선들에 부정확 한 극성의 풀 저항을 배치하면 전체 버스가 다운됩니다. 모든 견인 저항기를 사용하지 않는 것이 가장 좋습니다. – Lundin
@Lundin 풀 업 저항을 사용하면 고점이 "열성"이므로 버스에 부정적인 영향을주지 않아야합니다. 그렇습니다. CAN 트랜시버는 코드를 올바르게 풀어야하지만, CAN 트랜시버를 배선하지 않아도 RXD 핀을 끌어 올리면 CAN 모듈이 초기화되지 않습니다. 나는 내가 송수신기를 연결하지 않았다고 언급했다. – Flip
CAN 트랜시버가 없으면 신호가 MCU를 떠나지 않는 "루프백"모드로 실행됩니다. 개발 단계에서 그러한 일들을 주변에서 돌보는 것이 단지 해로울 것이라는 것을 깨달은 이후의 나이가되었습니다. 가능한 한 조기에 CAN 리스너 어댑터와 같은 트랜시버 및 다른 노드를 얻는 것이 좋습니다. 실제 조건으로 테스트하지 않아서 발생하는 고유 한 동작을 디버깅하는 것과 비교할 때 많은 수정 작업이 필요하지 않습니다. 가능한 경우 시뮬레이터는 피해야합니다. – Lundin