Initialization
In idle state, the card ยอมรับเฉพาะ CMD0, CMD1, CMD8, ACMD41, CMD58 and CMD59. Any other commands จะถูกปฏิเสธ. ในเวลานี้, OCR register ควรถูกอ่านด้วย CMD58 เพื่อเช็ค the working voltage range of the card. ในกรณีที่ the system sypply voltage อยู่นอกช่วง working voltage range, the card ต้องถูกปฏิเสธ. โปรดทราบว่า all cards ทำงานที่ supply voltage ในช่วง 2.7 ถึง 3.6 volts เป็นอย่างน้อย, ดังนั้น the host contoller ไม่จำเป็นต้องเช็ค the OCR ถ้า supply voltage อยู่ในช่วงนี้. The card เริ่มต้น the initialization process เมื่อ a CMD1 ถูกรับ. เพื่อตรวจหา end of the initialization process, the host controller จำเป็นต้องส่ง CMD1 และเช็ค the response จนกระทั่ง end of the initialization. เมื่อ the card ถูกเริ่มต้นเรียบร้อยแล้ว, In Idle State bit ใน the R1 response จะถูกเคลียร์ (R1 resp เปลี่ยน 0x01 เป็น 0x00). The initialization process อาจใช้เวลาหลายร้อยมิลลิวินาที (การ์ดขนาดใหญ่มักจะนานกว่านั้น) ดังนั้นนี่คือการพิจารณาเพื่อกำหนด the time out value. หลังจาก the In Idle State bit ถูกเคลียร์, the card ก็พร้อมที่จะยอมรับ the generic read/write commands.
เนื่องจาก ACMD41 แทน CMD1 ถูกแนะนำสำหรับ SDC, ให้ลองใช้ ACMD41 ก่อนและลองอีกครั้งด้วย CMD1 หากถูกปฏิเสธ เหมาะอย่างยิ่งที่จะรองรับการ์ดทั้งสองประเภท.
The SCLK frequency ควรถูกเปลี่ยนให้เร็วที่สุดเท่าที่เป็นได้เพื่อให้สูงสุด the read/write performance. The TRAN_SPEED field ใน the CSD register แสดงให้เห็น the maximum clock frequency of the card. มันเป็น 20MHz สำหรับ MMC, 25MHz สำหรับ SDC ในกรณีส่วนใหญ่. โปรดทราบว่า the clock freqency จะสามารถที่จะถูกคงที่เป็น 20/25MHz ใน SPI mode เนื่องจากไม่มี open-drain condition ที่จำกัด the clock frequency.
The initial read/write block length อาจถูกเซ็ต 1024 บน 2 GB cards, ดังนั้น the block size ควรถูกเริ่มต้นใหม่เป็น 512 ด้วย CMD16 เพื่อทำงานกับ FAT file system.