chipKIT® Development Platform

Inspired by Arduino™

Problem of using Max32 with Adafruit data logger shield

Created Fri, 13 Sep 2013 20:35:09 +0000 by workstation008


workstation008

Fri, 13 Sep 2013 20:35:09 +0000

Hi there, I am using a Chipkit Max32 and the data logger shield to build a data logger. The max32 part is working fine, because I can use it with another datalog shield that I bought from another website. Then I saw adafruit data logger shield has a built-in real-time clock. So, I decide to try this one with max32. I did not change anything from chipkit max32 board, but reconnect the MOSI, MOSI, SCK and SS pins to the adafruit data logger shield. The connection is

MOSI - pin 11 of adafruit datalog shield MISO - pin 12 SCK - pin 13 CC - pin 10

5V and GND are also connected.

However, the init of SD card is not successful. What I can see from a scope is

  1. The SCK signal is good.
  2. There is active low on SS.
  3. However, the signal on SDI (MISO) pin is very low, though there are some up and down when SCK has a signal.

I believe the hardware of adafruit data log shield is different from that Arduino-compatible data log shield I bought from another resource.

I just wonder if anybody has the similar experience?

Thanks!


majenko

Fri, 13 Sep 2013 20:57:18 +0000

There may be some crude level shifting going on in the Adafruit shield, as it is designed to be run from a 5V MCU. The chipKIT boards use a 3.3V MCU, and if the level shifting is just a simple resistive divider, then the resultant signals will be about 2V instead of the required 3.3V. You will need to look into how to bypass that level shifting to get it to work.


workstation008

Fri, 13 Sep 2013 21:37:59 +0000

I found the voltage level SS pin is around 2V. That is the problem. I will change the 10K resistor to a 5K ohm or even remove the 10K, but the SS pin voltage for high is still around 2V.

There may be some crude level shifting going on in the Adafruit shield, as it is designed to be run from a 5V MCU. The chipKIT boards use a 3.3V MCU, and if the level shifting is just a simple resistive divider, then the resultant signals will be about 2V instead of the required 3.3V. You will need to look into how to bypass that level shifting to get it to work.


majenko

Fri, 13 Sep 2013 21:47:55 +0000

There will be 2 resistors for each line - one in series, and one connecting to ground. You will need to remove the one connecting to ground, and bypass the one in series.


workstation008

Fri, 13 Sep 2013 22:03:55 +0000

The schematic is here.


majenko

Fri, 13 Sep 2013 22:38:52 +0000

Oh right, it has a 4050 to do the level shifting. That should be doing it properly then, and the signals should be 3.3V.

The 10K R5 is there purely to keep the CS signal HIGH when the pin it is connected to is high impedance. That should really be connected to 3.3V instead of 5V, but it shouldn't cause any problems.

I am not sure why you would be reading 2V on that line.