KR101708876B1 - 버퍼 디스크립션 테이블을 이용하는 can 모듈을 구비한 마이크로컨트롤러 - Google Patents

버퍼 디스크립션 테이블을 이용하는 can 모듈을 구비한 마이크로컨트롤러 Download PDF

Info

Publication number
KR101708876B1
KR101708876B1 KR1020117022046A KR20117022046A KR101708876B1 KR 101708876 B1 KR101708876 B1 KR 101708876B1 KR 1020117022046 A KR1020117022046 A KR 1020117022046A KR 20117022046 A KR20117022046 A KR 20117022046A KR 101708876 B1 KR101708876 B1 KR 101708876B1
Authority
KR
South Korea
Prior art keywords
message
bit
descriptor table
buffer
table entry
Prior art date
Application number
KR1020117022046A
Other languages
English (en)
Other versions
KR20120014554A (ko
Inventor
팀 엘. 윌슨
조세프 더블유. 트리스
스티븐 지. 도슨
Original Assignee
마이크로칩 테크놀로지 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로칩 테크놀로지 인코포레이티드 filed Critical 마이크로칩 테크놀로지 인코포레이티드
Publication of KR20120014554A publication Critical patent/KR20120014554A/ko
Application granted granted Critical
Publication of KR101708876B1 publication Critical patent/KR101708876B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/40006Architecture of a communication node
    • H04L12/40013Details regarding a bus controller
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/407Bus networks with decentralised control
    • H04L12/413Bus networks with decentralised control with random access, e.g. carrier-sense multiple-access with collision detection (CSMA-CD)
    • H04L12/4135Bus networks with decentralised control with random access, e.g. carrier-sense multiple-access with collision detection (CSMA-CD) using bit-wise arbitration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L2012/40208Bus networks characterized by the use of a particular bus standard
    • H04L2012/40215Controller Area Network CAN

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Small-Scale Networks (AREA)
  • Information Transfer Systems (AREA)
  • Communication Control (AREA)

Abstract

마이크로컨트롤러는 RAM과, 어셈블링된 CAN 메시지를 수신하는 제어 유닛을 갖는 CAN 컨트롤러를 구비한다. 제어 유닛은 어셈블링된 CAN 메시지를 이용하여 버퍼 디스크립터 테이블 엔트리를 발생시키고, 버퍼 디스크립터 테이블 엔트리를 RAM에 저장시키며, 버퍼 디스크립터 테이블 엔트리는 CAN 메시지로부터의 적어도 메시지 식별자 및 로드 데이터, 및 다음 버퍼 디스크립터 테이블 엔트리의 정보를 갖는다.

Description

버퍼 디스크립션 테이블을 이용하는 CAN 모듈을 구비한 마이크로컨트롤러{MICROCONTROLLER WITH CAN MODULE USING A BUFFER DESCRIPTION TABLE}
본 발명은 컨트롤러 영역 네트워크(CAN 또는 CAN-버스) 호환가능 마이크로컨트롤러들에 관한 것으로, 특히 CAN 메시지 저장에 이용되는 경량 버퍼 디스크립션 테이블(buffer descriptor table : BDT)에 관한 것이다.
컨트롤러 영역 네트워크(CAN)는 높은 레벨의 보안성과 함께 분산 실시간 제어를 효과적으로 지원하는 직렬 통신 프로토콜이다. CAN 제품들의 적용 범위는 고속 디지털 통신 네트워크로부터 저비용 멀티플렉스 배선(multiplex wiring)까지 다양하다. CAN는 실시간 제품들을 위한 고 무결성 직렬 데이터 통신 버스이다. CAN는 최대 1Mbit/초의 데이터 전송 속도로 동작하며, 에러 검출 및 감시 능력이 뛰어나고, 그리고 본래 자동차에서 사용하기 위해 개발되었지만 지금은 다른 영역들에도 사용되고 있다. CAN 버스와 CPU 간의 인터페이스를 보통 CAN 컨트롤러라고 한다. CAN를 사용하는 이면의 이유는 자동차 전자장치, 엔진 제어 유닛들, 센서들, 미끄럼 방지(anti-skid) 브레이크 시스템 등의 상호 운영을 개선시키고, 와이어링 하네스 무게 및 복잡성을 감소시킴으로써, 자동차를 더 신뢰할 수 있고, 더 안전하고, 고 연비가 되게 하기 때문이다. CAN이 시작된 이후로, CAN 프로토콜은 산업 자동화 분야와 자동차/트럭 분야에서 광범위한 인기를 얻어왔다. 노이즈 환경에서의 CAN 버스의 강인성과 고장 상태 검출 및 복구 능력으로 인하여, CAN은 산업 제어 장비, 의료 장비, 테스트 장비, 모바일 및 휴대용 기기, 가전 제품 등의 이용에 적합하다.
CAN은 하나의 논리 버스 라인을 갖는 비동기 직렬 버스 시스템이다. CAN은 동등한 버스 노드들을 갖는 개방형 선형 버스 구조를 갖는다. CAN 버스는 2 이상의 노드들로 이루어진다. 그 버스 상의 노드들의 개수는 다른 노드들의 통신을 방해하지 않고 동적으로 변할 수 있다.
CAN 논리 버스는 "와이어드-AND"("wired-AND") 메커니즘에 해당하고, "열성" 비트들("recessive" bits)(반드시 논리 레벨 "1"과 동일하지 않지만, 주로 논리 "1"임)은 "우성" 비트들("dominant" bits)(주로 논리 레벨 "0"임)에 의해 오버라이팅된다. 버스 노드가 우성 비트를 전송중이지 않는 동안은, 그 버스 라인은 열성 상태에 있지만, 어떤 버스 노드로부터의 우성 비트도 우성 버스 상태를 만든다. 그러므로, CAN 버스 라인에서는, 2개의 가능한 비트 상태들(우성과 열성)을 전송할 수 있는 매체가 선택된다. 사용된 공통의 물리적인 매체는 연선(twisted wire pair)이다. 또한, 버스 라인들은 "CANH" 및 "CANL"라고도 하며, CAN 컨트롤러 노드들에 직접 연결되거나 또는 커넥터를 통해 CAN 컨트롤러 노드들에 연결될 수 있다.
CAN 버스 프로토콜에 있어서, 어드레싱되는 것은 버스 노드들이 아니며, 더 정확히 말하면, 어드레스 정보는 전송되는 메시지에 담겨져 있다. 이것은 메시지 콘텐츠, 예를 들면, 엔진 속도, 오일 온도 등을 식별하는 식별자(각 메시지의 일부)를 통해 행해진다. 식별자는 부가적으로 메시지의 우선권을 나타낸다. 식별자의 이진값이 낮을수록, 메시지(더 많은 우성 비트들)의 우선권은 높아진다.
본래의 CAN 규격(버전 1.0, 1.2 및 2.0A)은 11비트 길이를 가지고 가능한 2048 메시지 식별자들을 제공하는 것으로서, 메시지 식별자를 정의하였다. "확장 CAN" 규격 버전 2.0B는 11 및/또는 29 비트의 메시지 식별자 길이를 사용한다(29 비트의 식별자 길이는 536M 이상의 메시지 식별자를 가능하게 함). CAN 규격(모든 버전)은 모든 목적을 위하여 본 출원에 참조로서 포함된다.
CAN 컨트롤러의 구조가 CAN 표준에 의해 커버되지 않기 때문에, 일반적으로, CAN에 대해 2가지 해결 방식이 이용될 수 있으며, 이들 2가지 해결 방식은 "BasicCAN" 및 "FullCAN"(CAN 1과 CAN 2 또는 표준 식별자와 확장 식별자와 구별됨)이며, 이들은 메시지 버퍼링에 차이가 있다.
BasicCAN 컨트롤러 구조는 문자 대신에 완전한 프레임들이 송신되는 것을 제외하고는, 간단한 UART와 유사하다. 전형적으로, 단일 전송 버퍼와 이중 버퍼링된 수신 버퍼가 있다. 예를 들면, 마이크로컨트롤러는 송신 버퍼에 프레임을 두고, 프레임이 전송되면 인터럽트를 수신한다. 프레임이 수신 버퍼에 수신될 때, 마이크로컨트롤러는 수신 버퍼를 비우기 위해 인터럽트를 수신하고, 이어지는 프레임이 수신되기 전에 수신 버퍼로부터 프레임을 비운다. BasicCAN 컨트롤러 구조에 있어서, 마이크로컨트롤러는 전송과 수신을 관리하고, 그리고 프레임들의 저장을 처리하여야 한다.
FullCAN 컨트롤러 구조는 전용 버퍼를 포함하고, 이 전용 버퍼에 프레임들을 저장한다. 제한된 개수의 프레임들이 전용 버퍼의 크기에 따라 처리될 수 있다. 각 프레임 버퍼는 그 버퍼에 매핑된 프레임의 식별자가 적힌 태그가 붙여진다. 마이크로컨트롤러는 버퍼내의 프레임을 업데이트할 수 있으며, 전송을 위해 프레임을 표시할 수 있다. 매칭 식별자를 갖는 프레임이 수신되었는지를 판별하기 위하여, 수신 버퍼들은 검사될 수 있다. 더욱이, 수신된 프레임을 미리 차단하는데 필터들이 사용될 수 있어, 특정한 CAN 컨트롤러에 의한 이용을 위해 의도된 프레임들만이 수신 버퍼에 저장될 수 있다.
표준 CAN 대 확장 CAN
CAN 프로토콜은 일반적으로 CAN 1.0과 CAN 2.0의 2개의 버전으로 분류된다. CAN 2.0은 CAN 1.0과 퇴보적으로(backwardly) 호환가능하며, 가장 새로운 컨트롤러들은 CAN 2.0에 따라 구축된다. CAN 2.0 표준에는 2개의 파트(파트 A 및 파트 B)가 있다. CAN 1.0과 CAN 2.0A의 경우, 식별자들은 11비트이어야 한다. CAN 2.0B의 경우, 식별자들은 11비트("표준" 식별자) 또는 29비트("확장" 식별자)일 수 있다. CAN 2.0에 따르도록, 컨트롤러는 2.0 파트 B 패시브, 또는 2.0 파트 B 액티브이어야 한다. 컨트롤러가 패시브이면, 컨트롤러는 확장 프레임들을 무시하여야 한다(CAN 1.0 컨트롤러들은 29비트 식별자를 갖는 프레임들이 입력되면, 에러 프레임들을 발생할 것임). 컨트롤러가 액티브이면, 컨트롤러는 확장 프레임들을 수신하거나 전송할 수 있어야 한다. 2가지 타입의 프레임들을 송신하고 수신하기 위한 몇 가지의 호환성 규칙들이 있다.
CAN 2.0B 액티브 컨트롤러들은 표준 및 확장 프레임들을 모두 송신하고 수신할 것이다. CAN 2.0B 패시브 컨트롤러들은 표준 프레임들을 송신하고 수신할 것이며, 에러 없이 확장 프레임들을 버릴 것이다.
CAN 1.0 컨트롤러는 확장 프레임들이 입력되면 에러를 발생할 것이다. 따라서 네트워크상의 단일 CAN 1.0 컨트롤러가 있는 네트워크는 그 네트워크상의 확장 프레임들을 수용할 수 없어, 모든 컨트롤러는 표준 프레임들을 이용하여 송신해야한다.
컨트롤러 구조들
컨트롤러 구조는 CAN 표준에 의해 커버되지 않으므로, 그들을 사용하는 방법에 있어서 변경이 요구된다. 일반적은 2가지 해결 방식은 "BasicCAN" 및 "FullCAN"(CAN 1과 CAN 2 또는 표준 식별자와 확장 식별자와 구별됨)이며, 이들은 메시지 버퍼링에 차이가 있다.
상술한 바와 같이, BasicCAN 컨트롤러 구조는 문자 대신에 완전한 프레임들이 전송되는 것을 제외하고는, 간단한 UART와 유사하다. (전형적으로) 단일 전송 버퍼와 이중 버퍼링된 수신 버퍼가 있다. CPU는 전송 버퍼에 프레임을 두고, 프레임이 전송될 때 인터럽트를 수신한다. CPU는 프레임을 수신 버퍼에 수신하고, 인터럽트를 수신하여 (이어지는 프레임이 수신되기 전에) 수신 버퍼를 비운다. CPU는 전송과 수신을 관리하고, 그리고 프레임들의 저장을 처리해야 한다.
상술한 바와 같이, FullCAN 컨트롤러에 있어서 프레임들은 컨트롤러의 전용 버퍼에 저장된다. 프레임들의 제한 개수는 (전형적으로 16)으로 처리될 수 있으며, 그 네트워크상에 더 많은 프레임들이 있을 수 있기 때문에, 각 버퍼는 그 버퍼에 매핑된 프레임의 식별자가 적힌 태그가 붙여진다. CPU는 버퍼의 프레임을 업데이트할 수 있으며, 전송을 위하여 프레임을 표시할 수 있다. 매칭 식별자를 가진 프레임이 수신되었는지를 판별하기 위하여, 버퍼들은 검사될 수 있다.
FullCAN 설계의 의도는 네트워크에서의 한 세트의 "공유 변수"("shared variable")를 제공하는 것으로, CPU는 그 변수들(예를 들면, 버퍼 프레임들의 콘텐츠들)을 주기적으로 업데이트하며, CPU는 또한 그 변수들을 검사할 수 있다. 실제는 병행 처리의 어려움 때문에, (물론) 상황은 간단하지 않다. 즉, 프레임으로부터 한 세트의 바이트를 읽는 동안에, 컨트롤러는 새로운 프레임의 콘텐츠로 데이터를 오버라이팅할 수 있는데, 다수의 컨트롤러에서, 이것은 상태 플래그에 의해서만 신호가 보내진다.
"BasicCAN" 구현들의 경우, 일반적으로 하나 이상의 연관된 메시지 수용 필터를 가진 하나의 이중 버퍼링된 수신 채널이 있다. 오직 하나의 이중 버퍼링된 메시지 채널을 가진다는 것은 프로세서가 이 시간 내에 이전의 메시지를 처리할 수 있는 것을 의미한다. "FullCAN" 구현들의 경우, 일반적으로 각각 하나의 연관된 메시지 수용 필터를 가진 메시지 버퍼들 및 채널들이 최대 15개이다. 다수의 수신 버퍼들의 구비는 프로세서가 매우 느린 경우 메시지 트래픽의 버스트를 처리함에 있어 도움이 될 수 있지만, 전체 메시지 트래픽이 프로세서 능력을 넘어서면, 아무리 버퍼링의 양이 많아도 메시지의 로스를 궁극적으로 방지할 수 없다.
프로세서의 CPU가 매우 느리거나 바쁜 경우, 다른 많은 어드레싱된 메시지들을 수신하기 위해서는 개별의 수신 버퍼들과 수용 필터들을 필요로 한다. 프로세서가 빠르면, 수용 필터들의 프로그래밍에 있어서 유연성과 함께 더 제한된 수의 수신 버퍼들을 이용하는 것이 가능하다. 요약하면, 프로세서는 그 버스 상에 전체 트래픽을 서비스하도록 밴드 폭을 구비하여야 한다. 복수의 버퍼들은 보통 절충안으로서 구현된다. 하지만, 각 수신 버퍼는 비교기들과 연관될 뿐만 아니라 복수의 마스크 레지스터와 필터 레지스터들과 연관되어 있다. 이로 인해, 큰 면적의 실리콘 실질 영역이 요구된다.
따라서, 이 기술분야에서 대량의 실리콘 영역을 필요로 하지 않는 CAN 구현물이 요구되고 있다.
본 발명의 일실시예 따르면, 마이크로컨트롤러는 랜덤 액세스 메모리 및 어셈블링된 컨트롤러 영역 네트워크(CAN) 메시지를 수신하는 제어유닛을 포함하는 CAN 컨트롤러를 포함하고, 상기 제어유닛은 상기 어셈블링된 CAN 메시지를 이용하여 버퍼 디스크립터 테이블 엔트리를 발생시키고, 상기 버퍼 디스크립터 테이블 엔트리를 상기 랜덤 액세스 메모리에 저장하고, 또한 상기 버퍼 디스크립터 테이블 엔트리는 상기 CAN 메시지로부터의 적어도 메시지 식별자 및 로드 데이터, 및 다음 버퍼 디스크립터 테이블 엔트리의 정보를 포함한다.
본 발명의 구체적인 실시예에 따르면, 상기 버퍼 디스크립터 테이블 엔트리는 일정한 크기를 가질 수 있다. 본 발명의 구체적인 실시예에 따르면, 상기 버퍼 디스크립터 테이블 엔트리는 프레임 상태 및 확장 CAN 메시지 식별자를 더 포함할 수 있다. 본 발명의 구체적인 실시예에 따르면, 상기 마이크로컨트롤러는 32 비트 마이크로컨트롤러이고, 상기 버퍼 디스크립터 테이블 엔트리는 6개의 32 비트 워드들로 이루어질 수 있다. 본 발명의 구체적인 실시예에 따르면, 상기 버퍼 디스크립터 테이블 엔트리는 프레임 상태 워드, 다음 어드레스 위치 워드, 메시지 식별자 워드, 확장 메시지 식별자 워드, 4개의 바이트들을 포함하는 제1 데이터 워드, 및 4개의 바이트들을 포함하는 제2 데이터 워드를 포함할 수 있다. 본 발명의 구체적인 실시예에 따르면, 상기 RAM은 듀얼 포트 메모리 또는 멀티 포트 메모리일 수 있다. 본 발명의 구체적인 실시예에 따르면, 상기 CAN 컨트롤러는 상기 제어 유닛에 연결된 메시지 어셈블리 버퍼 시프트 레지스터를 포함할 수 있다. 본 발명의 구체적인 실시예에 따르면, 상기 CAN 컨트롤러는 복수의 마스크 레지스터 및 복수의 필터 레지스터들을 상기 제어 유닛에 연결하는 로직을 포함하고, 상기 로직은 상기 메시지 어셈블리 버퍼 시프트 레지스터에 유효 엔트리를 나타내는 신호를 발생시킬 수 있다.
본 발명의 다른 실시예에 따르면, 컨트롤러 영역 네트워크(CAN) 메시지를 마이크로컨트롤러 내에 저장하기 위한 방법으로서, CAN 메시지를 수신하는 단계; 상기 CAN 메시지를 어셈블링하는 단계; 상기 어셈블링된 CAN 메시지를 이용하여 버퍼 디스크립터 테이블 엔트리를 발생시키는 단계; 및 상기 버퍼 디스크립터 테이블 엔트리를 상기 마이크로컨트롤러의 RAM에 저장하는 단계를 포함하고, 상기 버퍼 디스크립터 테이블 엔트리는 상기 CAN 메시지로부터의 적어도 메시지 식별자 및 로드 데이터, 및 다음 버퍼 디스크립터 테이블 엔트리의 정보를 포함할 수 있다.
본 발명의 구체적인 실시예에 따르면, 상기 CAN 메시지는 표준 CAN 메시지와 확장 CAN 메시지를 포함할 수 있다. 본 발명의 구체적인 실시예에 따르면, 상기 버퍼 디스크립터 테이블 엔트리는 일정한 크기를 가질 수 있다. 본 발명의 구체적인 실시예에 따르면, 상기 버퍼 디스크립터 테이블 엔트리는 프레임 상태 및 확장 CAN 메시지 식별자를 더 포함할 수 있다. 본 발명의 구체적인 실시예에 따르면, 상기 마이크로컨트롤러는 32 비트 마이크로컨트롤러이고, 상기 버퍼 디스크립터 테이블 엔트리는 6개의 32 비트 워드들로 이루어질 수 있다. 본 발명의 구체적인 실시예에 따르면, 상기 버퍼 디스크립터 테이블 엔트리는 프레임 상태 워드, 다음 어드레스 위치 워드, 메시지 식별자 워드, 확장 메시지 식별자 워드, 4개의 바이트들을 포함하는 제1 데이터 워드, 및 4개의 바이트들을 포함하는 제2 데이터 워드를 포함할 수 있다. 본 발명의 구체적인 실시예에 따르면, 상기 RAM은 듀얼 포트 메모리 또는 멀티 포트 메모리일 수 있다. 본 발명의 구체적인 실시예에 따르면, 상기 CAN 메시지를 어셈블링하는 단계는 메시지 어셈블리 버퍼 시프트 레지스터에 의해 수행될 수 있다. 본 발명의 구체적인 실시예에 따르면, 상기 메시지 어셈블리 버퍼 시프트 레지스터에 유효 엔트리를 나타내는 복수의 마스크 레지스터 및 복수의 필터 레지스터들에 의해 유효 신호를 발생시키는 단계를 더 포함할 수 있다.
본 발명의 또 다른 실시예에 따르면, 32 비트 마이크로컨트롤러는 듀얼 포트 32 비트 폭 랜덤 액세스 메모리(RAM); 및 어셈블링된 컨트롤러 영역 네트워크(CAN) 메시지를 수신하는 제어유닛을 포함하는 CAN 컨트롤러를 포함하고, 상기 제어유닛은 상기 어셈블링된 CAN 메시지를 이용하여 버퍼 디스크립터 테이블 엔트리를 발생시키고 상기 버퍼 디스크립터 테이블 엔트리를 상기 RAM에 저장하고, 상기 버퍼 디스크립터 테이블 엔트리는 32 비트 프레임 상태 워드, 32 비트 다음 어드레스 위치 워드, 32 비트 메시지 식별자 워드, 32 비트 확장 메시지 식별자 워드, 제1 32 비트 데이터 워드, 및 제2 32 비트 데이터 워드로 이루어질 수 있다.
32 비트 마이크로컨트롤러의 구체적인 실시예에 따르면, 상기 CAN 컨트롤러는 상기 제어 유닛에 연결된 메시지 어셈블리 버퍼 시프트 레지스터를 포함할 수 있다. 32 비트 마이크로컨트롤러의 구체적인 실시예에 따르면, 상기 CAN 컨트롤러는 복수의 마스크 레지스터 및 복수의 필터 레지스터들을 상기 제어 유닛과 연결시키는 로직을 포함하고, 상기 로직은 상기 메시지 어셈블리 버퍼 시프트 레지스터에 유효 엔트리를 나타내는 신호를 발생시킬 수 있다.
본 발명의 상술한 목적들, 특징들, 장점들은 첨부된 도면에 도시된 바와 같이, 본 발명의 바람직한 실시예들인 아래의 특정한 설명으로부터 명백해 질 것이다.
본 발명은 목적들을 달성하기 위하여 쉽게 변경되며, 상술한 목표 및 장점, 그리고 그 안에 고유한 다른 것들도 달성한다. 발명이 특별하게 바람직한 실시예를 참조함으로써 묘사되고, 서술되고, 정의된 동안에도, 그러한 참조들은 발명의 제한을 암시하지 않으며, 또한 그러한 제한이 암시되지도 않는다. 관련 기술분야에서 통상의 지식을 가진 자에게 일어날 수 있듯이, 본 발명은 방식과 기능에 있어 상당한 수정, 변경 및 등가물이 고려될 수 있다. 본 발명이 묘사되고, 서술된 바람직한 실시예는 단지 모범적인 예로, 본 발명의 범위를 완전히 묘사한 것은 아니다. 결과적으로, 본 발명은 모든 관점의 균등물에 완전한 이해를 주는 첨부된 청구범위의 사상과 범위에 의해서만 제한된다.
도 1은 본 발명의 일실시예에 따른 CAN 모듈/컨트롤러를 구비한 마이크로컨트롤러의 일부 블록도이다.
도 2는 종래의 CAN 컨트롤러의 수신 버퍼들 및 그들과 연관된 필터들의 회로도이다.
도 3은 표준 CAN 메시지와 확장 CAN 메시지의 차이들을 도시한 도면이다.
도 4는 CAN 컨트롤러와 함께 사용하기 위한 일실시예에 따른 버퍼 디스크립터 테이블을 도시한 도면이다.
도 5는 도 4의 버퍼 디스크립터 테이블을 이용한 마이크로컨트롤러의 RAM을 도시한 도면이다.
도 6은 도 1에 도시된 CAN 프로토콜 엔진의 구체적인 예를 도시한 도면이다.
도 7은 비교기 유닛의 바람직한 예를 도시한 도면이다.
도 8은 비트 비교기 유닛의 다른 모범적인 예를 도시한 도면이다.
도 2에 도시된 바와 같이, 마이크로컨트롤러에서의 사용을 위한 종래의 CAN 컨트롤러는, 수신 버퍼들(118, 120, 122)과, 관련된 마스크(102, 108)와, 필터 레지스터들(104, 106, 110, 112, 114, 116)을 포함한다. 메시지 어셈블리 버퍼(MAB)로서 설계된 버퍼(120)는 입력되는 메시지들을 위한 CAN 논리 버스(미도시됨)를 감시하기 위해서만 작용한다. MAB(120)는 버스 라인으로부터 디-스터프드(de-stuffed) 비트 스트림을 유지한다. 비트 스트림은 메시지, 예를 들면, 식별자 또는 데이터 필드(미도시됨)를 포함하는 데이터 프레임, 리모트 프레임, 또는 다른 프레임으로 이루어진다. CAN 컨트롤러는 마이크로컨트롤러의 CPU에 의해 액세스할 수 있는, 예를 들면 2개의 전용 버퍼(118, 122)를 포함한다. MAB(120)는 이들 수신 버퍼(118, 122)가 메시지에 병렬로 액세스하게 한다. 또한, MAB(120)는 수용 필터들(106, 116)이 메시지의 식별자 부분에 액세스하게 한다. 수용 마스크들(102, 108)과 수용 필터들(104, 106, 110, 112, 114, 116)이 메시지에 수용 매치 테스트를 적용할 때까지, 수신 버퍼들(118, 122)로의 비트 스트림 메시지의 병렬 전송은 허락되지 않을 수 있다. 도시된 버퍼의 개수는 예로서, 더 이용될 수 있다.
프로그램가능한 수용 필터 마스크들(102, 108)은 언스터프드(unstuffed) 비트 스트림 메시지의 어느 비트들이 각각 수용 필터들(104, 106) 및 수용 필터들(110, 112, 114, 116)의 콘텐츠와 비교되어야 하는지를 선택하기 위하여 이용된다.
수용 매칭 테스트는 다음과 같이 처리한다 : 필터들(104, 106, 110, 112, 114, 116)은 메시지의 식별자 필드를 수신하고, 식별자 필드를 필터 값들과 비교한다. 식별자 필드와 필터 값이 일치하면, 메시지는 매칭 필터의 해당 수신 버퍼(118 또는 122)로 로딩된다. 필터(104, 106)는 버퍼(118)에 연결되고, 필터(110, 112, 114, 116)는 버퍼(122)에 연결된다.
본 발명에 따르면, 수신 버퍼들에 함축적인 우선권이 있을 수 있다. 예를 들면, 버퍼(118)는 우선권이 높은 버퍼일 수 있으며, 버퍼(118)와 연관된 메시지 수용 필터들(104, 106)을 구비한다. 버퍼(122)는 우선권이 낮은 버퍼일 수 있으며, 버퍼(122)와 연관된 메시지 수용 필터들(110, 112, 114, 116)을 구비한다. 버퍼(122)보다 버퍼(118)에 더 적은 필터들이 연관되어 있다는 것은, 버퍼(118)가 버퍼(122)보다 더 제한적이라는 의미이다. 더 제한적인 버퍼(118)는 그것과 연관된 더 높은 임계를 갖음을 함축한다. 우선권을 갖음은 필수적이지 않지만, 선택할 수 있는 옵션일 수 있다.
2개의 "고 우선권" 메시지들이 지체 없이 연속하여 MAB(120)에 의해 수신되는 경우에는, 제1 고 우선권 버퍼로서 설계된 수신 버퍼(118)가, 제1 고 우선권 메시지를 수신할 것이다. 그리고 제2 고 우선권 메시지가 수신되면, MAB(120)는 버퍼(118)가 현재 고 우선권 메시지에 의해 점유되어 있는지를 조사한다. 그 다음에 MAB(120)는 제2 고 우선권 버퍼로서 설계된 버퍼(122)가 제2 고 우선권 메시지를 수신하도록 관리한다. 버퍼들(118, 122)은 이 시나리오에서 각각 제1 고 우선권 버퍼와 제2 고 우선권 버퍼로서 랭크된다.
중앙 처리 장치(CPU)(도 2에 미도시됨)는 수신 버퍼들(118, 122) 중 하나가 이전의 수신 메시지를 수신 상태 또는 유지할 수 있는 동안에, 다른 하나를 동작시킬 수 있다.
바람직한 실시예에 따르면, 2개의 고 우선권 메시지들이 도착한 경우의 프로토콜은 수신 버퍼들(118, 122)의 제어 레지스터(미도시됨)의 BUKT 비트에 의해 영향을 받을 수 있다. 표 1은 수신 버퍼(118)의 제어 레지스터를 묘사하고 설명하는데, 여기서 R/W는 리드/라이트 가능한 비트를 의미하고, R는 리드-온리 비트를 의미한다.
비트7 비트6 비트5 비트4 비트3 비트2 비트1 비트0
R/W R/W R/W R/W R/W R/W R R/W
비트7 : 메시지 준비 상태
1 = 수신 버퍼는 유효한 수신 메시지를 담고 있음
0 = 수신 버퍼는 새로운 메시지를 수신하도록 개방됨
비트는 CAN 모듈에 의해서만 세팅되고, CPU에 의해서만 클리어됨
비트6-5 : 수신 버퍼 동작 모드
11 = 에러를 갖는 메시지를 포함한 모든 메시지를 수신함
10 = 확장 식별자들을 가진 유효한 메시지들만 수신함
01 = 표준 식별자들을 가진 유효한 메시지들만 수신함
00 = 모든 유효한 메시지를 수신함
비트4 : 메시지 수신 인터럽트 인에이블
1 = 인터럽트 인에이블됨
0 = 인터럽트 디스에이블됨
비트3 : 수신 리모트 전송 요청
1 = 리모트 전송 요청 수신됨
0 = 리모트 전송 요청 수신되지 않음
비트2 : (BUKT) 수신 버퍼(122)로의 오버플로우 인에이블
1 = 수신 버퍼(118)가 오버플로우되었으므로 버퍼(122)에 기록함
0 = 버퍼(122)로의 오버플로우 허용 없음
비트1 : 비트2의 리드-온리 복사(BUKT)
비트0 : 어느 수용 필터가 메시지 수신 상태를 인에이블하였는지를 표시함
1 = 버퍼(122)와 연관된 수용 필터
0 = 버퍼(118)와 연관된 수용 필터
BUKT 비트가 1로 세팅되어 있으면, BUKT 비트는 우선권에 근거한 프로토콜을 구현한다. 표 2는 수신 버퍼(122)의 제어 레지스터를 묘사하고 설명한다.
비트7 비트6 비트5 비트4 비트3 비트2 비트1 비트0
R/W R/W R/W R/W R/W R/W R/W R/W
비트7 : 메시지 준비 상태
1 = 수신 버퍼는 유효한 수신 메시지를 담고 있음
0 = 수신 버퍼는 새로운 메시지를 수신하도록 개방됨
비트는 CAN 모듈에 의해서만 세팅되고, CPU에 의해서만 클리어됨
비트6-5 : 수신 버퍼 동작 모드[이들 비트는 옵션임]
11 = 에러를 갖는 메시지를 포함한 모든 메시지를 수신함
10 = 확장 식별자들을 가진 유효한 메시지들만 수신함
01 = 표준 식별자들을 가진 유효한 메시지들만 수신함
00 = 모든 유효한 메시지를 수신함
비트4 : 메시지 수신 인터럽트 인에이블
1 = 인터럽트 인에이블됨
0 = 인터럽트 디스에이블됨
비트3 : 수신 리모트 전송 요청
1 = 리모트 전송 요청 수신됨
0 = 리모트 전송 요청 수신되지 않음
비트2-0 : 어느 수용 필터가 메시지 수신 상태를 인에이블하였는지를 표시함
101 = 수용 필터(116)
100 = 수용 필터(114)
011 = 수용 필터(112)
010 = 수용 필터(110)
001 = 수용 필터(106)[버퍼(118)를 위한 제어 레지스터의 BUKT
비트가 "1"로 세팅된 경우에만]
000 = 수용 필터(104)[버퍼(118)를 위한 제어 레지스터의 BUKT
비트가 "1"로 세팅된 경우에만]
도 1은 마이크로컨트롤러에 사용하기 위한 CAN 컨트롤러의 바람직한 실시예를 도시한다. 마이크로컨트롤러는 적어도 CPU, 메모리 및 CAN 모듈과 같은 복수의 주변 장치를 포함하는 단일 칩 디바이스로서 고려된다. CAN 모듈/컨트롤러의 실시예에 있어서, 제1 및 제2 마스크 레지스터(415, 420)는 비트-와이즈(bit-wise) 어드레스 가능하고, 단일 출력 비트를 포함한다. 더욱이, 복수의 필터 레지스터 0...N(2개만 도시되어 있음)에는 숫자(425, 430)가 도시되어 있다. 또한, 필터 레지스터들(425, 430)은 단일 출력 비트를 포함하고, 비트-와이즈 어드레스 가능하다. 또한, 모든 필터 레지스터(425, 430)뿐만 아니라 마스크 레지스터들(415, 420)은 중앙 처리 장치(497)에 의해 병렬 모드로 읽기 및 쓰기 가능하다(도 1에는 연결이 미도시됨). 시퀀서 및 제어 유닛(410)은 비트 선택 유닛으로서 동작하며, 마스크 레지스터(415, 420) 및 모든 필터 레지스터(425, 430)에 공급되는 어드레스 신호들을 생성한다. 각 필터 레지스터(425, 430)는 연관 비트 비교기 유닛(435, 440)을 포함한다. 마스크 레지스터(415, 420)의 비트 출력 신호는 비트 비교기 유닛들(435, 440)의 제1 및 제2 입력에 공급된다. 더욱이, 필터 레지스터들(425, 430)의 각 비트 출력은 그들 연관 비트 비교기 유닛(435, 440)의 제3 입력에 공급된다. CAN 버스로부터의 비트 스트림 신호는 CAN 프로토콜 엔진(495)에 의해 제공되고, 각 비트 비교기 유닛(435, 440)의 제4 입력에 공급된다. 필터 레지스터들(425, 430)은 각 연관 비트 비교기 유닛의 제5 입력에 연결된 추가적인 저장 비트들을 제공할 수 있다. 기능을 덜 구비하거나 더 구비한 CAN 모듈을 위한 다른 설계들이 제공될 수 있다.
다양한 실시예에 따르면, 각 비트 비교기 유닛(435, 440)의 출력은 수용 신호를 전달하고, 디스크립터 테이블 제어 유닛(460)의 제어 입력에 연결된다. OR 게이트(450)에는 필터 레지스터들의 수만큼의 많은 입력이 제공될 수 있다. 각 입력은 각각의 비트 비교기 유닛(435, 440)으로부터 수용 신호를 수신한다. 디스크립터 테이블 제어 유닛(460)의 어드레스 출력은 CPU(485)에 연결된 마이크로컨트롤러의 범용 랜덤 액세스 메모리(470)의 어드레스 입력에 연결된다. OR 게이트(455)의 출력은 디스크립터 테이블 제어 유닛(460)의 다른 제어 입력에 연결된다. 일실시예에 따르면, 랜덤 액세스 메모리(470)는 그 제1 데이터 포트가 디스크립터 테이블 제어 유닛(460)의 데이터 출력에 연결된 듀얼 포트 또는 멀티 포트 메모리일 수 있다. 디스크립터 테이블 제어 유닛(460)은 CAN 프로토콜 엔진(480)으로부터 직렬 데이터 스트림을 다시 수신하는 표준 메시지 어셈블리 버퍼 시프트 레지스터(490)로부터 어셈블링된 메시지를 수신한다. 메모리(470)의 제2 데이터 포트는 중앙 처리 장치(485)에 연결된다. 하지만, 또 다른 실시예에 따르면, CPU(485)와 디스크립터 테이블 제어 유닛(460)은 메모리(470)에 연결된 동일 데이터 버스를 공유할 수 있다.
특별하게 설계된 버퍼 디스크립터 테이블은 특정한 방법으로 CAN 메시지를 랜덤 액세스 메모리(470)로 저장하기 위하여 사용된다. 일반적으로, 예를 들면, 이더넷 프로토콜로부터 알 수 있듯이, 버퍼 디스크립터 테이블(BDT)은 BDT에 연관된 중요한 오버헤드를 갖는다. 더욱이, 그러한 전통적인 버퍼 디스크립터 테이블들은 포인터 데이터를 저장하는데, 포인터 데이터는 메시지에 부착되거나 메시지에 포함된 데이터를 실제로 저장하는 메모리의 다른 부분들로 분기한다. BDT는 비교적 독출되어야 하는 많은 양의 정보를 포함한다. BDT는 BDT에 포함된 정보보다 상당히 큰 데이터 메시지와 결합하여 독출되는 경우, BDT 정보의 독출 및 처리를 위한 오버헤드는 비교적 낮다. 이로 인해, 중요한 오버헤드와 복잡한 메모리 관리가 요구된다. 하지만, 예를 들면, CAN 시스템과 같은 데이터 크기가 작은 제품에 대하여, BDT로부터 정보의 독출 및 처리를 위한 오버헤드는 시스템 성능에 상당한 영향을 줄 수 있다.
이 때문에, 다양한 실시예들에 따라, CAN 컨트롤러에 사용하기 위한 특별하게 설계된 버퍼 디스크립터 테이블이 제공된다. 이 특별하게 설계된 버퍼 디스크립터 테이블은 CAN 디바이스의 BDT로부터 정보를 독출하고 처리함에 있어서 오버헤드를 감소시킨다. 일실시예에 따라, 경량 BDT가 설계되었는데, 여기서 각 버퍼 디스크립터 테이블 엔트리는 일정한 크기를 갖거나 실제 데이터 로드를 포함한다. 본 발명의 개시에 따라, 그러한 같은 경량 BDT는 풀(full) BDT의 일부 유연성을 포기하고, 중요 실리콘 영역, 요구된 처리 전력 및 버스 액세스들을 절약한다. 경량 BDT에 있어서, 데이터에 대한 포인터는 제거되고 상태 필드들은 합병되므로, BDT 룩업 당 2개의 독출을 절약할 수 있다.
전용 버퍼에 대해서는 어떤 제한도 적용되지 않는다. 오히려 시스템 메모리 또는 이용가능한 RAM의 크기는, 이론적으로 얼마나 많은 엔트리를 이용할지를 한정한다. 상술한 바와 같이, 일실시예에 따라 이용된 특정 디스크립터 테이블은, 요구된 독출의 개수가 최소화되기 때문에, 빠른 데이터 검색을 허용한다. 일실시예에 따르면, 버퍼 디스크립터 테이블은 다음의 엔트리들을 포함할 수 있다. 숫자(210)는 프레임 상태를 포함하는 32비트를 갖는 제1 엔트리를 표시한다. 숫자(220)는 다음 테이블 엔트리의 32비트 어드레스를 표시한다. 숫자(220)는 메모리의 유연한 처리를 허용한다. 예를 들면, 연속적인 테이블 엔트리들 대신에 다수의 비연속 메모리 세그먼트들이 사용될 수 있다. 숫자(230)는 표준 CAN 식별자(SID)를 포함하며, 숫자(240)는 확장 식별자와 DLC 엔트리를 포함한다. 이어지는 2개의 32비트 워드들(250, 260)은 CAN 메시지의 8 데이터 바이트를 포함한다. 다른 버퍼 디스크립터 테이블이 설계될 수 있다. 다양한 실시예에 따른 기본 요건은 다음 테이블 엔트리에 대한 포인터뿐만 아니라 실제 데이터 로드를 포함하는 것이다. 또한, 상태 정보 및 다수의 식별자 정보가 추가될 수 있다. 각각의 엔트리의 순서는 변할 수 있고, 임계적이지 않다.
디스크립터 테이블 제어 유닛(460)은 도 4에 도시된 특별하게 설계된 버퍼 디스크립터 테이블과 함께 동작한다. 도 3은 메시지 어셈블리 버퍼 시프트 레지스터(490)에 수신된 표준 메시지와 CAN 메시지를 도시한다. 주요 차이는 추가적인 전송 식별자인데, 확장 버전에 있어서 추가적인 29비트의 일부는 표준 11비트 식별자에 제공된다. 양 버전 모두 데이터 페이로드는 8 바이트들이다. 그러므로, CAN 메시지를 저장하기 위하여, 최대 14 바이트들이 요구된다. 수신하면, 어셈블링된 메시지는 병렬로 디스크립터 테이블 제어 유닛(460)으로 포워딩된다. 디스크립터 테이블 제어 유닛(460)은 마스크 레지스터들(415, 420), 필터 레지스터들(425, 430) 및 평가 로직(435, 440, 450)을 통해 발생한 모든 필요 제어 신호를 수신한다. 버퍼로 전송될 유효 메시지를 수신한 후에, 디스크립터 테이블 제어 유닛(460)은 메시지 어셈블리 버퍼로부터 수신한 데이터를 이용하여, 도 4에 도시된 버퍼 디스크립터 테이블 엔트리를 생성한다. 버퍼 디스크립터 테이블 엔트리가 제1 테이블 엔트리이면, 시작 테이블 어드레스는 연관된 제어 레지스터로부터 검색될 수 있다. 한편, 이전에 저장된 테이블 엔트리의 필드(220)로부터 다음 이용가능한 어드레스를 사용한다. 그러므로 어떤 전용 버퍼 메모리, 특히, 집적 회로 상에 상당한 실제 면적을 요구하는 FIFO가 필요하지 않다. 본 발명에 따른 다양한 실시예들은, 그들 각각의 복잡성 없이 USB & 이더넷 디바이스와 유사한 외관 및 느낌을 제공한다. 제어 유닛은 요구된 메모리와 로직을 상당히 많이 절약하는 제1 메모리 엔트리에 대한 포인터를 저장해야만 한다.
예를 들면, 맬록(malloc) 또는 다른 적당한 메모리 할당 명령어와 같은 고 레벨 명령어들을 통해, 사용자 프로그램은 CAN 컨트롤러에 메모리 공간을 할당할 수 있고, 디스크립터 테이블 제어 유닛(460)에 시작 및 종료 어드레스를 배정할 수 있다. 그 후 사용자 프로그램은 각각의 테이블 엔트리를 간단하게 검색할 수 있는데, 각 테이블 엔트리 내의 고정 할당은 매우 빠른 검색을 가능하게 한다. 버퍼의 크기가 메모리 크기에 의해서만 한정되므로, 매우 유연한 버퍼 관리가 적용될 수 있는데, 이 경우 데이터는 쉽게 잃어질 수 없다. 도 4에 도시된 버퍼 디스크립터 테이블은 메모리에 저장된 테이블 엔트리로부터 실제 CAN 메시지를 위하여 4개의 워드 독출만을 요구한다. 상태 필드는 모든 필요 정보를 쉽게 업데이트하고 포함할 수 있다. 타임 스탬프 엔트리들은 제어 유닛에 의해 쉽게 포함될 수 있다.
또한, 실제 데이터 로드는 항상 테이블 엔트리에 저장되고, 예를 들면, 각 테이블 엔트리의 시작 어드레스로부터 4개의 32비트 워드들(도 4 참조)의 일정한 오프셋을 가진다. 이 구조에서 요구된 정보의 빠른 검색을 허용하는 어떤 변수 길이도 없다.
도 5는 데이터가 RAM(470)에 어떻게 저장되는지를 도시한다. 전용 제어 레지스터에 저장될 수 있는 CAN 버퍼 시작 어드레스는 테이블 엔트리의 시작을 나타낸다. 각 테이블 엔트리의 제2 32비트 데이터 워드는, 실선 라인에 의해 도시된 바와 같이 연속적이거나 파선 라인에 의해 도시된 바와 같이 비연속적일 수 있는 다음 테이블 엔트리의 실제 어드레스를 포함한다.
필터 레지스터들(425, 430)에 저장된 필터 값과 송신된 식별자의 비교는 병렬 방식이 아닌 비트-와이즈(bit-wise) 방식으로 행해진다. 그러므로 상대적으로 실리콘 실제 면적 중에서 큰 영역을 필요로 하는 병렬 비교기들은 피할 수 있다. CAN 프로토콜 엔진(495)에 의해 제공된 직렬 데이터 스트림은 모든 비트 비교기 유닛들(435, 440)에 직접 공급되는 식별자를 포함한다. 시퀀서 및 제어 유닛(410)은 비트 비교기 유닛들(435, 440)로 해당 비트가 출력되도록, 마스크 레지스터들(415, 420) 및 필터 레지스터들(425, 430)을 어드레싱한다. 비트 비교기 유닛(435, 440)은 모든 필터 레지스터 비트들과 프레임 내의 대응되는 각각의 식별자 비트를 비교한다. 그 비교 결과와 대응되는 각각의 마스크 레지스터 비트를 비교함으로써, 그 비교 결과는 더 처리된다. 이 때문에, 각 필터 레지스터(425, 430)의 추가적인 저장 비트들은 이 비교를 위해 어느 마스크 레지스터가 사용되었는지를 나타낼 수 있다. 이 기능은 이하에서 더 상세하게 설명될 것이다. 최종 비교 결과는 프레임 내의 각 식별자의 모든 비트들에 대하여 축적될 것이다. 단일 비교가 실패하면, 수용 신호는 발생하지 않을 것이다. 모든 비트 비교가 포지티브이면, 수용 신호는 디스크립터 테이블 제어 유닛(460)과 OR 게이트(455)의 대응되는 각각의 입력에 제공될 것이다.
도 6은 도 1에서의 CAN 프로토콜 엔진(480)을 더 상세하게 도시한다. 프로토콜 엔진(480)은 복수의 기능 블록을 결합한다. 엔진(480)의 핵심은 프로토콜 유한 상태기(finite state machine : FSM)(310)다. 이 상태기는 비트 바이 비트(bit by bit) 단위의 메시지들을 차례로 배열하고, 상태기의 상태 변경은 다양한 타입의 프레임에 대한 다양한 필드로서 전송되거나 수신된다. FSM(310)는 RX/TX 시프트 레지스터(320, 325), CRC 레지스터(330), 수신 버스 라인(350)과 송신 버스 라인(360)의 순차적인 데이터 스트림을 각각 제어하는 시퀀서이다. 시프트 레지스터(320, 325)는 메시지 어셈블리 레지스터(490)의 부분일 수 있다. 추가적인 구성요소들(355, 356)은 데이터 스트림들을 변환하기 위하여 제공되어, 버스 라인들(350, 360)의 각각의 타이밍을 조정한다. 또한, FSM은 에러 관리 로직(Error Management Logic)(340)(EML)과 TX/RX 시프트 레지스터(320, 325)와 CAN 모듈의 다른 부품들 간의 병렬 데이터 스트림(RecData)을 제어한다. 수신 중재, 전송 및 에러 시그널링의 처리는 CAN 프로토콜에 따라서 처리된다. 또한, FSM(310)은 버스 라인 상의 모든 자동 전송 메시지들을 처리한다.
프로토콜 엔진(480)으로의 데이터 인터페이스는 바이트 와이드(byte wide) 송신 또는 수신 데이터로 이루어진다. 전체 프레임을 어셈블링 또는 시프팅하는 대신에, 프레임들은 바이트들로 나눈다. 프로토콜 FSM(310)으로부터의 수신 또는 송신 어드레스는 프레임의 어떤 바이트가 현재인지를 나타낸다. 전송을 위하여, 전송 버퍼로부터 적절한 바이트가 선택되어 엔진에 제공되며, 엔진은 그 후 데이터를 직렬로 만들기 위하여 8비트 시프트 레지스터를 사용한다. 수신을 위하여, 8비트 시프트 레지스터는 그 후 메시지 어셈블리 버퍼(490)의 적절한 바이트 내로 로딩되는 바이트를 어셈블링한다.
순환 중복 검사 레지스터(cyclic redundancy check register)(330)는, 순환 중복 검사(CRC) 코드가 데이터 바이트들에 걸쳐 전송되게 하고, 또한 입력되는 메시지의 CRC 코드를 검사한다. EML(340)은 CAN 디바이스의 결점을 제한할 책임이 있다. 카운터들, 즉 수신 에러 카운터 및 송신 에러 카운터는 비트 스트림 프로세서로부터의 명령어들에 의해 증가 또는 감소된다. 에러 카운터들의 값들에 따라, CAN 컨트롤러는 에러 액티브(active), 에러 패시브(passive) 또는 버스 오프(bus off) 상태로 세팅된다.
유닛(355) 내부의 비트 타이밍 로직(Bit Timing Logic)(BTL)은 CAN 프로토콜 에 따라, 버스 라인 입력을 감시하고, 버스 라인 관련 비트 타이밍을 처리한다. CAN 컨트롤러는 스스로 우성 비트를 송신하지 못할지라도, BTL은 프레임의 시작에서 열성으로부터 우성 버스 라인 천이로, 그리고 어떤 추가된 열성에서 우성 버스 라인 천이로 동기화한다. 또한, BTL은 프로그램가능한 타임 세그먼트들을 제공하여, 전파 지연 시간 및 위상 시프프들을 보상하며, 그리고 비트 타임에서의 샘플 포인트(Sample Point)의 위치를 정의한다.
도 7은 비교기 유닛의 바람직한 예를 도시한다. 단일 비트 비교기 유닛을 상세하게 도시하지만, 상황에 따라 다른 비트 비교기를 적용할 수 있다. 숫자(600)는 메시지 어셈블리 버퍼 레지스터(490)와 배타적인 NOR 게이트(690)의 제1 입력으로 공급되는 CAN 직렬 데이터 스트림을 제공하는 유닛을 나타낸다. 필터 레지스터(620)의 단일 비트 출력은 그 출력이 NOR 게이트(650)의 제1 입력에 연결된 배타적인 NOR 게이트(690)의 제2 입력에 연결된다. NOR 게이트(650)의 제2 입력은 마스크 레지스터(630)로부터의 단일 비트 출력 신호를 수신한다. NOR 게이트(650)의 출력은 그 출력이 D-플립플롭(670)의 제어 입력에 연결된 AND 게이트(660)의 제1 입력에 연결된다. D-플립플롭(670)의 입력 D는 "Vcc"와 같은 논리 "로우"(low) 신호에 연결된다. D-플립플롭(670)의 반전 출력은 그 출력이 수용 신호를 제공하는 AND 게이트(640)에 연결된다. AND 게이트들(640, 660)은 대응하는 각각의 입력 신호들과 함께 동기화를 위하여 이용된 제2 입력들(ACC_RDY, BIT_RDY)를 각각 포함한다. 각 프레임 내에 비교를 위해 이용될 대응되는 각각의 비트들을 선택하도록, 비트 선택 로직(610)은 필터 레지스터(620)와 마스크 레지스터(630)에 연결된다.
입력되는 CAN 비트 스트림은 비트 선택 로직(610)과 함께 동기화된다. 즉, 비트 선택 로직(610)은 직렬 비트 스트림의 입력되는 비트에 대응하는 필터 레지스터(620) 및 마스크 레지스터(630) 내의 각각의 비트를 선택한다. 실제 비교기는 양 입력 신호가 동일한 경우에만 그 출력에서 논리 "하이"가 발생하는 배타적인 NOR 게이트(690)에 의해 형성된다. 마스크 레지스터(630) 내의 대응하는 각각의 비트가 세팅되어 있으면, NOR 게이트(650)는 결과를 마스킹하기 위한 마스크 유닛으로 이용된다. D-플립플롭(670)은 일련의 비교 내의 결과들을 축적하기 위한 레지스터로서 이용되고, 프레임의 시작에서 "1"로 프리세팅된다. 프레임 내의 모든 비교가 성공해야만, 그 후 AND 게이트(640)의 출력에서 수용 신호(AccN)가 발생할 것이다. 한편, D-플립플롭(670)이 결점 비교 결과에 의해 "0"으로 세팅되면, 프레임의 끝까지 "0"을 유지한다. 2개의 신호(ACC_RDY, BIT_RDY)를 이용하여, 대응하는 각각의 신호들을 동기화하고 활성시킨다.
도 8은 기능을 더 구비한 비트 비교기 유닛(435, 440)의 다른 바람직한 예를 더욱 상세하게 도시한 도면이다. 다시, 비트 비교기 유닛을 상세하게 도시하지만, 상황에 따라 다른 비트 비교기를 적용할 수 있다. 마스크 레지스터들(415, 420)의 출력들은 4:1 멀티플렉서(520)의 제1 및 제2 입력에 연결된다. 추가적인 입력들(560, 570)은 멀티플렉서(520)의 제3 및 제4 입력에 제공될 수 있다. 예를 들면, 입력(560)은 숫자(580)로 도시된 필터 레지스터 15의 출력에 연결된다. 필터 레지스터(425)는 2개의 추가적인 출력을 포함하는데, 그들 중의 하나는 예를 들면, 멀티플렉서(520)의 선택 입력에 연결된다. 멀티플렉서(520)는 모든 크기를 가질 수 있는데, 예를 들면 N으로 마스크 수를 증가시키는 N:1 멀티플렉서로 확대될 수 있다. 멀티플렉서(520)의 출력은 NOR 게이트(530)의 제1 입력에 연결된다. NOR 게이트(530)는 비교 결과 이용될지 또는 무시될지를 나타내는 확인 유닛으로서 동작한다. NOR 게이트(530)의 제2 입력은, 제1 입력이 필터 레지스터(425)로부터 비트 출력 신호를 수신하고, 제2 입력이 CAN 프로토콜 엔진(495)으로부터 직렬 데이터 스트림을 수신하는 배타적인 NOR 게이트(510)의 출력에 연결된다. NOR 게이트(530)의 출력은 D-플립플롭(540)의 제어 입력에 연결된다. D-플립플롭(540)의 D 입력은 논리 로우 신호를 수신한다. 수용 신호는 D-플립플롭(540)의 반전 출력에 실린다.
일실시예에 따르면, 제1 비교 단계는 배타적인 NOR 게이트(510)에 의해 형성된다. 이 단계에서, 직렬 비트 스트림의 식별자 비트들은 필터 레지스터(425)의 대응하는 각각의 비트들과 비교된다. 배타적인 NOR 게이트(510)는 양 입력 신호가 동일한 경우에만 그 출력에서 논리 "하이"가 발생한다. 시퀀서 유닛(410)은 필터 레지스터(425) 내의 대응하는 각각의 비트들을 선택한다. 필터 레지스터(425)는 어느 마스크 레지스터가 이용되어야 하는지를 나타내는 추가적인 데이터 비트들을 포함한다. 이 바람직한 예에서는 4개의 다른 값들이 선택될 수 있다. 마스크 레지스터들(415, 420) 중 어느 하나가 선택될 수 있거나, 제3 값이 다른 필터 레지스터, 예를 들면 필터 레지스터 15에 의해 제공될 수 있다. 제4 가능 선택(570)이 각각의 레벨, 예를 들면 논리 "1"을 제공하도록 사용됨으로써, 어떤 마스크도 이용될 수 없음을 표시할 수 있다. 그러므로, 각 필터 레지스터(425, 430)에는 개별적인 마스크 기능이 할당될 수 있다. 선택된 마스크 값은 NOR 게이트(530)의 제1 입력에 공급될 것이다. 마스크 값이 필터 레지스터(425)의 각각의 비트가 이용되는 것임을 나타내면, NOR 게이트(530)는 제어 가능한 스위치로서 동작하여 D 플립플롭(540)의 제어 입력으로 배타적인 NOR 게이트(510)의 비교 결과를 공급할 것이다. D 플립플롭(540)은 "1"로 프리세팅된 레지스터로서 이용된다. 하나의 비교 결과가 동일하지 않음을 표시함에 있어 네거티브이고 각각의 마스크 비트가 유효하면, D 플립플롭(540)은 클리어되고, 수용 신호(550)는 발생하지 않을 것이다. 그러므로 D 플립플롭(540)는 "0"으로 리셋될 것이다. 상술한 바와 같이, D 플립플롭(540)은 다른 식별자를 비교하기 위하여 다음 프레임에 대하여 시작하면 다시 "1"로 프리세팅될 것이다.
어떠한 다른 타입의 적절한 로직도 비교기를 구현하기 위하여 사용될 수 있다. 예를 들면, 제어가능한 스위치들, 동등한 불린 오퍼레이터들 등이 사용될 수 있다. 더욱이 유효 유닛은 비교기 앞이나 뒤에 배치될 수 있다. 유효 유닛의 본질적인 기능은 선택된 비트들을 포함하거나 비교로부터 그들을 배제하는 것이다.

Claims (20)

  1. 랜덤 액세스 메모리; 및
    어셈블링된 컨트롤러 영역 네트워크(CAN) 메시지를 수신하는 제어 유닛을 포함하는 CAN 컨트롤러를 포함하고,
    상기 제어 유닛은 상기 어셈블링된 CAN 메시지를 이용하여 버퍼 디스크립터 테이블 엔트리를 발생시키고, 상기 버퍼 디스크립터 테이블 엔트리를 상기 랜덤 액세스 메모리에 저장하고,
    상기 버퍼 디스크립터 테이블 엔트리는 상기 CAN 메시지로부터의 적어도 메시지 식별자와 로드 데이터, 및 다음 버퍼 디스크립터 테이블 엔트리의 정보를 포함하는 것을 특징으로 하는 마이크로컨트롤러.
  2. 제1항에 있어서,
    상기 버퍼 디스크립터 테이블 엔트리는 일정한 크기를 갖는 것을 특징으로 하는 마이크로컨트롤러.
  3. 제1항에 있어서,
    상기 버퍼 디스크립터 테이블 엔트리는 프레임 상태 및 확장 CAN 메시지 식별자를 더 포함하는 것을 특징으로 하는 마이크로컨트롤러.
  4. 제1항에 있어서,
    상기 마이크로컨트롤러는 32 비트 마이크로컨트롤러이고,
    상기 버퍼 디스크립터 테이블 엔트리는 6개의 32 비트 워드들로 이루어진 것을 특징으로 하는 마이크로컨트롤러.
  5. 제1항에 있어서,
    상기 버퍼 디스크립터 테이블 엔트리는 프레임 상태 워드, 다음 어드레스 위치 워드, 메시지 식별자 워드, 확장 메시지 식별자 워드, 4개의 바이트들을 포함하는 제1 데이터 워드, 및 4개의 바이트들을 포함하는 제2 데이터 워드를 포함하는 것을 특징으로 하는 마이크로컨트롤러.
  6. 제1항에 있어서,
    상기 랜덤 액세스 메모리는 듀얼 포트 메모리 또는 멀티 포트 메모리인 것을 특징으로 하는 마이크로컨트롤러.
  7. 제1항에 있어서,
    상기 CAN 컨트롤러는 상기 제어 유닛에 결합되는 메시지 어셈블리 버퍼 시프트 레지스터를 포함하는 것을 특징으로 하는 마이크로컨트롤러.
  8. 제7항에 있어서,
    상기 CAN 컨트롤러는 복수의 마스크 레지스터와 복수의 필터 레지스터들을 상기 제어 유닛에 결합시키는 로직을 포함하고,
    상기 로직은 상기 메시지 어셈블리 버퍼 시프트 레지스터에 유효 엔트리를 나타내는 신호를 발생시키는 것을 특징으로 하는 마이크로컨트롤러.
  9. 컨트롤러 영역 네트워크(CAN) 메시지를 마이크로컨트롤러 내에 저장하기 위한 방법으로서,
    CAN 메시지를 수신하는 단계;
    상기 CAN 메시지를 어셈블링하는 단계;
    상기 어셈블링된 CAN 메시지를 이용하여 버퍼 디스크립터 테이블 엔트리를 발생시키는 단계; 및
    상기 버퍼 디스크립터 테이블 엔트리를 상기 마이크로컨트롤러의 랜덤 액세스 메모리에 저장하는 단계를 포함하고,
    상기 버퍼 디스크립터 테이블 엔트리는 상기 CAN 메시지로부터의 적어도 메시지 식별자와 로드 데이터, 및 다음 버퍼 디스크립터 테이블 엔트리의 정보를 포함하는 것을 특징으로 하는 CAN 메시지 저장 방법.
  10. 제9항에 있어서,
    상기 CAN 메시지는 표준 CAN 메시지와 확장 CAN 메시지를 포함하는 것을 특징으로 하는 CAN 메시지 저장 방법.
  11. 제9항에 있어서,
    상기 버퍼 디스크립터 테이블 엔트리는 일정한 크기를 갖는 것을 특징으로 하는 CAN 메시지 저장 방법.
  12. 제9항에 있어서,
    상기 버퍼 디스크립터 테이블 엔트리는 프레임 상태 및 확장 CAN 메시지 식별자를 더 포함하는 것을 특징으로 하는 CAN 메시지 저장 방법.
  13. 제9항에 있어서,
    상기 마이크로컨트롤러는 32 비트 마이크로컨트롤러이고,
    상기 버퍼 디스크립터 테이블 엔트리는 6개의 32 비트 워드들로 이루어진 것을 특징으로 하는 CAN 메시지 저장 방법.
  14. 제9항에 있어서,
    상기 버퍼 디스크립터 테이블 엔트리는 프레임 상태 워드, 다음 어드레스 위치 워드, 메시지 식별자 워드, 확장 메시지 식별자 워드, 4개의 바이트들을 포함하는 제1 데이터 워드, 및 4개의 바이트들을 포함하는 제2 데이터 워드를 포함하는 것을 특징으로 하는 CAN 메시지 저장 방법.
  15. 제9항에 있어서,
    상기 랜덤 액세스 메모리는 듀얼 포트 메모리 또는 멀티 포트 메모리인 것을 특징으로 하는 CAN 메시지 저장 방법.
  16. 제9항에 있어서,
    상기 CAN 메시지를 어셈블링하는 단계는 메시지 어셈블리 버퍼 시프트 레지스터에 의해 수행되는 것을 특징으로 하는 CAN 메시지 저장 방법.
  17. 제16항에 있어서,
    상기 메시지 어셈블리 버퍼 시프트 레지스터에 유효 엔트리를 나타내는 복수의 마스크 레지스터 및 복수의 필터 레지스터들에 의해 유효 신호를 발생시키는 단계를 더 포함하는 것을 특징으로 하는 CAN 메시지 저장 방법.
  18. 듀얼 포트 32 비트 폭 랜덤 액세스 메모리; 및
    어셈블링된 컨트롤러 영역 네트워크(CAN) 메시지를 수신하는 제어 유닛을 포함하는 CAN 컨트롤러를 포함하고,
    상기 제어 유닛은 상기 어셈블링된 CAN 메시지를 이용하여 버퍼 디스크립터 테이블 엔트리를 발생시키고, 상기 버퍼 디스크립터 테이블 엔트리를 상기 랜덤 액세스 메모리에 저장하고,
    상기 버퍼 디스크립터 테이블 엔트리는 32 비트 프레임 상태 워드, 32 비트 다음 어드레스 위치 워드, 32 비트 메시지 식별자 워드, 32 비트 확장 메시지 식별자 워드, 제1 32 비트 데이터 워드, 및 제2 32 비트 데이터 워드로 이루어지는 것을 특징으로 하는 32 비트 마이크로컨트롤러.
  19. 제18항에 있어서,
    상기 CAN 컨트롤러는 상기 제어 유닛에 결합되는 메시지 어셈블리 버퍼 시프트 레지스터를 포함하는 것을 특징으로 하는 32 비트 마이크로컨트롤러.
  20. 제19항에 있어서,
    상기 CAN 컨트롤러는 복수의 마스크 레지스터 및 복수의 필터 레지스터들을 상기 제어 유닛과 결합시키는 로직을 포함하고,
    상기 로직은 상기 메시지 어셈블리 버퍼 시프트 레지스터에 유효 엔트리를 나타내는 신호를 발생시키는 것을 특징으로 하는 32 비트 마이크로컨트롤러.
KR1020117022046A 2009-05-28 2010-05-21 버퍼 디스크립션 테이블을 이용하는 can 모듈을 구비한 마이크로컨트롤러 KR101708876B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US18172009P 2009-05-28 2009-05-28
US61/181,720 2009-05-28
US12/776,046 US8650356B2 (en) 2009-05-28 2010-05-07 Microcontroller with CAN module
US12/776,046 2010-05-07
PCT/US2010/035767 WO2010138416A1 (en) 2009-05-28 2010-05-21 Microcontroller with can module using a buffer description table

Publications (2)

Publication Number Publication Date
KR20120014554A KR20120014554A (ko) 2012-02-17
KR101708876B1 true KR101708876B1 (ko) 2017-02-21

Family

ID=43221568

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117022046A KR101708876B1 (ko) 2009-05-28 2010-05-21 버퍼 디스크립션 테이블을 이용하는 can 모듈을 구비한 마이크로컨트롤러

Country Status (5)

Country Link
US (1) US8650356B2 (ko)
EP (1) EP2436150B1 (ko)
KR (1) KR101708876B1 (ko)
CN (1) CN102326363B (ko)
WO (1) WO2010138416A1 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9219597B2 (en) * 2011-01-25 2015-12-22 Abb Technology Ag Method and transmission protocol for transmission of data among devices sharing a communication channel
EP2521319B1 (en) * 2011-05-02 2015-10-14 Robert Bosch GmbH Controller area network with flexible data-rate
GB201206409D0 (en) * 2012-03-26 2012-05-23 Continental Automotive Systems Method and apparatus to reduct flash memory device programming time over a C.A.N. bus
CN103248520A (zh) * 2013-04-28 2013-08-14 安徽江淮汽车股份有限公司 一种can总线的总线脱离故障处理方法及系统
ES2652117T3 (es) * 2013-07-04 2018-01-31 Omicron Electronics Gmbh Transmisión de datos a través de una memoria de un dispositivo de comunicación
US9288048B2 (en) * 2013-09-24 2016-03-15 The Regents Of The University Of Michigan Real-time frame authentication using ID anonymization in automotive networks
US9892073B1 (en) 2014-10-06 2018-02-13 Master Lock Company Llc Bus addressing systems and methods using repurposed bits
DE102015105134A1 (de) 2015-04-02 2016-10-06 Dr. Ing. H.C. F. Porsche Aktiengesellschaft Steuergerät zum Verbinden eines CAN-Busses mit einem Funknetzwerk und Kraftfahrzeug mit einem solchen Steuergerät
DE102015105110A1 (de) 2015-04-02 2016-10-06 Dr. Ing. H.C. F. Porsche Aktiengesellschaft Steuergerät zum Verbinden eines CAN-Busses mit einem Funknetzwerk und Kraftfahrzeug mit einem solchen Steuergerät
DE102015105112A1 (de) 2015-04-02 2016-10-06 Dr. Ing. H.C. F. Porsche Aktiengesellschaft Steuergerät zum Verbinden eines CAN-Busses mit einem Funknetzwerk und Kraftfahrzeug mit einem solchen Steuergerät
US10361934B2 (en) * 2015-09-28 2019-07-23 Nxp B.V. Controller area network (CAN) device and method for controlling CAN traffic
US10129150B2 (en) 2015-12-01 2018-11-13 Marvell World Trade Ltd. Systems and methods for implementing a switched controller area network
DE102017002806B4 (de) * 2017-03-23 2018-10-04 WAGO Verwaltungsgesellschaft mit beschränkter Haftung Koppler für ein Automatisierungssystem
CN108199941B (zh) * 2017-12-29 2022-03-08 北京纳米维景科技有限公司 一种基于can2.0b的can总线通信方法
TWI678902B (zh) * 2018-11-28 2019-12-01 中華電信股份有限公司 針對應用進行封包處理/交換的網路系統與方法
US10992516B2 (en) * 2018-12-13 2021-04-27 Honeywell International Inc. Efficient self-checking redundancy comparison in a network
CN110808891B (zh) * 2019-09-30 2021-10-12 深圳市道通合创新能源有限公司 一种can过滤器合并的方法、装置及can控制器
KR102275145B1 (ko) * 2019-12-30 2021-07-07 현대오트론 주식회사 베이직 캔 메시지 송신 방법 및 베이직 캔 컨트롤러
KR20220001350A (ko) * 2020-06-29 2022-01-05 주식회사 엘지에너지솔루션 네트워크 라우팅 장치 및 방법
US20230379186A1 (en) * 2020-10-14 2023-11-23 Lg Electronics Inc. Method for transmitting message at high rate by vehicle
KR102471960B1 (ko) * 2020-11-18 2022-11-30 한국자동차연구원 차량용 can 통신 보안 장치 및 방법
CN113852533B (zh) * 2021-09-27 2022-06-07 北京微纳星空科技有限公司 一种多通道数据通信系统、方法及电子设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080162860A1 (en) 2006-12-27 2008-07-03 Freescale Semiconductor, Inc. Dynamic allocation of message buffers

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2684362B2 (ja) * 1986-06-18 1997-12-03 株式会社日立製作所 可変長データの記憶方式
US6604156B1 (en) 1999-09-15 2003-08-05 Koninklijke Philips Electronics N.V. Message buffer full handling in a CAN device that employs reconfigurable message buffers
US6944739B2 (en) * 2001-09-20 2005-09-13 Microchip Technology Incorporated Register bank
CN100375484C (zh) 2003-12-31 2008-03-12 中兴通讯股份有限公司 Pos-phy总线与pci总线间的数据包转发的装置
US7882505B2 (en) * 2005-03-25 2011-02-01 Oracle America, Inc. Method and apparatus for switching between per-thread and per-processor resource pools in multi-threaded programs

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080162860A1 (en) 2006-12-27 2008-07-03 Freescale Semiconductor, Inc. Dynamic allocation of message buffers

Also Published As

Publication number Publication date
CN102326363B (zh) 2014-10-29
EP2436150A1 (en) 2012-04-04
EP2436150B1 (en) 2013-04-03
US20100306457A1 (en) 2010-12-02
WO2010138416A1 (en) 2010-12-02
US8650356B2 (en) 2014-02-11
CN102326363A (zh) 2012-01-18
KR20120014554A (ko) 2012-02-17

Similar Documents

Publication Publication Date Title
KR101708876B1 (ko) 버퍼 디스크립션 테이블을 이용하는 can 모듈을 구비한 마이크로컨트롤러
KR101702352B1 (ko) 컨트롤러 영역 네트워크 데이터 페이로드 연결 방법
US7979594B2 (en) Serial communications device with dynamic allocation of acceptance masks using serial implementation
US5299313A (en) Network interface with host independent buffer management
EP1718008B1 (en) Gateway apparatus and routing method
EP0682791B1 (en) Network adapter with host interrupt and indication management
US5392406A (en) DMA data path aligner and network adaptor utilizing same
US6944739B2 (en) Register bank
JP2011514111A (ja) 通信ネットワークの直列データバスを介して当該ネットワークの加入者に到着したメッセージについての情報を格納するための方法及びフィルタ構成
US20090282179A1 (en) Method and system of grouping interrupts from a time-dependent data storage means
US5655104A (en) System for reading dynamically changing data
US7984210B2 (en) Method for transmitting a datum from a time-dependent data storage means
EP1430653B1 (en) Serial communication device with dynamic filter allocation
US6912594B2 (en) Serial communication device with multi-mode operation of message receive buffers
US7076517B2 (en) Serial communication device with dynamic filter allocation
US7747904B1 (en) Error management system and method for a packet switch
US7610441B2 (en) Multiple mode content-addressable memory
US9497141B2 (en) Switch point having look-ahead bypass
WO2022259832A1 (ja) 通信装置及びデータ通信方法

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right