안녕하세요,


이번에는 STM32 ARM 시리즈를 사용해야할 상황이 되었습니다.
STM32F411 이 패키지가 3x3 mm 크기인 WLCSP 타입이면서, SDCARD I/F 인 SDIO 포트가 구비되어 있어서
이 MCU를 사용하게 되었습니다.

PSOC 처럼 쉽지는 않아서 익숙해지기 까지는 좀 시간이 걸릴 것 같습니다.


Nucleo 개발 키트를 구매했는데, UART를 테스트 해 보려고 회로도를 보니
디버거와 USB-UART 가 붙어 있어서 USB-UART에 해당하는 UART 포트를 Cube(STM에서 제공하는 툴)로
설정하고 코드를 자동 생성하도록 했습니다.

STM의 Cube라는 툴은 컴파일러가 포함되어 있는 툴이 아니고, 
여러 Peripheral 기능을 선택해서 설정만 해 주면, 해당 기능의 소스 코드를 여러가지 컴파일러(IAR,KEIL,GCC..etc)에
맞게 자동 생성해 주는 기능을 가지고 있습니다.

그런데, 사용 예제는 생성해 주지 않고 초기화까지만 해줘서 어떻게 써야 하는 건지 좀 해깔렸는데,
다행이 STM 홈페이지에서 첨부된 예제를 보고 감을 잡을 수 있었습니다.

먼저 Cube 사용법을 알아 봅시다.
1. Cube 를 실행 시켜서 File->New Project 를 클릭.
2. 팝업 창이 하나 뜨는데, 사용할 STM MCU를 선택합니다.


3. 사용할 Peripheral 기능을 선택합니다. 저는 UART 테스트를 위해 일단 UART만 선택했습니다.
Nucleo 보드에서 USB-to-UART 에 연결된 STM32F411 의 포트는 PA2,PA3 이었습니다.
그래서 따로 USB-to-UART 컨버터를 준비하지 않고 테스트하려고, Cube 에서 PA2,PA3에 해당하는 UART를
찾아 보니 UART2 였습니다.


4. 현재 갖고 있는 컴파일러에 맞는 코드를 생성합니다.


5. 팝업창이 뜨는데, 다음의 그림과 같이 프로젝트 이름,위치,컴파일러 종류를 선택하고 OK를 누르면 해당 위치에 소스코드가 만들어 집니다. 저는 KEIL 컴파일러를 사용해서 MDK-ARM V5로 선택했습니다.


6. 다음의 과정으로 팝업창이 뜨는데, OK를 누르면 자동으로 컴파일러와 연계되어 KEIL 컴파일러가 실행됩니다.


KEIL 의 main()함수에 UART 출력 함수를 써서 테스트를 했습니다.
STM ARM 칩은 처음이라, 함수 사용법이 좀 생소하네요. 일단 UART 출력 코드는 다음과 같이 1줄 추가했습니다.

7. teraterm 에서 확인한 내용입니다.







 

저는 핀수 많지 않고 성능 좋은 MCU 없나, 가끔 검색을 합니다.

오늘 보니 특이한 놈이 있네요? 근래에 나온건가? 그럴테죠.

저는 듣는 회사네요. XMOS 

아뭏든 가장 모델이 4-core,400MHz(400MIPS) 인데, 가격이 디지키에서 $2.73 @ 5K 이네요.

디지키에서 가격이면 $2 초반이면 있을 합니다.

 

크기는 아직 최적화가 안된듯 합니다. 48-TQFP 나오네요.

CSP QFN 으로 나오면 2.5x2.5 mm, 5x5 mm 정도로도 나오겠네요.

용도는 RTOS 사용시 매우 빠르다고 하는데요. 프로세스마다 1 core 맡으면 동시에 4가지씩 처리하니 빠르겠네요.

 

내부 블럭도는 다음과 같습니다.

 

종류는 다양한데, CPU 속한 모델대의 사양은 다음과 같습니다.

CC1310 을 사서 PCB에 꾸며서 , AT Command Application 을 넣고 테스트해 봤는데

아주 빠르고 좋았습니다. 

20ms 마다 18 바이트를 50번 보냈는데, 잘 전송되었고, 
10ms 마다 전송했는데, 멈추네요.(CC1310 문제인지, UART로 연결해 놓은 MCU 문제인지 아직 파악은 못했지만, 
일단 20ms 로 전송이 잘 되서, 그냥 원인은 알아보지 않고 프로젝트를 진행 할 예정입니다)

로라 모뎀을 일반용으로 쓸 때는, 2초에 1번씩 전송됐는데, CC1310은 거기에 비하면 엄청 빠른거죠.^^

예전에, 로라 모뎀을 일반용도로 쓴 적이 있었습니다. 그 때, 응답 속도가 너무 느려서 답답했었는데, 그 이유를 알 것 같습니다.
AT+I 01 명령으로 CC1310 도 Long Range Mode 로 설정하면, 거리가 더 많이 나오는데 응답속도가 현저히 느려졌습니다. 
아마도 로라 모뎀이 long range mode로 동작하도록 셋팅됐었나 봅니다






[ 보드 제작시에는 다음과 같은 내용을 참고해 주세요 ]

1. DIO_0 을 사용하면 동작이 안되는데, 왜 그런지 모르겠네요. 일단은 DIO_0 을 제외하고 사용하면 문제는 없습니다. 


2. 32.768KHz 외부 클럭은 사용하지 않아도 되더군요. 24MHz 크리스탈만 잘 달아 주면 됩니다. 


3. saw 필터를 사용하면 아주 조그마해 집니다. ^^

+ Recent posts