STM32F4 CAN 필터 설정을 정리한 포스트가 있는데, 이 글에서는 FDCAN 필터 설정이 기존 CAN과 약간 차이가 있어 정리해둔다. STM32 CAN 32비트 멀티 필터 설정 J1939 프로토콜의 CAN 데이터를 수신하여 처리하려면 CAN 통신속도 250kbps, 샘플포인트 87%로 설정해야 한다. 내부클럭(HSI)을 사용할 경우 MCU의 상태에 따라 클럭이 틀어져서 CAN 데이터를 수신 못하는 memories.tistory.com CAN FD 설명은 아래 포스트를 참고하면 기존 CAN과 차이점을 자세히 알 수 있다. 간단히 설명하면 CAN 버스 네트워크에 높은 부하을 줄이기 위해 Bosch에서 새롭게 발표한 CAN 프로토콜이며, 데이터 길이를 8바이트에서 64바이트로 확장하고, 최대 전송 속도를..
Tiny Project로 CAN 송수신 모듈을 만들고 있는데, 실시간 처리가 필요없는 것은 CLI를 사용하여 하였으나 엔진 RPM 같은 경우는 J1939 스펙상 10ms 단위로 지속적으로 보내야 하며, Engine RPM 값이 가변적으로 변해야 하므로 ADC로 입력 받은 값을 Engine RPM으로 설정하여 간단한 테스트 코드를 작성하였다. STM32 핀 설정은 위와 같이 하였으며, 기존 GitHub의 CANTest2 설정에서 ADC IN7을 추가하였다. ADC 관련 부연 설명 및 관련 설정은 아래 블로그 자세히 다루고 있다. 잘 이해가 되지 않는다면 아래 동영상을 참고하면 더 좋을 것이다. [STM32 HAL] ADC#Single Conversion Reference: Mastering STM32 by..
일반적으로 CAN 데이터는 8바이트 크기를 전송되지만, 8바이트 이상의 데이터를 전송하기 위해 특별한 방법을 사용하여 J1939 프로토콜은 BAM(Broadcast Announce Message) 방식으로 최대 1785바이트를 전송할 수 있다. J1939 프로토콜은 0xEC00 / 0xEB00 PGN을 사용하여 멀티패킷을 전송하며, CM(Connection Management) 메시지는 멀티패킷의 PGN 및 길이 패킷 개수 정보를 나타내며, DT(Data Transfer) 메시지는 패킷 인덱스 및 데이터를 포함하고 있다. 아래 포스트에서 작성한 코드에서 멀티 패킷을 수신하는 코드를 추가할 것이며, 기존 코드에서 변경된 사항을 패치로 정리할 것이다. STM32 CAN 32비트 멀티 필터 설정 J1939 프..
J1939 프로토콜의 CAN 데이터를 수신하여 처리하려면 CAN 통신속도 250kbps, 샘플포인트 87%로 설정해야 한다. 내부클럭(HSI)을 사용할 경우 MCU의 상태에 따라 클럭이 틀어져서 CAN 데이터를 수신 못하는 문제가 발생하기 때문에 아래 이미지와 같이 외부 크리스탈을 사용하도록 한다. STM32F429 데모보드의 최대 클럭은 180MHz이므로, 위 클럭설정처럼 최대 클럭을 사용하도록 한다. CAN1이 사용하는 APB1 버스클럭은 45MHz으로 설정된다. CAN에서 통신속도 및 샘플포인트를 설정하는 것이 가장 중요하며, 아래 PPT 파일 내용과 동영상을 참고하여 J1939 프로토콜에서 사용하는 통신속도와 샘플포인트를 설정해야 한다. 250kbps의 1비트 타임은 4us이며, 20개의 타임퀀텀..
지인에게 ALi Express에서 CAN2USB 모듈을 구입하였다고 말하니, 국내에서 판매하는 CAN2USB 모듈을 가지고 있다고 하여 잠시 빌려 테스트 하고 있다. PEAK-System의 PC CAN은 윈도우 및 리눅스 드라이버를 제공하며, 리눅스의 경우 커널 3.6 이상 버전부터 PEAK-System의 PC CAN 인터페이스가 포함되고 있어 따로 드라이버를 설치할 필요가 없다. PEAK CAN USB with socketCAN In recent Linux Kernels PEAK CAN USB adapter works natively without the need of installing PEAK drivers. As the manufacturer says: Since kernel version 3.6..
디바이스간 CAN 통신을 확인하기 위해 PC에서 CAN2USB 사용하여 CAN raw data를 분석할 수 있다. CAN2USB 모듈은 국내에서도 구입할 수 있지만, 꽤 비싼 가격에 판매되기 때문에 ALiExpress를 이용하면 저렴하게 구입이 가능하다. 16.56US $ 8% OFF|USB to CAN Conversion module / CAN debug assistant / CAN bus analyzer for Windos / Linux win7 win10 NEW|Replace Smarter Shopping, Better Living! Aliexpress.com www.aliexpress.com 가격이 저렴하기 때문에 기구는 사치이며 PCB 상태로 판매하는 것 같지만, 이런 가격에 CAN Analyz..
이전 포스트에서 MCP2515 CAN 컨트롤러와 TJA1050 트랜시버가 있는 CAN 모듈을 라즈베리파이에서 사용하는 방법은 간단히 정리하였다. 이것을 사용하여 STM32F429 데모보드와 CAN 통신을 해 보려고 한다. MCP2515 & TJA1050 모듈 설정 CAN 모듈을 라즈베리파이로 검증하기 위해 CAN 컨트롤러 MCP2515와 트랜시버 TJA1050가 포함된 CAN BUS 모듈 구입하여, 라즈베리파이에 아래 이미지와 같이 연결하였다. 라즈베리파이와 CAN 버스 모듈을 memories.tistory.com STM32은 내장 CAN 컨트롤러가 내장되어 있지만 CAN 트랜시버가 없으므로 CAN 트랜시버 모듈을 따로 구입해야 하며, 이것을 사용하여 아래 이미지와 같이 STM32 & Raspberry ..
CAN 모듈을 라즈베리파이로 검증하기 위해 CAN 컨트롤러 MCP2515와 트랜시버 TJA1050가 포함된 CAN BUS 모듈 구입하여, 라즈베리파이에 아래 이미지와 같이 연결하였다. 라즈베리파이와 CAN 버스 모듈을 아래 블로그를 참고하여 연결하였으며, 라즈베리파이의 핀 설정은 아래 이미지와 같다. 아래 왼쪽 이미지를 참고하여 MCP2515 모듈과 라즈베리파이 각 핀에 연결하도록 한다. 참고로, 여기서 사용하는 CAN 모듈의 TJA1050 트랜시버는 5V에서 동작하기 때문에 아래 블로그는 CAN 트랜시버를 다른 칩셋으로 교체하여 테스트를 진행하였다. Raspberry Pi - CAN Bus communicatie (GPIO) Het is mogelijk een raspberry pi te gebruik..