KOKA016A november 2022 – march 2023 MSPM0G1105 , MSPM0G1106 , MSPM0G1107 , MSPM0G1505 , MSPM0G1506 , MSPM0G1507 , MSPM0G3105 , MSPM0G3106 , MSPM0G3107 , MSPM0G3505 , MSPM0G3506 , MSPM0G3507 , MSPM0L1105 , MSPM0L1106 , MSPM0L1227 , MSPM0L1228 , MSPM0L1228-Q1 , MSPM0L1303 , MSPM0L1304 , MSPM0L1305 , MSPM0L1306 , MSPM0L1343 , MSPM0L1344 , MSPM0L1345 , MSPM0L1346 , MSPM0L2227 , MSPM0L2228 , MSPM0L2228-Q1
이 섹션에서는 TI 에코시스템과 보다 친숙해지고 MSPM0을 가장 잘 시작하는 방법을 설명하기 위해 기본 애플리케이션의 마이그레이션 과정을 단계별로 설명합니다.
STM32에서 MSPM0로 포팅하는 과정을 보여주기 위해, 이 설명에는 기존 ST UART 예제를 출발점으로 사용해 기본 저전력 UART 모니터 애플리케이션을 STM32G0x에서 MSPM0 장치로 포팅하는 과정이 포함되어 있습니다.
1단계. 적절한 MSPM0 MCU를 선택하세요
마이그레이션의 첫 번째 단계는 애플리케이션에 적합한 MSPM0 장치를 선택하는 것입니다. 이를 위해 본 가이드의 포트폴리오 섹션을 사용해 MSPM0 제품군을 선택할 수 있습니다. 제품 선택 도구를 사용해 특정 장치로 범위를 좁힙니다. STM32G0와 MSPM0은 M0+ 코어를 공유하지만 메모리 크기, 전력 및 주요 주변 장치 등의 기능도 고려해야 합니다. 또한 MSPM0는 다수의 핀 대 핀 확장 가능 옵션을 제공하기 때문에 시스템의 다른 사항을 변경하지 않고도 더 크거나 작은 메모리 장치로 쉽게 확장할 수 있습니다.
이 예제에서는 MSPM0G3507을 이 애플리케이션에 가장 적합한 것으로 선택했습니다.
2단계. 하드웨어를 선택하고 EVM을 주문합니다
EVM(평가 모듈)을 사용하면 마이그레이션 절차를 가속화할 수 있습니다. MSPM0 MCU의 경우 LaunchPad 키트는 가장 쉽게 시작할 수 있는 하드웨어입니다. LaunchPad 키트에는 프로그래머가 내장되어 있고 신속한 개발이 가능하도록 설계되어 있기 때문에 사용하기 쉽습니다.
MSPM0G3507에는 소프트웨어 포팅에 사용할 수 있는 LaunchPad 개발 키트(LP-MSPM0G3507)가 들어 있습니다.
3단계. 소프트웨어 IDE 및 SDK를 설정합니다
소프트웨어를 포팅하려면 먼저 소프트웨어 개발 환경을 선택하고 설정해야 합니다. 섹션 2.1에는 MSPM0가 지원하는 IDE가 모두 나와 있습니다. 마이그레이션 및 포팅 절차는 어느 IDE를 선택하든 비슷합니다. MSPM0 SDK 최신 버전을 사용해야 합니다.
이 예제에서는 TI의 CCS를 IDE로 선택했습니다.
4단계. 소프트웨어 포팅
환경이 준비되면 MSPM0 SDK를 사용하기 시작합니다. 앞서 언급했듯이 MSPM0 SDK는 STM32Cube 소프트웨어 패키지와 유사합니다. MSPM0 SDK에는 소프트웨어 개발을 위한 여러 계층이 포함되어 있습니다. MSPM0 TI 드라이버는 STM32Cube HAL과 유사한 수준에서 작동하는 반면, MSPM0 DriverLib은 STM32Cube 낮은 수준 드라이버와 비슷합니다. 대부분의 MSPM0 사용자는 DriverLib 레벨 소프트웨어가 자신의 애플리케이션에 가장 적합하다고 판단하기 때문에 대부분의 MSPM0 소프트웨어 예제도 DriverLib 기반입니다. 이 예제에서는 DriverLib을 사용합니다.
프로젝트를 포팅할 때 한 가지 옵션은 각 코드 섹션을 그에 상응하는 MSPM0 DriverLib API로 교체하는 것이지만, 이는 일반적으로 가장 쉬운 경로는 아닙니다. 보통 먼저 포팅 대상 응용 프로그램 코드를 이해하는 것이 가장 좋습니다. 그런 다음 가장 가까운 MSPM0 예제 프로젝트로 시작하여 원래 코드 기능에 맞게 수정합니다. 이 프로세스는 STM32CubeG0의 저전력 UART 예제를 사용하여 아래에 표시됩니다. 다수의 주변 장치를 사용하는 보다 복잡한 프로젝트의 경우 일반적으로 각 주변 장치마다 이 프로세스가 반복됩니다.
4a 단계: 애플리케이션을 이해합니다
다음 설명은 'LPUART_WakeUpFromStop_Init'이라는 STM32CubeG0의 예제 프로젝트에서 가져온 것입니다.
@par 예제 설명
LPUART_RX 핀에 수신된 문자가 저전력 모드에서 MCU를 활성화할 수 있도록 GPIO 및 LPUART 주변 장치 구성. 이 예제는 LPUART LL API를 기반으로 합니다. 주변 장치 초기화는 LL 초기화 기능을 사용하여 LL 초기화 사용을 시연합니다.
LPUART 주변 장치는 비동기 모드(9600 보드, 8 데이터 비트, 1 시작 비트, 1 정지 비트, 패리티 없음)로 구성됩니다.
하드웨어 흐름 제어는 사용하지 않습니다.
LPUART 클록은 HSI를 기준으로 합니다.
예제 실행:
재설정 및 시스템 구성에서 시작한 후 LED3이 3초 동안 빠르게 깜박인 다음 MCU가 "정지 0" 모드(LED3 꺼짐)로 들어갑니다. "중지 0" 모드 기간 후 PC COM 포트에서 LPUART의 첫 번째 문자를 수신(예: HyperTerminal 사용)하면 MCU가 "중지 0" 모드에서 깨어납니다.
받은 문자 값을 확인합니다.
- 특정 값('S' 또는 's')에서 LED3이 켜지고 프로그램이 종료됩니다.
- 'S' 또는 's'와 다른 경우, 프로그램은 3초 동안 LED3을 빠르게 깜박인 후 다시 "Stop 0" 모드로 들어가 다음 문자가 깨우기를 기다립니다.
첫 번째 단계는 MCU의 주요 설정을 이해하는 것입니다. 보통 클록 속도와 전원 정책이 주요 설정입니다. 이 예제에서는 유일하게 중요한 설정은 UART가 저전력 Stop0 모드에서 작동한다는 것이기 때문에 일반 클록 주파수가 지정되지 않았습니다. 저전력 UART 클록이 'HIS' 또는 고속 내부 오실레이터를 기반으로 한다고 나와 있는데, 이는 외부 크리스탈이 사용되고 있지 않다는 뜻입니다. UART는 9,600 보드, 8 데이터 비트, 1 시작 및 정지 비트, 패리티 없음으로 실행됩니다. 하드웨어 흐름 제어가 사용되지 않습니다. 애플리케이션 측에서 수신될 'S' 또는 's'가 있는지 확인하고 LED가 깜박입니다.
4b 단계: 가장 가까운 MSPM0 예제를 찾습니다
다음 단계는 STM32G0과 MSPM0에 대한 UART 모듈의 차이점을 이해하고 MSPM0 SDK에서 가장 근접한 예제를 찾는 것입니다. 이 단계는 섹션 4에서 UART 섹션을 참조하면 쉽게 완료할 수 있습니다. 이 섹션에서는 UART 모듈의 차이점과 UART 관련 MSPM0 SDK 코드 예제 링크에 대해 설명합니다. SDK에서 이 예제에 가장 가까운 예제는 아마도 "장치가 STANDBY 모드에 있는 동안 인터럽트를 사용하는 UART RX/TX 에코"의 uart_echo_interrupts_standby일 것입니다.
이 MSPM0 예제는 비슷하지만 포팅되는 것과 동일하지는 않습니다. 이 예제는 대기 모드로 전환하는 것이며, 대기 모드는 중지 모드보다 낮은 전력 모드입니다. UART 통신 설정과 어느 GPIO를 사용 중인지 반드시 확인해야 합니다. 마지막으로 특정 문자에 대한 모니터링의 애플리케이션 계층을 추가해야 합니다.
4c 단계: 예제를 가져와 수정합니다
비슷한 예제를 찾으면, CCS를 열고 프로젝트 > CCS 프로젝트 가져오기...를 차례로 선택해 코드 예제를 가져온 다음 MSPM0 SDK의 예제 폴더로 들어갑니다. 예제를 가져오기합니다. 여기 보이는 것이 가져오기한 uart_echo_interrupts_standby 예제입니다. 이것은 SysConfig 프로젝트이기 때문에 메인 C 파일이 간단합니다. 먼저 SysConfig가 자동 생성한 함수인 SysConfig driverlib 초기화를 호출하여 장치를 구성합니다. 그런 다음 UART 인터럽트를 활성화합니다. 마지막으로 UART 트랜잭션을 기다리는 대기 상태로 들어갑니다. UART 트랜잭션을 수신하면 데이터를 즉시 다시 에코하여 활성화합니다.
SysConfig 구성을 보려면 기본 설정상 SYSCTL 탭에서 열리는 .syscfg 파일을 엽니다. SysConfig 사용에 대한 자세한 지침은 MSPM0 SDK의 SysConfig 가이드를 참조하십시오.
가장 먼저 주목할 사항은 전원 정책입니다. 이 MSPM0 예제에서는 Standby0 모드를 사용하지만 Stop0 모드를 사용하는 것이 목표입니다. 드롭다운 목록을 클릭해 올바른 저전력 모드를 선택할 수 있습니다. 이 탭에서 클록과 오실레이터를 모두 구성할 수 있지만 지금 당장은 괜찮습니다.
그런 다음 UART 탭에서 UART 통신 설정을 확인합니다(그림 2-8 참조). 이 경우 보드율은 이미 9,600으로 설정되어 있고 나머지 통신 설정은 정확합니다. 수신 인터럽트는 이미 활성화되어 메인 프로그램에서 사용되고 있습니다. 또한 오른쪽 상단에서 칩 아이콘을 클릭하고 강조표시된 UART에 핀을 확인해 사용 중인 UART 모듈과 핀을 점검합니다. MSPM0G3507 LaunchPad 키트의 백채널 UART에 이미 연결되어 있기 때문에 여기서는 아무것도 변경할 필요가 없습니다.
이 예제에는 현재 LED 구동을 위해 구성된 GPIO가 없지만 구성을 쉽게 추가할 수 있습니다(그림 2-9 참조). GPIO는 페이지 상단에서 +ADD 버튼을 클릭해 추가할 수 있습니다. GPIO 포트와 핀은 이름을 지정할 수 있으며, 이 경우 각각 'LED'와 'RED'로 지정되어 있습니다. 이 GPIO는 출력으로 설정된 다음 포트 A 핀 0(PA0)에 배치됩니다. LaunchPad 키트에서 이 GPIO는 단순한 빨간색 LED에 연결됩니다.
프로젝트를 저장하고 재빌드하면 SysConfig가 예제를 위해 ti_MSP_DL_config.c 및 ti_msp_dl_config.h 파일을 업데이트합니다. 이제 예제 하드웨어 구성이 변경되어 포팅되는 원래 소프트웨어의 전체 기능과 일치합니다. 이제 유일하게 남은 일은 애플리케이션 수준 소프트웨어에서 입력되는 UART 바이트를 확인하고 LED를 전환하는 것입니다. 그렇게 하려면 소량의 코드를 메인 C 파일로 이동하면 됩니다.
애플리케이션 코드에서는 두 가지 변경되었습니다. 먼저, DL_sysctl_disablesSleepOnExit()를 사용해 MSPM0가 각 UART RX에서 잠시 동안 활성화되도록 합니다. 다음, UART RX 데이터에 대한 간단한 검사가 추가되고, 'S' 또는 's'가 수신되면 빨간색 LED가 켜집니다. 그런 다음 꺼집니다.
5단계: 디버그 및 검증
다음 그림은 9,600 보드에서 UART 통신, 빨간색 LED가 올바르게 켜지고 꺼지는 것을 보여주는 논리 분석기 화면 캡처입니다. 코드는 모든 UART 문자를 에코하지만 올바른 문자가 수신된 경우에만 LED를 켭니다.
소프트웨어가 성공적으로 포팅되었습니다! 그 외에도 주변 장치가 더 있는 경우 주변 장치마다 이 과정을 반복하고 SysConfig를 사용해 각 블록을 결합하면 됩니다.