좋은 프로젝트입니다. 여기에 몇 가지 힌트가 있지만 모든 프로젝트에 대해 이것을 일반화하기는 어렵습니다.
계산 요구 사항으로 시작
이것이 필요한 코어의 종류와 MCU의 일반적인 성능을 알려줍니다. 주변 장치와 달리 외부 구성 요소를 사용하여 확장 할 수 없으므로 분명히 시작하는 것이 좋습니다.
첫째, 루프 내에서 큰 정수로 무거운 수학 연산을 사용하는 것 같습니다. 따라서 제안한 바와 같이 여기서는 32 비트가 유용하므로 ARM이 이상적인 후보가됩니다. 작동 주파수에 관해서는 : 현재 Arduino MEGA2560 (16MHz에서 실행 중이라고 가정)을 사용하며 10 루프 / 초를 만들 수 있습니다. 100 루프 / s를 달성하려면 100MHz 이상의 범위에서 Cortex-M3 / M4를 사용하는 것이 좋습니다 (대략 추정). Cortex-M4F에는 부동 소수점 단위가 있습니다.
우리는 이미 선택 범위를 좁혔습니다.
메모리 요구 사항
이것은 쉬운 일입니다. 프로토 타입에 대해 RAM / 플래시 범위가 가장 많은 MCU를 선택하십시오. 프로토 타입의 유효성을 검사 한 후 RAM / 플래시가 충분한 동일한 범위에서 MCU로 전환하면 정확한 요구 사항을 알 수 있습니다.
귀하의 응용 프로그램에 놀라운 양의 메모리가 필요하다고 생각하지 않습니다.
이제 주변 장치
ADC가 절대적으로 필요합니다. 우리 가보고있는 범위의 모든 MCU에는 일부가 있으므로 유용한 기준이 아닙니다. 디지털 입 / 출력도 마찬가지입니다. 단, 많은 수의 디지털 입력 / 출력이 필요한 경우를 제외하고는 그렇지 않습니다.
DAC가 필요한 것 같습니다. 그러나 이것은 실제로 쉽게 찾을 수 없으며 후보자를 너무 좁힐 것입니다. 따라서 우리는 그 요구 사항을 유지하지 않으며 PWM과 저역 통과 (실제로 허용 가능한)를 유지할 것입니다.
LCD를 제외한 모든 통신 인터페이스는 언급하지 않습니다. 어쨌든, 모든 MCU에는 I2C / SPI / UART / ...가 필요합니다.
LCD
MCU에 완전히 다른 요구 사항을 적용하는 다양한 솔루션이 있기 때문에이 방법은 까다 롭습니다. 그러나 MCU에 따라 LCD를 선택하지 마십시오. 제품에 원하는 LCD를 선택한 다음 효율적으로 구동 할 MCU를 선택하십시오.
- 문자 LCD를 원한다면 MCU에 대한 가장 쉽고 제한이 적은 것은 직렬 인터페이스 (SPI)를 통해 대화하는 것입니다. 이렇게하면 너무 많은 PIN을 사용하지 않고 더 작거나 저렴한 MCU를 사용할 수 있으며 속도는 문제가되지 않습니다.
- 그래픽 TFT LCD가 필요한 경우 : 작은 경우에도 직렬 링크가 적합 할 수 있습니다. 그러나 320x200 이상에서는 멋진 그래픽 인터페이스를 원한다면 병렬 인터페이스와 통신하기를 원할 것입니다. 이 경우 일부 GPIO를 사용하지만 (제어 라인을 비트 뱅킹해야하기 때문에 MCU에 더 많은 부하를 가할 것입니다) 또는 전용 LCD 인터페이스가있는 MCU를 선택합니다 (종종 외부 메모리 인터페이스). 마지막으로 MCU 선택에 대한 강력한 제약이 있지만 다른 강력한 제약은 없습니다.
이제, 당신은 선택
ST Micro / NXP / Atmel 웹 사이트로 이동하여 MCU 선택 도구를 사용하십시오. 데이터 시트를 읽는 데 많은 시간을 소비하게됩니다. 이번엔 낭비되지 않습니다. 이 프로젝트에 특별히 사용하지 않더라도 여기서 배울 내용이 유용 할 수 있습니다.
이 시점에서 실제로 필요한 PIN 수를 살펴보고 선택한 MCU 후보의 멀티플렉싱 체계를 확인하여 필요한 모든 PIN 기능을 사용할 수 있는지 확인해야합니다. 분명히, 비용 / PCB 부동산 이유로 인해 요구 사항을 충족하는 핀 수가 가장 적은 MCU를 사용하고 싶을 것입니다.
Mouser / Digikey의 가격 / 이용 가능 여부를 확인하십시오. 그러나 여기서 특별히 비싼 것이 필요하지 않습니다. 아마 5 € 정도.
LCD 제어에 관한 마지막 것
LCD 업데이트가 주요 루프의 일부인 것 같습니다. 해서는 안됩니다. 특히 초당 100 번 반복하는 경우 쓸모가 없습니다. 제어 루프가 모든 것을 계산하고 각 반복에서 모터 명령을 조정하지만 메모리의 어딘가에 표시되도록 값을 업데이트하십시오. 그런 다음 더 중요한 것이 없을 때 우선 순위가 낮은 다른 루프가 사용자에게이 정보를 표시하도록합니다.
예, 이상적으로는 작업 전환과 작업이 필요합니다. 실제 OS (실제 FreeRTOS, Coocox OS, Nuttx 조회)는 매우 작고 Cortex-M에서 주로 사용되며 필요한 멀티 태스킹 메커니즘을 제공합니다.