예전에 제가 마이컴으로 10MBps 신호를 잡아서
CRC 처리하고 다 파싱해서 4us 안에
응답패킷(CRC 포함)을 만들어서 처리하는 프로젝트에 대해서 질문드린적이 있습니다.
다들 FPGA를 권하셨지만
(당연히 FPGA 사용이 맞는 프로젝트지요)
하지만!
이론적으로 가능하다는 결론을 내고 과감히 MCU 로 도전하였고 2달 고생해서 성공한 것으로 보입니다.
아래 신호는 10Mbps 신호를 파싱해서 3.46us 만에 정상 응답하는 결과물입니다.
현재는 HSI 로 처리해서 데이터를 놓치는 경우가 많습니다. HSE 로 해보니 데이터 유실 비율이 확연히 줄어들어서, 노이즈 처리 잘하고 좋은 오실레이터를 사용해서 보드를 제작하면 될 것으로 생각됩니다.
물론 100% 패킷을 보장해야 된다던지 특수한 오류 처리를 해야 된다던지 하는 조건에는 미달하지만
현재 정도라면 이 프로토콜에서는 양호한 수준이라 생각됩니다.
그동안 검토한 내용은 아래와 같습니다.
1. 통신 주파수에 맞는 최고 클럭 MCU 를 찾자.
2. 개발보드 구매후 실제 패킷을 아날라이저로 보고 프로토콜 사양서를 참조하여 파싱 알고리즘 작성 및 검증
3. 제일 느린 통신 속도에서부터 하나씩 검증.
4. HSE 와 HSI 통신 파싱 에러율 검토
5. 응답 속도를 최대한 빠르게 하기위하여 CRC 알고리즘 재작성 및 파싱 알고리즘 최적화
6. 그냥 패킷을 전체 받고 나중에 계산하는 것이 아니라 한비트씩 받으면서 모든 연산 처리
7. 보낼때도 다 패킷을 만들고 보내는 것이 아니라 STX 부터 보내면서 데이터를 만들어 처리
8. 모든 보내고 받는 연산은 DMA 처리
9. HAL 라이브러리 거의 들어내고 레지스터 직접 연산 처리
남들이 가지 않는 길을 가서 굉장히 불안했었는데 나름 쾌감이 드는 프로젝트가 된거 같습니다.
무조건 STM32H7가 이 이정도 다 처리된다고 생각하시면 안되고
프로토콜의 여러가지 개구멍을 이용하여 처리하였으므로
일반적으로 다른 프로젝트에 적용하시면 안되니 주의바랍니다.
FPGA 쓰셔요~~~
'임베디드' 카테고리의 다른 글
ARM M0 용 floating point 연산 라이브러리 (0) | 2024.08.10 |
---|---|
HDLC 10Mbps (RS-485 200m 고속 동작 시키기) (2) | 2023.10.21 |
C코드 속도 최적화(MCU) #1 (0) | 2023.10.04 |
17년전 프로그램 다시보기 (0) | 2023.05.10 |
NXP RFID(13.56Mhz) 주요 칩 비교 정리 (0) | 2022.05.27 |