Hello!
I can't understand why it didn't worked using power from controller's IO pin.
Check the specs of your IO pins. A regular SD card may need up to 50 mA to work.
(I verified on many SD cards, and I remember having commonly measured power
consumption rates around 40 mA when writing, so 50 mA is a good worst-case estimate.)
The current you cant draw from an IO pin depends on the device. As I use a lot of MSP430
devices, I know that the max power you can draw is around 20 mA. It's OK to blink a LED,
but not to drive an SD card.
Now why you get a lot of noise is simple. When the SD card is idle, it does not draw any
current (or at least something very week, a few microamps). If you switch it on by
sending commands, then it starts drawing power. In this case, since the IO pin cannot
feed enough, then the power voltage drops.
Now I understand your idea: you probably avoid to power the SD card permanently.
In this case, you have to put a FET transistor on the high side (between the board
power and the SD power pin), and command this FET from the IO port you were
using. The idea is fine. However, you should verify how much current your idle
FET will draw vs how much current a permanently powered SD card would draw.
Sometimes, the power saving is so small that it's not worth the added complexity.
And it's also a good source of unforeseen trouble. Think also that you will have
to restart the card initialization every time you switch it on.
Dora.