:::: MENU ::::
Browsing posts in: Development

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


USB 컨넥터와 핀맵

USB 1.0 ~ 3.0

  • USB 1 released in 1996 with speeds of 1.5 Mbps for Low-Bandwidth and 12 Mbps for High-Bandwidth;
  • USB 2.0 release in 2000 is the most used usb port at the moment at supports a maximum speed of 480 Mbps;
  • USB 3.0 released in 2008 in the latest standard who can support speed up to 5Gbps.

컨넥터의 종류는 7가지나 된다. 아래 그림을 통해 USB 컨넥터와 핀맵을 확인

usb_pinout

참고: http://www.usbpinout.net/




Fabless: The Transformation of the Semiconductor Industry

무료로 다운로드 받은 책 : 다운로드
Book Cover Final
Table of Contents
Chapter 1: The Semiconductor Century
Chapter 2: The ASIC Business
In Their Own Words: VLSI Technology
In Their Own Words: eSilicon Corporation
Chapter 3: The FPGA
In Their Own Words: Xilinx
Chapter 4: Moving To The Fabless Model
In Their Own Words: Chips And Technologies
Chapter 5: The Rise Of The Foundry
In Their Own Words: TSMC And Open Innovation Platform
In Their Own Words: GLOBALFOUNDRIES
Chapter 6: Electronic Design Automation
In Their Own Words: Mentor Graphics
In Their Own Words: Cadence Design Systems
In Their Own Words: Synopsys
Chapter 7: Intellectual Property
In Their Own Words: ARM
In Their Own Words: Imagination
Chapter 8: What’s Next For The Semiconductor Industry

PCB 제조 관련

  • Plating Finish : leaded or lead-free HASL (Hot Air Solder Leveling) vs ENIG (Electroless nickel immersion gold) plating. HASL pad는ENIG보다 평탄하지 않다.
  • Copper trace: 6 mil
  • Hole size: 0.2 – 0.3mm via 사이즈가 일반적
  • Silk: LPI printing (Liquid photo imaging)이 높은 해상도를 가짐
  • Castellated Holes
  • FreeDFM: https://www.my4pcb.com/net35/FreeDFMNet/FreeDFMHome.aspx

freedfm



SD 메모리 SPI로 제어하기

SD 메모리 카드

SD메모리 는 SDC(Secure Digital Memory Card)를 지칭하며 MMC(Multi Media Card)와 호환된다. 이 SD메모리 카드는 SDIO 또는 SPI로 제어가 가능하다.

SD card pinout

SD 메모리 SPI로 제어하기

SPI 모드는 4가지가 있는데, SD를 제어하기 위해서는  Mode 0를 사용한다. 즉 CPHA = 0, CPOL = 0

SD_SPI_CMD

SPI로 제어시 command는 Command Index(1바이트) + Argument(4바이트) + CRC(1바이트) = 총 6바이트로 구성이되며, 항상 응답코드가 있다. CRC는 CMD0의 경우 0x95, CMD8의 경우 0x87이며, 나머지는 코드에서 0xFF로 처리한다. 아래 링크의 스펙 문서의 부록에 command list 참고

SD spec: https://www.sdcard.org/downloads/pls/simplified_specs/archive/partE1_200.pdf

SD 메모리카드의 인터페이스는 기본적으로 SD모드 이므로 SPI모드로 바꾸기 위해서는 절차가 필요하다.

SD Initialize using SPI

참고할만한 자료


MX 레코드

MX 레코드는 사용자의 메일 계정을 호스팅하는 서버로 메일을 전송하는 도메인에 연결된 DNS 설정이다. 이 설정은 도메인 호스트가 관리하며, 메일이 제대로 전송되도록 하기 위해 일반적으로 여러 개의 서버에 레코드를 만든다. 이렇게 하는 이유는 서버 하나가 다운되더라도 메일이 다른 서버로 라우팅하기 위해서인데, 10, 20, 30 등의 값을 사용하여 우선순위를 부여하며, 숫자가 작을수록 우선순위가 높다.

Google Apps MX 레코드 값

이름/호스트/별칭 TTL*(Time To Live) 레코드 유형 우선순위 값/응답/목적지
공백 또는 @ 3,600 MX 1 ASPMX.L.GOOGLE.COM
공백 또는 @ 3,600 MX 5 ALT1.ASPMX.L.GOOGLE.COM
공백 또는 @ 3,600 MX 5 ALT2.ASPMX.L.GOOGLE.COM
공백 또는 @ 3,600 MX 10 ALT3.ASPMX.L.GOOGLE.COM
공백 또는 @ 3,600 MX 10 ALT4.ASPMX.L.GOOGLE.COM

아두이노 Serial to USB 사용하기

원본소스는 Mac에서 \Resource\Java\hardware\arduino\firmware\atmegaxxu2 아래에 있다. arduino-usbdfu 또는 arduino-usbserial 를 사용한다. 이 소스에는 USB 프레임워크인 LUFA(Lightweight USB Framework for AVRs)가 빠져있으므로 http://www.fourwalledcubicle.com/LUFA.php 에서 다운로드한다. 다운로드한 LUFA 폴더를 arduino-usbserial 폴더와 같은 위치에 복사한다.

make 파일에서 다음과 같은 내용을 수정한다.

LUFA_PATH

# Path to the LUFA library

LUFA_PATH = ../

MCU

MCU = at90usb162  #atmega16u2와 pin to pin 호환임

컴파일된 hex파일은 avr isp등으로 write하면 된다.

이렇게 작업한 내용은 https://github.com/jbkim/usbserial


Pages:1...6789101112...24