Reading an SD card with an ATMEGA168


Posted on Feb 6, 2014

The SD card can be talked to with three different transfer modes: 1-bit SD mode, 4-bit SD mode and SPI mode. According to Wikipedia, all cards must support all three modes except for micro SD where the SPI mode is optional. I will nonetheless try to read my micro SD with the SPI mode. I found a circuit example on the following page. The MCU is a


Reading an SD card with an ATMEGA168
Click here to download the full size of the above Circuit.

5V-powered ATMEGA16. The SD card is powered through a 3. 3V regulator. The author used resistor dividers to connect the SD card inputs to the ATMEGA16 SPI pins. I bought the same regulator and thought, why not instead try to power the ATMEGA168 directly with 3. 3V thus avoiding the need for a voltage adaptation. The ATMEGA168 datasheet tells me that at 3. 3V the maximum safe frequency is 16MHz so I can keep my current crystal. SPI stands for Serial Peripheral Interface. This interface allows high speed synchronous transfers between a MCU and a peripheral or another MCU. The ATMEGA168 datasheet contains the following figure that highlights the powerful simplicity of this interface: Each side of the interface has a 8-bit shift register. The left side is the master and the right side is the slave. When the master initiates a transfer to the slave, its SPI clock signal triggers a bit-by-bit copy of each register to the other one. Sending a byte from the master always involves receiving a byte from the slave. The master SPI clock dictates the speed of the transfer. For the ATMEGA168 the maximum speed is Fclk/2. So with a 16 MHz crystal, the maximum theoretical bandwidth is 8Mbit/s, or 1MByte/s. A regular card should support a clock of 25 MHz. Here is some code adapted from the ATMEGA168 datasheet to initialize the SPI interface and do a transfer. A single function is enough to send or receive a byte or both. void spi_init(void)...




Leave Comment

characters left:

Related Circuits

  • New Circuits

    .

     


    Popular Circuits

    Timer circuit
    Audio 10 LED VU meter
    Sensitive field-strength meter
    Positive-regulator-with-pnp-boost
    two servo walking robot using TI launchpad
    12V lead acid battery charger by LM317K
    Function Generator
    TPS3803G15 Single Voltage Detector
    Electronic Siren Circuit
    Infrared Remote Tester
    Reading and writing Atmega168 EEPROM Tutorial



    Top