티스토리 뷰

프로젝트/microSD

SD memory card - CID

Just4Fun 2017. 7. 17. 22:13

위의 그림은 SD memory card의 내부 구조를 간단히 보여주고 있는 것이다.  SD 메모리 안에는 8개의 레지스터가 있는데, OCR은 이미 앞의 글에서 읽어 보았고, 이번 글에서는  CID 레지스터를 읽어 보는 방법에 대해서 설명하도록 하겠다.

다음 글에서는 CSD 레지스터를 읽어 보아서 어떤 내용이 들어 있는지 알아볼 예정이다.

CID 레지스터는 위의 그림과 같이 128비트의 정보를 가지고 있다.  위의 그림을 보면 알겠지만 SD 메모리 카드 자체를 구별하기 위한 정보를 제공하고 있다.

제조할 당시에 들어가는 내용들이 많이 있음을 알 수 있다.

CID 레지스터를 읽기 위해서는 CMD10(SD_CMD_SEND_CID) 명령을 이용하면 된다.

User Interface - CLI2에서 설명한 방법을 이용하여 UART 콘솔창에서 명령으로 CID 레지스터 값을 읽어 보도록 하겠다.

15번 줄에서 SD 메모리 카드와의 인터페이스를 위하여 sd_cmd_request() 함수를 이용하는것을 볼 수 있다.  sd_cmd_request() 함수의 첫번째 인자는 command index 번호와 command argument, 그리고 response type을 알려주기 위하여 사용한다.

두번째 인자는 나중에 설명하게 될 메모리에서 데이터를 읽거나 쓰기 동작을 할 때 필요한 버퍼의 포인터와 블럭 카운터 등을 알려주기 위하여 사용한다.

메모리 카드 내부에 있는 레지스터 값을 읽을 때에는 두번째 인자가 불필요하므로 NULL값을 넘겨 준다.

command와 data 구조체는 위와 같이 정의 한다.

CID와 CSD 레지스터를 읽을 때의 response type은 R2이다.  위의 코드 28번줄을 보면 response type이 R2일 경우 read_data() 함수를 이용하는 것을 알 수 있다.

cid 명령을 수행한 결과화면을 볼 수 있다.



microSD_cid.zip


'프로젝트 > microSD' 카테고리의 다른 글

SD memory card - Write  (3) 2017.07.29
SD memory card - Read  (0) 2017.07.26
SD memory card - CSD  (0) 2017.07.25
SD memory card - 초기화  (16) 2017.07.14
SD memory card - 준비  (0) 2017.07.14
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함