UART_ 통신프로토콜사용자메뉴얼 리얼시스 TEL : 031-342-3000 FAX : 031-343-0003 주소 : 경기도안양시동안구호계동 1027번지안양IT밸리 504호 - 1 -
[ 공통용어설명 ] 통신프로토콜 UART_ Analyzer 통신프로토콜공통형식 1. 동작요청명령및정상응답구조 시작문자 명령코드 Hex ASCII 데이터문자열 Check Sum 끝문자 : Y, Z, G, U XX XX XX 0x0D W, R, I, V 1문자 1문자 2문자 1문자 2. 통신에러응답구조 시작문자 명령코드 에러코드 끝문자? Y, Z, G, U XX 0x0D W, R, I, V 1문자 1문자 2문자 1문자 시작문자통신프로토콜의시작을알리는문자코드 (1문자) 로서위와같이정상적인요청및응답시에는 : 문자이며에러시에는? 문자로구분함 끝문자통신프로토콜의끝을알리는문자코드 (1문자) 로서 UART_ Analyzer에서는끝문자도착시수신한통신프로토콜을해석하여해당하는명령동작을수행하고대응하는응답을보냅니다. 예외 ) 송신데이터쓰기 명령의경우에는현재 Network가 Idle 상태이면바로데이터를송신할수있으나그렇지않은경우에는 Network가 Idle 상태일때가지기다리다가송신합니다. 그리고송신이성공적으로끝나면정상응답을 PC측에보냅니다. 따라서사용자께서는 송신데이터쓰기 명령처리시일정시간이경과했는데도응답이없으면문제가있는것으로판단하여 리셋 명령을실행하시길바랍니다. 또한일부기능 ( 데이터수신, 에러로인한자동리셋, 에러정보알림 ) 의프로토콜은 PC측의요청이없어도해당이벤트발생시 PC측으로전송합니다. 따라서 PC측 Application을제작하는개발자께서는 Thread 방식의통신구조를 PC측프로그램을제작하시길바랍니다. Hex ASCII 데이터문자열이란? 통신프로토콜에서시작문자, 명령, 끝문자를제외한모든데이터표현에사용하는방식으로일련의 Hex 데이터값들을대응하는 ASCII코드 ( 0 ~ F ) 문자열로표현하는방식입니다. 따라서 PC 프로그램에서는 UART_ Analyzer 모듈로프로토콜명령전송시에는일련의 Hex 데이터값을대응하는 Hex-ASCII 문자열로바꿔전송하고, 반대로 UART_ Analyzer 모듈에서 PC로프로토콜명령수신시에는 Hex ASCII 문자열을일련의 Hex 값으 - 2 -
로바꿔해석을하시길바랍니다. Ex) 일련의 Hex 데이터값 (0x2C 0x4F 0x82 0x7D) -> Hex ASCII 문자열 ( 2C4F827D ) 에러코드 01 : 지원되지않는명령코드수신시에러코드 02 : 통신프로토콜규칙에위배시에러코드 03 : 통신프로토콜 Check Sum이맞지않을시에러코드 Check Sum 계산방법통신프로토콜에서시작문자, 끝문자를제외한나머지를모두더한후 0xFF로 And 연산한결과의 1바이트값에대응하는 Hex ASCII 문자열 ex) 통신프로토콜 ( 시작문자, 끝문자제외 ) : G10 인경우 Check Sum = ( G + 1 + 0 ) & 0xFF한 Hex ASCII 문자열 [ 통신관련부연설명 ] BPS(Baud-Rate : 최대 1Mbps) 설정 UART_ Analyzer에서는특이한 BPS를사용할수있도록 환경설정쓰기 명령프로토콜을통해직접 BPS를설정할수있도록하였습니다. [ UART_ Analyzer Bit Time Segments ] SyncSeg : 0값으로고정, 즉 1TQ로고정 Sample Point : One Sampling Mode, 60% ~ 70% Sample Point 사용권장 [ UART_ Analyzer의 BPS 설정관련레지스터 ] BRP : Baud-Rate Prescaler Register( 설정값범위 : 0 ~ 63) PRSEG : Propagation Segment Register( 설정값범위 : 0 ~ 7) PHSEG1 : Phase Segment Register( 설정값범위 : 0 ~ 7) PHSEG2 : Phase Segment Register( 설정값범위 : 0 ~ 7) [ UART_ Analyzer의 BPS 공식 ] BPS = 16MHz/(2*(BRP+1))*((PRSEG+1) + (PHSEG1+1) + (PHSEG2+1) + 1) - 3 -
[UART_ Analyzer 의 BPS 설정관련준수항목 ] 1) PHSEG2 > 0 2) PRSEG + PHSEG1 + 1 >= PHSEG2 [ Reference BPS Register Value ] BPS BRP PRSEG PHSEG1 PHSEG2 1M 0 0 2 2 500K 0 2 5 5 250K 1 2 5 5 200K 3 0 3 3 125K 3 2 5 5 100K 3 2 7 7 50K 7 2 7 7 40K 7 7 7 7 25K F 2 7 7 20K F 7 7 7 수신 ID 와수신 Mask ID 란? 일반적으로 통신에서는수신 ID와수신 Mask ID를조합하여 네트워크상의모든메시지중보고자하는메시지를필터링하여통신처리부하를조절합니다. 수신 ID는보고자하는메시지 ID를나타내며, 수신 Mask ID는수신한모든데이터에대해서설정한수신 ID의해당비트와일치하는지를검사하여일치하면데이터를수신하고일치하지않으면데이터를수신하지않습니다. Ex) 2.0A모드에서수신 ID : 0x0107, 수신 Mask ID : 0x00F로설정한경우설정한수신 Mask ID 중 1인비트 ( 하위 4비트 ) 에해당하는설정수신 ID 값 0x7( 하위 4 비트 ) 과일치하는메시지만수신함. 즉 0xXX7인 (X: Don t Care) 메시지는모두수신함. 2.0A(Standard 모드 ) 와 2.0B(Extended Mode) 2.0A(Standard 모드 ) : 메시지 ID가 11비트인모드 (0x000 ~ 0x7FF) 2.0B(Extended 모드 ) : 메시지 ID가 29비트인모드 (0x00000000 ~ 0x1FFFFFFF) 메시지의경우송 / 수신데이터의최대길이가 8Bytes이므로일부사용자께서는 메시지의 ID 중일부를데이터용으로사용하기도함. - 4 -
의 Data Frame과 Remote Frame Data Frame 송 / 수신메시지가일반적인데이터를포함한메시지임을의미함. Remote Frame 일반적으로 Remote Frame 형식의 송 / 수신메시지는데이터를포함하고있지않으며 (Data Length가 0인경우 ) 네트워크에연결된특정 Node(Slave) 의장치에게원하는데이터를송신하라고할때많이쓰이는메시지형식입니다. 에러종류일반적으로 장치들은내부에송 / 수신에러카운터를가지고있으며송 / 수신에문제가있으면해당카운터를증가시키며, 정상송 / 수신시에는해당카운터를감소시킵니다. 보통은송 / 수신에러카운터가 255 초과한 Bus-Off 상태일때 Reset 과같은에러처리를수행합니다. Bus-Off 의송 / 수신에러카운터가 255 초과시발생하는에러로써일반적으로 Bus-Off시해당장치는 네트워크에서없는것과같으며일반적으로 을초기화 ( Reset) 를하여다시네트워크에접속을시도함. Transmit Error-Passive 송신에러카운터가 128 초과시발생하는에러 Receive Error-Passive 수신에러카운터가 128 초과시발생하는에러 Transmit Warning 송신에러카운터가 96 초과시발생하는에러 Receive Warning 수신에러카운터가 96 초과시발생하는에러 - 5 -
[ 통신프로토콜 ] 환경설정읽기명령현재 UART_ Analyzer의 수신모드, BPS, 수신 ID, 수신 Mask ID 및 에러정보알림여부그리고 Bus-Off시동작등과같은설정정보를읽어올때사용하는명령 동작요청명령 시작문자 명령코드 Check Sum 끝문자 : Y Hex ASCII 0x0D 1문자 1문자 2문자 1문자 정상응답 시작문자 명령코드 설정데이터 BPS 수신 ID 수신 Mask Check Sum 끝문자 : Y Hex ASCII Hex ASCII Hex ASCII Hex ASCII Hex ASCII 0x0D 1문자 1문자 2문자 8문자 4 or 8문자 4 or 8문자 2문자 1문자 설정데이터 Bit[6:5] Bit[4] Bit[3] Bit[2] Bit[1] Bit[0] 수신모드수신 ID & Bus-Off Bus-Off Error- Warning Mask Type Auto Reset Notify Passive Notify Notify 수신 Mode (5~6번째비트 ) 0 : 2.0A와 2.0B 메시지모두를수신함. 1 : 2.0A 메시지만을수신함. 2 : 2.0B 메시지만을수신함. 수신 ID와 Mask Type (4번째비트 ) 위의수신 Mode가 0인경우 : 이비트가 0인경우 : 수신 ID와 수신 Mask는 2.0A 포맷임. 이비트가 1인경우 : 수신 ID와 수신 Mask는 2.0B 포맷임. 수신 Mode가 1인경우 : 이비트와상관없이 수신 ID와 수신 Mask는 2.0A 포맷임. 수신 Mode가 2인경우 : 이비트와상관없이 수신 ID와 수신 Mask는 2.0B 포맷임. Bus-Off Auto Reset (3번째비트 ) 이비트가 1이면 Bus-Off 발생시자동으로 Reset 동작을수행함. Bus-Off Notify (2번째비트 ) 이비트가 1이면 Bus-Off 발생시에러정보를 PC에알림 Error-Passive Notify (1번째비트 ) - 6 -
이비트가 1 이면 송 / 수신 Error-Passive 발생시에러정보를 PC 에알림 Warning Notify (0 번째비트 ) 이비트가 1 이면 송 / 수신 Warning 발생시에러정보를 PC 에알림 BPS UART_ Analyzer에서사용할 BPS 설정을위한레지스터값 BRP(1Byte) PRSEG(1Byte) PHSEG1(1Byte) PHSEG2(1Byte) 0 ~ 63 0 ~ 7 0 ~ 7 1 ~ 7 [ UART_ Analyzer 의 BPS 공식 ] BPS = 16MHz/(2*(BRP+1))*((PRSEG+1) + (PHSEG1+1) + (PHSEG2+1) + 1) [ UART_ Analyzer 의 BPS 설정관련준수항목 ] 1) PHSEG2 > 0 2) PRSEG + PHSEG1 + 1 >= PHSEG2 수신 ID UART_ Analyzer 의수신메시지의 Acceptance Filter ID 를나타냄. 1) 설정데이터의수신 Mode가 0인경우 : 설정데이터의 ID Type 비트가 0 : 수신 ID는 2.0A 포맷임.(4문자전송 ) 설정데이터의 ID Type 비트가 1 : 수신 ID는 2.0B 포맷임.(8문자전송 ) 2) 설정데이터의수신 Mode가 1인경우 : 설정데이터의 ID Type 비트와상관없이수신 ID는 2.0A 포맷임.(4문자전송 ) 3) 설정데이터의수신 Mode가 2인경우 : 설정데이터의 ID Type 비트와상관없이수신 ID는 2.0B 포맷임.(8문자전송 ) 수신 Mask ID UART_ Analyzer 의수신메시지의 Acceptance Filter Mask ID 를나타냄. 1) 설정데이터의수신 Mode가 0인경우 : 설정데이터의 ID Type 비트가 0 : 수신 Mask는 2.0A 포맷임.(4문자전송 ) 설정데이터의 ID Type 비트가 1 : 수신 Mask는 2.0B 포맷임.(8문자전송 ) 2) 설정데이터의수신 Mode가 1인경우 : 설정데이터의 ID Type 비트와상관없이수신 Mask는 2.0A 포맷임.(4문자전송 ) 3) 설정데이터의수신 Mode가 2인경우 : 설정데이터의 ID Type 비트와상관없이수신 Mask는 2.0B 포맷임.(8문자전송 ) - 7 -
환경설정쓰기명령 UART_ Analyzer의 수신모드, BPS, 수신 ID, 수신 Mask ID 및 에러정 보알림여부그리고 Bus-Off시동작등과같은설정정보를바꾸고자할때사용하는명령이 며 UART_ Analyzer에서는이명령프로토콜수신후수신한설정정보를저장한후 을수신한설정정보를바탕으로초기화하며또한 수신데이터모니터링동작을중 지합니다. 따라서 PC측프로그램에서는이명령에대한응답을받은후 데이터를모니터 링하고자하면다시 수신시작 명령을수행하시길바랍니다. 동작요청명령 시작문자 명령코드 설정데이터 BPS 수신 ID 수신 Mask Check Sum 끝문자 : Z Hex ASCII Hex ASCII Hex ASCII Hex ASCII Hex ASCII 0x0D 1문자 1문자 2문자 8문자 4 or 8문자 4 or 8문자 2문자 1문자 정상응답 시작문자 명령코드 설정데이터 BPS 수신 ID 수신 Mask Check Sum 끝문자 : Z Hex ASCII Hex ASCII Hex ASCII Hex ASCII Hex ASCII 0x0D 1문자 1문자 2문자 8문자 4 or 8문자 4 or 8문자 2문자 1문자 설정데이터 Bit[6:5] Bit[4] Bit[3] Bit[2] Bit[1] Bit[0] 수신모드수신 ID & Bus-Off Bus-Off Error- Warning Mask Type Auto Reset Notify Passive Notify Notify 수신 Mode (5~6번째비트 ) 0 : 2.0A와 2.0B 메시지모두를수신함. 1 : 2.0A 메시지만을수신함. 2 : 2.0B 메시지만을수신함. 수신 ID와 Mask Type (4번째비트 ) 위의수신 Mode가 0인경우 : 이비트가 0인경우 : 수신 ID와 수신 Mask는 2.0A 포맷임. 이비트가 1인경우 : 수신 ID와 수신 Mask는 2.0B 포맷임. 수신 Mode가 1인경우 : 이비트와상관없이 수신 ID와 수신 Mask는 2.0A 포맷임. 수신 Mode가 2인경우 : 이비트와상관없이 수신 ID와 수신 Mask는 2.0B 포맷임. Bus-Off Auto Reset (3번째비트 ) 이비트가 1이면 Bus-Off 발생시자동으로 Reset 동작을수행함. - 8 -
Bus-Off Notify (2번째비트 ) 이비트가 1이면 Bus-Off 발생시에러정보를 PC에알림 Error-Passive Notify (1번째비트 ) 이비트가 1이면 송 / 수신 Error-Passive 발생시에러정보를 PC에알림 Warning Notify (0번째비트 ) 이비트가 1이면 송 / 수신 Warning 발생시에러정보를 PC에알림 BPS UART_ Analyzer에서사용할 BPS 설정을위한레지스터값 BRP(1Byte) PRSEG(1Byte) PHSEG1(1Byte) PHSEG2(1Byte) 0 ~ 63 0 ~ 7 0 ~ 7 1 ~ 7 [ UART_ Analyzer 의 BPS 공식 ] BPS = 16MHz/(2*(BRP+1))*((PRSEG+1) + (PHSEG1+1) + (PHSEG2+1) + 1) [ UART_ Analyzer 의 BPS 설정관련준수항목 ] 1) PHSEG2 > 0 2) PRSEG + PHSEG1 + 1 >= PHSEG2 수신 ID UART_ Analyzer의수신메시지의 Acceptance Filter ID를나타냄. 1) 설정데이터의수신 Mode가 0인경우 : 설정데이터의 ID Type 비트가 0 : 수신 ID는 2.0A 포맷임.(4문자전송 ) 설정데이터의 ID Type 비트가 1 : 수신 ID는 2.0B 포맷임.(8문자전송 ) 2) 설정데이터의수신 Mode가 1인경우 : 설정데이터의 ID Type 비트와상관없이수신 ID는 2.0A 포맷임.(4문자전송 ) 3) 설정데이터의수신 Mode가 2인경우 : 설정데이터의 ID Type 비트와상관없이수신 ID는 2.0B 포맷임.(8문자전송 ) 수신 Mask ID UART_ Analyzer의수신메시지의 Acceptance Filter Mask ID를나타냄. 1) 설정데이터의수신 Mode가 0인경우 : 설정데이터의 ID Type 비트가 0 : 수신 Mask는 2.0A 포맷임.(4문자전송 ) 설정데이터의 ID Type 비트가 1 : 수신 Mask는 2.0B 포맷임.(8문자전송 ) 2) 설정데이터의수신 Mode가 1인경우 : 설정데이터의 ID Type 비트와상관없이수신 Mask는 2.0A 포맷임.(4문자전송 ) 3) 설정데이터의수신 Mode가 2인경우 : 설정데이터의 ID Type 비트와상관없이수신 Mask는 2.0B 포맷임.(8문자전송 ) - 9 -
수신시작 / 중지명령 UART_ Analyzer의현재 데이터수신동작환경을읽어오거나변경할때사용하는명령으로써 데이터수신동작변경시 UART_ Analyzer 내부에서는 수신동작을시작 / 중지하며이전에수신한 수신데이터모두를지웁니다. 동작요청명령시작문자명령코드수신여부명령코드 Check Sum 끝문자 : G 00 or 10 or 11 Hex ASCII 0x0D (Hex ASCII) 1문자 1문자 2문자 2문자 1문자 < 수신여부명령코드 > 00 : 데이터수신동작환경을읽어옵니다 10 : 데이터수신동작을중지모드로변경합니다 11 : 데이터수신동작을시작모드로변경합니다 정상응답시작문자 명령코드 수신여부응답코드 Check Sum 끝문자 : G 00 or 01 Hex ASCII 0x0D (Hex ASCII) 1문자 1문자 2문자 2문자 1문자 < 수신여부응답코드 > 00 : 현재 데이터수신동작이중지되었음을나타냄 01 : 현재 데이터수신동작을시작하고있음을나타냄 데이터수신명령 수신시작 명령이후 UART_ Analyzer에서는 메시지데이터가수신될때마다 PC측에자동으로응답하는프로토콜입니다. 따라서 PC측프로그램을제작하는개발자께서는 Thread 방식의통신운용방식으로제작하시길바랍니다. 정상응답시작명령수신데이터 Check 끝문자코드특성코드수신 ID 수신데이터 Sum 문자 : U Hex ASCII Hex ASCII Hex ASCII Hex ASCII 0x0D 1문자 1문자 2문자 4 or 8문자 0 ~ 16문자 2문자 1문자 수신데이터특성코드수신 Message Mode (5번째비트 ) 수신메시지 ID 포맷을나타내는비트로서이비트가 0이면 수신 ID는 4문자타입의 2.0A 메시지포맷을나타내고이비트가 1이면 수신 ID는 8문자타입의 2.0B 메시지포맷을의미합니다. - 10 -
수신 Message Data 타입 (4번째비트 ) 이비트가 0이면 Data Frame을 1이면 Remote Frame임을나타냄수신 Message의데이터길이 (3~0번째비트 ) 수신 Message의데이터길이로서 0 ~ 8 사이의값을가짐 수신 ID 수신메시지의수신 ID를나타냄. 위의수신데이터특성코드중 Message Mode 가 2.0A이면 4문자, 2.0B이면 8문자를받음 수신데이터수신 Message의수신데이터를나타냄. 위의수신데이터특성코드중 수신 Message의데이터길이 에따라 0 ~ 16문자를받음 데이터송신명령연결된 네트워크상에 UART_ Analyzer를통해특정 Message를보내고자할때사용하는명령입니다. 이때 UART_ Analyzer에서는연결된 Network가 Idle 상태이면바로데이터를송신하고그렇지않은경우에는 Idle 상태일때까지대기하다가 Idle 상태일때보냅니다. 그리고송신이성공적으로끝나면 PC측에응답을하는구조입니다. 따라서 PC측프로그램을제작하고자하는사용자께서는 데이터송신 명령을 UART_ Analyzer에보낸후일정시간 (2 초 ) 동안응답이없으면적절한에러처리를하시길바랍니다. 보통은한번정도 Retry해보고그래도응답이없으면 리셋 명령을수행하는등의에러처리과정을사용함. 동작요청명령시작명령송신데이터 Check 끝문자코드특성코드송신 ID 송신데이터 Sum 문자 : W Hex ASCII Hex ASCII Hex ASCII Hex ASCII 0x0D 1문자 1문자 2문자 4 or 8문자 0 ~ 16문자 2문자 1문자 정상응답 시작문자 명령코드 송신데이터특성코드 송신 ID 송신데이터 Check Sum 끝문자 : W Hex ASCII Hex ASCII Hex ASCII Hex ASCII 0x0D 1문자 1문자 2문자 4 or 8문자 0 ~ 16문자 2문자 1문자 송신데이터특성코드 송신 Message Mode (5번째비트 ) 송신메시지 ID 포맷을나타내는비트로서이비트가 0이면 송신 ID는 4문자 타입의 2.0A 메시지포맷을나타내고이비트가 1이면 송신 ID는 8문자 타입의 2.0B 메시지포맷을의미합니다. 송신 Message Data 타입 (4번째비트 ) 이비트가 0이면 Data Frame을 1이면 Remote Frame임을나타냄 - 11 -
송신 Message의데이터길이 (3~0번째비트 ) 송신 Message의데이터길이로서 0 ~ 8 사이의값을가짐 송신 ID 송신 Message의송신 ID를나타냄. 위의송신데이터특성코드중 Message Mode 가 2.0A이면 4문자, 2.0B이면 8문자를보냄 송신데이터송신 Message의송신데이터를나타냄. 위의송신데이터특성코드중 송신 Message의데이터길이 에따라 0 ~ 16문자를보냄 리셋명령 UART_ Analyzer의 통신동작에문제가있어사용자께서리셋을할때사용하는명령프로토콜입니다. 또한 UART_ Analyzer에서는자체적으로 Bus-Off 상태나모든 송신버퍼가송신중오류가나서더이상데이터를송신할수없는경우자체적으로자동리셋을하고이를 PC측에응답합니다. 그리고리셋시에는최근에저장된환경설정을바탕으로초기화하고 데이터수신동작을중지하므로사용자께서는리셋응답이받은경우에는 수신시작 명령을다시보내 데이터수신동작을다시시작하도록하시길바랍니다. 동작요청명령시작문자명령코드 Check Sum 끝문자 : R Hex ASCII 0x0D 1문자 1문자 2문자 1문자 정상응답시작문자 명령코드 Reset Code Check Sum 끝문자 : R Hex ASCII Hex ASCII 0x0D 1문자 1문자 2문자 2문자 1문자 < Reset Code > 00 : 사용자 리셋명령에의한응답코드 01 : Bus-Off시자동리셋에의한응답코드 02 : 모든 송신버퍼오류로인한자동리셋에의한응답코드 - 12 -
에러정보알림명령 UART_ Analyzer의 환경설정쓰기 명령에있는설정데이터비트중 에러알림사용여부에따라해당에러가발생한경우에이응답정보를 PC측으로자동으로보냄. 정상응답시작문자명령코드 에러코드 Check Sum 끝문자 : I Hex ASCII Hex ASCII 0x0D 1문자 1문자 2문자 2문자 1문자 < 에러코드 > 해당비트가 1이면해당에러가발생함을의미함 Transmiter Warning 에러코드 (4번째비트 ) Receiver Warning 에러코드 (3번째비트 ) Transmiter Error-Passive 에러코드 (2번째비트 ) Receiver Error-Passive 에러코드 (1번째비트 ) Bus-Off 에러코드 (0번째비트 ) 버전정보읽기명령 UART_ Analyzer의펌웨어버전정보를읽을때사용하는명령 동작요청명령 시작문자 명령코드 Check Sum 끝문자 : V Hex ASCII 0x0D 1문자 1문자 2문자 1문자 정상응답시작문자 명령코드 버전정보 Check Sum 끝문자 : V Hex ASCII Hex ASCII 0x0D 1문자 1문자 2문자 2문자 1문자 < 버전정보 > 상위 4비트 : 펌웨어프로그램의 Major 버전넘버 하위 4비트 : 펌웨어프로그램의 Minor 버전넘버 Ex) 0x10이면버전 1.0을나타냄 - 13 -