안녕하세요! 우선 칩 시리즈가 F4가 아니로 H7로 사용하셨기 때문에 라이브러리가 일부 다를 수 있습니다. 제가 조만간 다시 실습보드(STM32F407)로 CubeIDE 버전에 따라 라이브러리 사용법이 달라졌는지 확인해보고 댓글 달아드리겠습니다. 만약 F4 → H7 으로 바뀜에 따라 라이브러리가 바뀐거라면 제가 찾아봐드리기는 어려울 것 같고, H7 을 이용한 튜토리얼 강의를 참고해보시는 것이 좋을 것 같습니다. th-cam.com/play/PLnMKNibPkDnFn06DoC63zxwwdYAz-1fAh.html ST 공식 동영상 트레이닝 강의에서 H7의 can 사용법에 대한 강의가 목록 47에 있습니다. 이걸 확인해보시면 좋을 것 같습니다!
@@ChrisWonyeobPark 안녕하세요. 영상 자료 항상 감사 드립니다. 1. stm32cubeIDE를 사용하고 있습니다. peripheral 는 어디에서 설정할 수 있을까요? 2. STM32으로 2개가 없고 STM32 1개 + 캔 트랜시버 2개 있을 때는 어떻게 테스트를 할 수 있을까요?
@@mjaysg 안녕하세요! 제 영상이 도움이 되었으면 좋겠습니다! 1. cubeIDE를 이용한 페리페럴 설정과 프로젝트 생성하는 방법은 th-cam.com/video/r7krxOCsdUM/w-d-xo.html 영상을 참고하시면 설명되어있습니다. 확인 부탁드립니다! 2. STM32가 1대밖에 없으시다면, 해당 STM32가 CAN 채널을 2개 이상 가지고 있다면 테스트는 가능합니다. CAN1과 CAN2를 같은 CAN버스에 물려서 테스트 하면 됩니다. 각각의 CAN 채널은 별도의 CAN 트랜시버가 필요할겁니다. 다만 혼자서 주고받고 하는거다 보니 통신 테스트하는 느낌이 잘 안들긴 하겠네요.
안녕하세요! 어떻게 구현하셨는지 모르겠지만, 기본적으로 CAN 2.0 통신으로 한번에 전송할 수 있는 최대 바이트 수가 8바이트로 정해져있습니다. 1000바이트를 보내셔야 한다면 8바이트씩 125번에 나눠서 전송해야겠네요. 딜레이는 필요없어보입니다. 단, 125번이나 연속적으로 데이터를 보내다보면 중간에 데이터 유실이 발생할 가능성이 있으니 그에 대한 대책은 필요할 수도 있겠네요!
@@영인박-l4i 보통 유실이 되는경우 송신측은 그것을 알지 못하므로 수신측에서 송신단에 문제가 발생했다는 것을 알려주어야 합니다. 송신단에서는 수신단으로부터 잘 받았다는 응답을 기다린 후에 응답이 오면 다음 데이터를 보내고 다시 이 과정을 반복합니다. 만약 응답이 없거나 잘못된 데이터가 수신됐다면 타임아웃 등의 예외처리가 필요합니다. 예로 대표적인 것이 핸드쉐이킹이 있습니다. 통신플로우를 컨트롤하는 방식이라고 볼 수 있겠네요. 하지만 CAN 표준이 핸드쉐이킹을 지원하는지는 잘 모르겠네요. 구글에서 잠시 검색해본 결과 표준으로 정의되어있지는 않은 것 같네요. 그렇다면 사용자가 직접 이 과정을 구현하면 됩니다.
good... 입니다... ^^;
ㅎㅎ 감사합니다! :)
EdueBoard 따라하며, 강좌 잘 봤습니다.
H743 시리즈 해보고 있는데,
STM32CubeIDE에서 버전이 올라갈수록 CAN 라이브러리가 변경 된 것 같습니다.
강좌의 라이브러리와는 좀 다르네요.
변경된 라이브러리로, 새로이 알려주시면 좋을 것 같습니다.
안녕하세요!
우선 칩 시리즈가 F4가 아니로 H7로 사용하셨기 때문에 라이브러리가 일부 다를 수 있습니다.
제가 조만간 다시 실습보드(STM32F407)로 CubeIDE 버전에 따라 라이브러리 사용법이 달라졌는지 확인해보고 댓글 달아드리겠습니다.
만약 F4 → H7 으로 바뀜에 따라 라이브러리가 바뀐거라면 제가 찾아봐드리기는 어려울 것 같고, H7 을 이용한 튜토리얼 강의를 참고해보시는 것이 좋을 것 같습니다.
th-cam.com/play/PLnMKNibPkDnFn06DoC63zxwwdYAz-1fAh.html
ST 공식 동영상 트레이닝 강의에서 H7의 can 사용법에 대한 강의가 목록 47에 있습니다.
이걸 확인해보시면 좋을 것 같습니다!
@@ChrisWonyeobPark 네 감사합니다. 강의가좋아서 공부많이됐습니다. 감사합니다.^^
@@woojinjang-o5y 안녕하세요! STM32F407로 확인해보니 최신 버전의 CubeIDE와 CubeF4 로도 잘 동작하네요. 아마 H7에서의 HAL 라이브러리 사용방식이 F4와 약간 다른가 봅니다. H7의 튜토리얼을 참고하여 진행해보세요~
can.c 함수파일은 따로 만드신 건가요? 만들어지지 않네요.🤔stm32cubeIDE 사용 중 입니다
아뇨 코드 생성하실때 옵션중에 peripheral 소스코드를 별도의 파일로 생성하는 옵션이 있을겁니다. 그거 체크해주고 하시면 될거에요
@@ChrisWonyeobPark 안녕하세요. 영상 자료 항상 감사 드립니다. 1. stm32cubeIDE를 사용하고 있습니다. peripheral 는 어디에서 설정할 수 있을까요? 2. STM32으로 2개가 없고 STM32 1개 + 캔 트랜시버 2개 있을 때는 어떻게 테스트를 할 수 있을까요?
@@mjaysg 안녕하세요! 제 영상이 도움이 되었으면 좋겠습니다!
1. cubeIDE를 이용한 페리페럴 설정과 프로젝트 생성하는 방법은 th-cam.com/video/r7krxOCsdUM/w-d-xo.html 영상을 참고하시면 설명되어있습니다. 확인 부탁드립니다!
2. STM32가 1대밖에 없으시다면, 해당 STM32가 CAN 채널을 2개 이상 가지고 있다면 테스트는 가능합니다.
CAN1과 CAN2를 같은 CAN버스에 물려서 테스트 하면 됩니다. 각각의 CAN 채널은 별도의 CAN 트랜시버가 필요할겁니다.
다만 혼자서 주고받고 하는거다 보니 통신 테스트하는 느낌이 잘 안들긴 하겠네요.
Can통신으로 Tx를 만약 1000byte정도의 크기가 넘는다고 가정했을때 Delay를 안쓰고 모두 전송하고 받을수 있게 하는 법이 있을까요?
안녕하세요! 어떻게 구현하셨는지 모르겠지만, 기본적으로 CAN 2.0 통신으로 한번에 전송할 수 있는 최대 바이트 수가 8바이트로 정해져있습니다. 1000바이트를 보내셔야 한다면 8바이트씩 125번에 나눠서 전송해야겠네요. 딜레이는 필요없어보입니다. 단, 125번이나 연속적으로 데이터를 보내다보면 중간에 데이터 유실이 발생할 가능성이 있으니 그에 대한 대책은 필요할 수도 있겠네요!
@@ChrisWonyeobPark 혹시 그 유실 발생할경우 대책이 있을까요?
@@영인박-l4i 보통 유실이 되는경우 송신측은 그것을 알지 못하므로 수신측에서 송신단에 문제가 발생했다는 것을 알려주어야 합니다.
송신단에서는 수신단으로부터 잘 받았다는 응답을 기다린 후에 응답이 오면 다음 데이터를 보내고 다시 이 과정을 반복합니다. 만약 응답이 없거나 잘못된 데이터가 수신됐다면 타임아웃 등의 예외처리가 필요합니다.
예로 대표적인 것이 핸드쉐이킹이 있습니다. 통신플로우를 컨트롤하는 방식이라고 볼 수 있겠네요.
하지만 CAN 표준이 핸드쉐이킹을 지원하는지는 잘 모르겠네요. 구글에서 잠시 검색해본 결과 표준으로 정의되어있지는 않은 것 같네요. 그렇다면 사용자가 직접 이 과정을 구현하면 됩니다.
혹시 can강좌에서 사용하시는 모듈좀 알려주실수 있나요?
모듈은 waveshare에서 판매하는 CAN 모듈이고 트랜시버 칩의 이름은 13-1강 개념 설명 피피티 자료에 적혀있으니 확인해보시면 됩니다~
메일박스 3개가 다 찼으면 더 전송 못하는거면 3개의 메세지밖에 못보내나요?
메일박스는 한개만 사용하셔도 됩니다. 메일박스 내의 payload 부분의 값만 원하는 값으로 바꿔서 쓰시면 되요~ ㅎㅎ
1:38