sd卡拔插或重新上電後無法繼續使用(初始化失敗)

最近1個項目需要用到sd卡保存採集數據,起初是stm驅動一大堆bug,浪費了好幾天的時間。接着又出現了這個問題。

描述:sd卡拔插或重新上電後無法繼續使用,表現爲初始化失敗,但是,格式化一次後又可以使用了。一旦拔插或斷電,問題又出現。

分析:起初天真的認爲,是不是因爲拔插或斷電的時候,SD卡正好在讀寫數據所導致,於是把sd讀寫相關的代碼全部註釋掉。可是,問題依舊存在。後來又想是不是SD卡本身的原因,於是乎換了1張卡,問題依舊。那麼,到底是什麼原因呢,是因爲sd卡延時80個時鐘太短了嗎?於是加到10ms,問題依舊,最後一狠心將加到了1000ms,嘿,奇蹟出現了,問題沒了。爲了確定,又把延時設回10ms,問題又出現了,於是再設回1000ms,問題又沒了,如此數遍,本人終於確定,是延時不夠所導致,本人猜測,可能是電路板上的電容造成了sd卡上電曲線比較平滑,也就是說上電被延遲了,導致初始化的時候sd還沒準備好。

解決方法:MCU上電後,先延時1000ms,然後在初始化外設。


注意事項:初始化外設的時候,有時候要有先後順序,否則,很有可能會出現一些莫名其妙的錯誤,所以,碰到初始化失敗的問題時,可以試着調整一下外設初始化的順序,換換代碼的位置,有時候問題就真的解決了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章