배경
겸손한 마이크로 컨트롤러 사양이 필요한 프로젝트를 개발 중입니다.
- 12 비트, 10kHz ADC 8 개
- RAM 1kB
- 48-QFN 이하의 풋 프린트
- 20kbps 데이지 체인 가능 잡음 방지 및 오류 수정 통신 프로토콜
신호 처리 요구 사항은 상당히 낮으며 대부분 시스템의 마스터 프로세서로 내보낼 수 있습니다. 처음 세 가지 사양은 쉽게 충족 할 수 있으며 수량이 $ 2 미만인 경우에도 가능합니다. 그러나 매우 전기적으로 시끄러운 환경에서 통신이 이루어 지므로 LIN 및 I2C와 같은 잡음이 취약한 네트워크가 작동하지 않습니다. LIN에 대한 또 다른 주장은 전체를 5V 또는 3.3V로 실행하고 LIN 트랜시버에 12V가 필요하므로 센서 보드 당 추가 조정기 또는 와이어가 필요하다는 것입니다. 처음에는이 작업에 CAN을 선택했습니다. 그러나 CAN 컨트롤러는 상당한 비용을 발생 시키며, 이것이 소프트웨어로 이루어질 수 있는지 궁금합니다.
CAN 물리 계층
CAN 사양은 OSI 네트워크 참조 모델의 데이터 링크 및 물리 계층을 정의합니다. 물리 계층을 구현하기 위해 NXP TJA1040 / 50 , Maxim MAX3058 / 59 , Microchip MCP2551 및 TI SN65HVD1050 과 같은 저렴한 8 핀 IC가 많이 있습니다. D / A 컨버터 또는 연산 증폭기로 물리 계층을 구현하는 것은 불가능하지는 않지만 어려울 것이므로 이러한 IC의 가격은 1 달러 정도입니다.
CAN 데이터 링크 / 프로토콜 레이어
데이터 링크 계층의 경우 일부 마이크로 컨트롤러는 기본 UART, I2C 및 SPI 통신 계층에 CAN 프로토콜 모듈을 추가합니다. 그러나 이것들은 기본 칩보다 훨씬 비쌉니다.
CAN 프로토콜 모듈의 비용 조사
이 주장을 뒷받침하기 위해 다음은 CAN 및 비 CAN 버전에서 널리 사용되는 몇 가지 마이크로입니다.
- ATmega16-ATMEGA16M1 (CAN 포함) : $ 3.87, ATMEGA168A (CAN 없음) : $ 3.23
- dsPIC-DSPIC33FJ64MC802 (CAN 포함) : $ 6.14, DSPIC33FJ64GP202 (CAN 없음) : $ 5.48
- PIC18-PIC18F2480 (CAN 포함) : $ 6.80, PIC18F24J10 (CAN 제외) : $ 2.10
- Cortex-M3-STM32F103C4T6A (CAN 포함) : $ 6.50, STM32F100C4T6B (CAN 없음) : $ 2.73
공평하게, 나는 동등한 메모리 크기를 가진 마이크로 컨트롤러만을 비교했지만, 비 CAN 버전의 대부분은 더 작은 메모리 크기로 더 적은 크기로 제공됩니다. Microchip MCP2515 와 같은 외부 CAN 컨트롤러 는 거의 $ 2이므로 옵션이있는 경우 CAN을 마이크로 컨트롤러에 통합하는 것이 훨씬 비용 효율적입니다.
흥미롭게도, ATmega 부품은 Digikey의 재고에서 가장 저렴한 CAN 장착 부품입니다.
CAN 프로토콜 계층의 기능
dsPIC 마이크로 컨트롤러에있는 CAN 모듈은 다음을 수행합니다.
CAN 버스 모듈은 프로토콜 엔진과 메시지 버퍼링 / 제어로 구성됩니다. CAN 프로토콜 엔진은 CAN 버스에서 메시지를 송수신하기위한 모든 기능을 처리합니다. 먼저 적절한 데이터 레지스터를로드하여 메시지를 전송합니다. 적절한 레지스터를 읽으면 상태와 오류를 확인할 수 있습니다. CAN 버스에서 감지 된 메시지는 오류가 있는지 검사 한 다음 필터와 비교하여 수신 레지스터 중 하나에서 수신 및 저장해야하는지 확인합니다.
이것은 소프트웨어에서 상당히 가능해 보입니다.
질문
소프트웨어 프로토콜 계층을 사용하여 저렴한 UART가 장착 된 마이크로 컨트롤러와 CAN 트랜시버만으로 CAN 사양을 구현할 수 있습니까? 그렇다면 오픈 소스 구현이 있습니까?
또는 UART와 함께 트랜시버를 사용하여 맞춤형 프로토콜을 구현할 수 있습니까? 단일 마스터 토폴로지로는 괜찮습니다. 맞춤 프로토콜에서 중재를 제대로 수행하기가 어렵다는 것을 알고 있습니다.