|
안녕하세요..
이번에 통신프로토콜을 분석하던 중에 문제가 생겨 이렇게 도움을 요청합니다..
통신을 읽어 보면 0x16, 0x13, 0x17, 0xff, 0xff, 0xb4 이렇게 나옵니다.. 0xb4가 checksum이 되는거 같습니다..
checksum이라고 확신하는 이유는 같은 명령에서 데이터가 다를 경우 마지막 값이 변하는 것으로 checksum 이라고 생각이 드는데요..
위의 데이터는 I2C 통신을 분석한 것입니다..
I2C 통신 형식은 다들 아시겠지만 컨트롤하고자 하는 어드레스(WRITE), 컨트롤 명령, 데이터 이런 형식과 어드레스(WRITE), 컨트롤 명령, 어드레스(READ), 데이터 이런형식으로 구성됩니다.
따라서 0x16은 WRITE 어드레스 이구요, 0x13은 Command 입니다. 0x17은 그럼 READ 어드레스가 되겠죠.. 나머지 0xff, 0xff 이건 하위 데이터와 상위 데이터로 16비트 데이터 입니다.
위에 값하나만 가지고는 규칙을 찾기가 힘들겠죠.. 그래서 아래 데이터를 참고하셔서 도움좀 부탁드리겠습니다..
Address_w Command Address_R Low_Data High_Data CheckSum
0x16 0x13 0x17 0xFF 0xFF 0xB4
0x16 0x12 0x17 0xFF 0xFF 0xA2
0x16 0x11 0x17 0xFF 0xFF 0x98
0x16 0x08 0x17 0x8D 0x0B 0x13
0x16 0x08 0x17 0x97 0x0B 0xC6
0x16 0x08 0x17 0x8F 0x0B 0x39
아무리 생각해도 CheckSum 규칙이 나오지 않아 도움을 요청드립니다..
CheckSum의 데이터는 Address_W ~ High_Data 까지의 합일 수도 있구요..
Command, Low_Data, High_Data 만 계산되었을 수도 있습니다..
확실한건 Command가 바뀌면 CheckSum의 값도 바뀌는 것으로 보아 Command의 값은 확실하게 포함이 된다고 생각듭니다..
많은 도움 부탁드리겠습니다..
좋은 하루 되세요..
|