본문 바로가기

can6

PCAN USB 데이터 가져와서 뿌리기 예제 앞서 PCAN USB 연결/해제 하기 에서 UI와 PCAN 연결/해제를 구현해 보았습니다. 우선 타이머를 설정합니다. 타이머는 널널하게 1ms로 설정하였습니다. 1ms마다 readmessage()를 실행하게 됩니다. private void timer1_Tick(object sender, EventArgs e) { ReadMessage(); } readmessage에서는 can id를 검색해서 필요한 id만 가져오게 됩니다. private void ReadMessage() { TPCANMsg CANMsg; TPCANTimestamp CANTimeStamp; TPCANStatus stsResult; strMsg = new StringBuilder(256); stsResult = PCANBasic.Read(m.. 2021. 10. 27.
CAN제품 개발시 ID 필터링의 중요성 Can 통신의 경우 bus형태의 통신라인으로 연결되어 있습니다. 그렇다보니 한 디바이스가 보낸 데이터를 모든 디바이스에서 수신받게 됩니다. 이때에 자기가 사용하는 것과 사용하지 않는 MSG ID를 적절히 필터링하여 사용하여야 합니다. 필터링의 방법으로는 ID LIST방식과 ID MASK방식이 있는데, ID LIST는 받을 ID 하나씩 일일이 적어서 필터링하며, ID MASK의 경우 연속된 ID를 필터링할 경우 범위를 지정하여 필터링 합니다. STM시리즈의 CAN 필터링 방법은 이곳을 눌러 확인하실 수 있습니다. ID를 필터링하지 않을 경우 받은 데이터를 처리하지 않을 시 잘못하면 받은 메세지 ID에 내가 보내는 데이터를 넣어서 보내거나 엉뚱한 데이터를 보내게 되어 통신상에 심각한 오류를 일으킬 수 있습니.. 2021. 4. 27.
종단저항의 중요성 종단저항은 보통 1대 다 통신의 경우에 달게 됩니다. 종단저항을 다는 이유는 통신선로의 양 끝점에 일정 전류를 흘려 신호의 반사가 일어나지 않도록 합니다. 그래서 종단저항은 통신선로의 양 끝단점에 각각 설치를 하게 됩니다. 종단저항 값은 120옴을 양끝단에 달아 120옴이 병렬로 2개 즉 60옴정도가 되도록 합니다. 만약 종단저항을 더 달게 되면 어떻게 될까요? 위 사진을 보시면 2.5V를 중심으로 3.5V와 1.5V 를 왔다 갔다하면서 High Low를 만들어 냅니다. 위 사진에서 신호가 같은전압이면 High 다른전압이면 Low입니다. 위 사진의 경우 종단저항 120옴이 3개가 병렬로 연결되어 총 저항값이 40옴이 나오는 경우입니다. 파형을 보시면 종단저항 60옴일때보다 신호 레벨이 많이 낮아졌습니다... 2021. 3. 10.
CAN fitering 방법 CAN통신에서 데이터를 구분해서 받기 위해 필터링이라는 것이 존재합니다. 즉, 내가 원하는 것만 받을래~ 하는 것입니다. 레퍼런스 메뉴얼을 보시면 CAN 필터링에 대한 부분이 나옵니다. ID MASK는 32비트 1개, 16비트 2개를 사용가능하며, ID LIST의 경우 32비트 2개, 16비트 4개를 사용할 수 있습니다. 그리고 위 그림처럼 여러개의 필터를 혼합해서 사용 가능합니다. 필터링은 크게 ID LIST와 MASK 방식이 있는데, ID LIST방식은 특정 ID만 필터링하는 방법이고, ID MASK방식은 범위를 지정할 수 있습니다. MASK 설정방법입니다. 11 10 9 8 7 6 5 4 3 2 1 HEX ID 0 1 0 0 0 0 0 0 0 0 0 0x200 MASK 1 1 1 1 1 1 1 0 .. 2020. 12. 4.
CAN 통신 CAN 통신은 다들 아시겠지만 자동차를 위하여 태어난 통신입니다. 80년대 보쉬사에서 개발을 하고 90년대에 자동차에 최초 적용하게 되었습니다. CAN통신의 가장 큰 장점이라면 무엇보다도 버스방식의 통신방식입니다. 위 그림처럼 기존의 통신방법은 point to point 방식으로 하나의 통신포트는 상대의 통신포트와 1:1로 통신이 가능했습니다. 대표적으로 UART, RS232등입니다. 하지만 통신을 해야하는 유닛들이 많아지면서 1:1통신으로는 통신포트가 감당을 할 수 없었습니다. 버스식 통신방식으로는 CAN외에도 RS485, SPI, I2C등이 있습니다. CAN통신을 위해서는 CAN컨트롤러가 필요합니다. CAN통신의 경우 Frame ID외에 많은 정보들이 포함되므로 CAN 트랜시버에 이러한 정보들을 주고.. 2020. 12. 4.
CAN baudrate 설정하기 CAN은 최대 1Mbps까지 지원하는 고속 통신으로 보통 125Kbps~1000Kbps의 baudrate를 많이 사용합니다. STM에서 CAN을 사용할때 Baudrate의 설정은 조금 까다롭습니다. UART처럼 baudrate를 그대로 쓰면되는것이 아니고, 내부 PCLK에 따라 Prescaler와 BS의 값을 넣어줘야 합니다. void MX_CAN_Init_1M(void) { hcan.Instance = CAN1; hcan.Init.Prescaler = 4; hcan.Init.Mode = CAN_MODE_NORMAL; hcan.Init.SJW = CAN_SJW_1TQ; hcan.Init.BS1 = CAN_BS1_6TQ; hcan.Init.BS2 = CAN_BS2_1TQ; hcan.Init.TTCM = D.. 2020. 12. 3.

인기글