:::: MENU ::::
Posts tagged with: STM32

SD 메모리 SPI로 제어하기 – 2

지난번 포스팅 “SD 메모리 SPI로 제어하기“의 내용만으로는 부족하여 추가적으로 정리한다.

SD 메모리 카드는 기본적으로 전원이 들어오면 SDIO로 동작을 한다. 따라서 대부분의 칩벤더에서는 SDIO인터페이스를 사용하는 예제를 제공하는데, SDIO가 없는 작은 MCU에서는 SPI를 사용해야 한다. 따라서 다음 그림과 같은 초기화 루틴이 필요하다.

SPI모드에서 SD 메모리 초기화 루틴

SD 메모리 커맨드

How_to_Use_MMC_SDC

  • 1번: CS, MISO를 High로 하고 74개 이상의 SPI dummy clock을 전송한다.
  • 2번: CRC가 반드시 일치해야 한다.

위 표에서 CMD0은 0, CMD8은 8을 전송하는 형태이고, ACMD41은 CMD55를 전송후 CMD41를 전송하는 것이며, argument로 30번째 비트가 세트된 32비트를 전송한다.

커맨드 응답

커맨드의 응답은 다음과 같다. R1은 1바이트이고, R3, R7은 R1+ 32비트이니 5바이트이다.

How_to_Use_MMC_SDC

관련 코드: STM32F429IDiscovery보드에서 테스트한 코드가 github에 업로드되어 있으니 코드를 보면서 참고 문서를 보면 이해가 될 듯.. SD memory control with SPI



STmicro의 Cortex M0 칩

최근의 MCU vendor들은 너나 할 것 없이 ARM사의 Cortex 코아를 내장한 칩을 출시하고 있다.
Cortex M3를 필두로 M4, M0까지…
기존의 NXP, Nuvoton등 많은 MCU 벤더들이 이미 M0기반의 칩을 출시했듯이, 이번에 ST도 M3, M4에 이어 M0기반의 칩을 출시했다.
ST의 Press release 기사: http://www.st.com/internet/com/press_release/p3275.jsp

좀 SRAM사이즈가 작은 듯하지만…

CortexM0와 M3, ARM7 과의 비교자료는 이전 포스트 “Cortex M0 비교 자료“참고..


STM32 Journal

ST에서 발간하는 STM32 Journal 첫호입니다.

cfile24.uf.190D3B4B4EEAEA973742D8.pdf

주로 새로 출시한 STM32 F4에 대한 설명이 있습니다.


Connectivity쪽 자료를 보면 아래 그림과 같은 테이블이 나옵니다.


아래 테이블을 보면 MCU에서 초당 처리해야할 패킷의 수가 수치적으로 나와 있습니다. 당연히 한 패킷당 바이트수가 작을 수록 처리해야할 패킷의 수가 많습니다. 100Mbps의 경우는 10Mbps의 경우의 10배이고…
그리고 괄호안의 수치는 각 Bandwidth를 만족하기위한 1 패킷을 처리하기 위해 걸리는 시간입니다.
즉 MCU가 최소한 이정도 성능이 있어야 10M, 100Mbps를 만족한다는 것인데…

uC/TCP-IP 스텍을 사용시 zero copy 아키텍쳐를 사용하여 dedicated memory에 비해 장점이 있다고 설명을 합니다.


MCU 개발키트의 트랜드

모든 MCU 벤더들은 자신들이 출시하는 반도체 칩 이외에 사용자가 이 칩을 잘 사용하도록reference board 또는 evaluation board 라고 칭하는 개발 키드를 제공을 한다. 전통적으로 이것은 아주 오랜 기간 동안 칩의 모든 기능을 테스트해 볼 수 있도록 구성이 되어 있어서 칩의 기능이 많을수록 상당히 복잡한 형태를 가지고 있다. 하지만 최근의 경우 MCU 벤더들이 출시하는 칩의 종류는 메모리 용량 및 주변 장치에 따라 수십에서 수백 종에 이르므로 이 모든 칩을 위한 개발키트를 출시한다는 것은 거의 불가능하다. 




<복잡한 형태의 개발 키드>


따라서 요즘 대부분의 MCU 벤더들은 기본이 되는 형태의 개발키트가 하나 있고 여기에 부가적으로 daughter board를 연결할 수 있도록 하여 사용자가 선택적으로 연결을 할 수 있도록 하고 있다.  이렇게 함으로써 기본 개발 키트의 가격은 사용자가 쉽게 살 수 있을 정도로 매우 싸게 공급을 하며, 사용자가 이 보드에 추가적으로 자신의 모듈이나 보드를 연결할 수 있도록 모든 I/O 인터페이스를 제공을 한다. 여기서 더 나아가 예전에는 ICE 장비나 디버거가 따로 필요했지만 개발 키드 자체에 디버깅을 할 수 있는 기능까지 제공하는 보드들도 있다. 



< ST마이크로의 Discovery 시리즈 >


사진의 상단부분이 디버거를 위한 보드이고 하단 부분이 실제 칩이다, 테스트를 위한 모든 I/O 인터페이스가 나와 있으며, 사용자가 쉽게 회로를 연결할 수 있는 홀들이 나와있는 영역을 제공한다. 


 



< TI사의 Launchpad >



TI사의 Launchpad의 경우 보드 가격이 4.3불 밖에 되지 않는다. 실제 칩은 가운데 있으며, 메모리 용량이 다른 칩으로 교환이 가능하며 보드 상단에 디버깅을 위한 칩이 따로 달려 있다. 물론 다음 그림과 같이 BoosterPack 이라고 하여 옵션보드를 장착이 가능하다.



 


정리하면



  • 사용자가 쉽게 구매할 수 있도록 초저가

  • 디버깅이 용이 하도록 디버거까지 한 보드에서 제공

  • 하나의 기본 보드를 제공하고, 옵션보드를 장착할 수 있는 형태

  • 개발툴까지 무료로 제공


Migrating from version 4.x to version 5.x

EWARM 4.x => 5.0으로 갈아 타기위한 가이드 문서입니다.

cfile27.uf.173906564D425352191FFC.pdf

소스를 그룹별로 정리를 해서 프로젝트를 만들었는데,
-. CMSIS – ARM의 CMSIS 관련 소스
-. EWARMv5.4 – CMSIS에서 지원하는 device 중 ST 라이브러리 소스
   사용하는 디바이스에 맞는 소스를 넣어준다.

– startup_stm32f10x_ld_vl.s:    for STM32 Low density Value line devices
– startup_stm32f10x_ld.s:        for STM32 Low density devices
– startup_stm32f10x_md_vl.s:  for STM32 Medium density Value line devices
– startup_stm32f10x_md.s:      for STM32 Medium density devices
– startup_stm32f10x_hd_vl.s:   for STM32 High density Value line devices
– startup_stm32f10x_hd.s:       for STM32 High density devices
– startup_stm32f10x_xl.s:        for STM32 XL density devices

– startup_stm32f10x_cl.s:        for STM32 Connectivity line devices


-. StdPeriph_Driver –  ST에서 제공하는 페리페럴 드라이버 소스, 사용하는 드라이버 만 올리면 된다.
-. USER – 이건 사용자 소스


STM32 Peripheral power consumption

위 표에서 볼 수 있듯이 APB1은 HCLK을 2분주해서 사용을 하고 APB2는 HCLK를 그대로 사용을 합니다.
따라서 APB2에 연결된 페리페럴이 더 빠르게 동작하며 전류 소비도 더 큽니다.
ADC는 역시 아날로그 파트라 전류 소비가 크군요.