2015-06-18 04:29 AM
Hello everybody,
I use a SD card (SDIO). - When the SD card is inserted but not mounted, my analog inputs convert voltages with a very good precision.- When I mount the SD card, my analog inputs starts to convert voltages with a very poor precision. - When I unmount the SD card, same problem. - When I unplug the SD card, my analog inputs convert voltages with a very good precision.- When I re-plug the SD card, same problem of precision.I think it's because the SD card plugged and mounted causes a lot of interference? I tried to analyze the electromagnetic field near the SD card and it's true, when the SD is mounted there is a lot more interference.The fact is, in my board design, the analog inputs tracks are routed near the SD card. There is a high probability that the analog inputs capture the noise of the SD, do you ever experienced this problem?Do you think there is any workaround? I can't change my electronic design... For example, can I fully deactivate the SD after the unmount? Because the unmount is not enough and there is still interference.Thanks a lot for your help, I hope there is solution!2015-06-18 11:24 AM
Does the unmount turn off the SDIO peripheral and deinit the pins?
Do you see a clock signal?2015-06-19 02:26 AM
Hello Clive,
I only use the fatfs library to unmount the SD card,/*-----------------------------------------------------------------------*/
/* Mount/Unmount a Logical Drive */
/*-----------------------------------------------------------------------*/
FRESULT f_mount (
BYTE
vol,
/* Logical drive number to be mounted/unmounted */
FATFS *fs
/* Pointer to new file system object (NULL for unmount)*/
)
{
FATFS *rfs;
if
(vol >= _VOLUMES)
/* Check if the drive number is valid */
return
FR_INVALID_DRIVE;
rfs = FatFs[vol];
/* Get current fs object */
if
(rfs) {
#if _FS_LOCK
clear_lock(rfs);
#endif
#if _FS_REENTRANT /* Discard sync object of the current volume */
if
(!ff_del_syncobj(rfs->sobj))
return
FR_INT_ERR;
#endif
rfs->fs_type = 0;
/* Clear old fs object */
}
if
(fs) {
fs->fs_type = 0;
/* Clear new fs object */
#if _FS_REENTRANT /* Create sync object for the new volume */
if
(!ff_cre_syncobj(vol, &fs->sobj))
return
FR_INT_ERR;
#endif
}
FatFs[vol] = fs;
/* Register new fs object */
return
FR_OK;
}
I do not deinit the SDIO pins after the unmount, is it safe to init the pins each time I want to read/write the card?
2015-06-19 03:17 AM
I do not deinit the SDIO pins after the unmount, is it safe to init the pins each time I want to read/write the card?
I have no idea, but it's probably more practical then removing and reinserting the card. Perhaps you can writing enough data in a burst that the card goes into sleep mode between them.2015-06-19 03:45 AM
I try to deinit the SD card and power off it after each communication and now it's working well! I use the SD card only for some save/load (with lot of datas, no real time) so I think it might be not a problem to init/deninit each time.
I can see that there is no interference any more. It's a good point for EMC standards I think :)