मेरे पास एक एप्लिकेशन है जहां मेरे पास एक माइक्रोकंट्रोलर (NXP LPC1343 ) है जो 16-बिट एसपीआई के माध्यम से एक FPGA से जुड़ा है । एक ही SPI पोर्ट (MISO / MOSI) का उपयोग करते हुए एक एसडी कार्ड भी है लेकिन एक अलग CS / SS पिन के साथ (दोनों SPI विनिर्देश के अनुसार सक्रिय कम हैं)। मुझे जिन चीज़ों की ज़रूरत है उनमें से एक है FAT32 का उपयोग करके एसडी कार्ड पर एक फ़ाइल पर FPGA से डेटा लिखना और यह माइक्रोकंट्रोलर का काम है। माइक्रोकंट्रोलर , एफटीएफएस चला रहा है, जिसे मैंने मज़बूती से काम करने के लिए तैयार किया है।
क्योंकि माइक्रोकंट्रोलर में केवल रैम की थोड़ी मात्रा होती है, केवल एक बार में थोड़ी मात्रा में डेटा को बफर किया जा सकता है। इसलिए, माइक्रो को FPGA से एक बफर पढ़ना है, SPI मोड को 8-बिट में बदलना है, और फिर उस डेटा को FATFS में लिखना है। याद रखें कि एसपीआई मोड के लिए एसडी कार्ड को कॉन्फ़िगर करने के लिए, एक कमांड भेजा जाना चाहिए, जबकि एसपीआई बस 400 किलोहर्ट्ज़ पर चल रही है, और एक निश्चित मात्रा में प्रतीक्षा करनी होगी। इसलिए, मैं केवल एक बार इनिशियलाइजेशन करना चाहूंगा।
हालाँकि, SD कार्ड पर CS को ऊंचा रखने पर भी FPGA पर लेनदेन करना SD कार्ड को एक अजीब स्थिति में डाल देता है, जैसे कि इसे फिर से आरंभीकरण से गुजरना पड़ता है। बेशक यह अवांछनीय है, क्योंकि आरंभीकरण में कई मिलीसेकंड लग सकते हैं, ताकि केवल 4 kB या डेटा (फिर से मेरे माइक्रो की छोटी रैम क्षमता द्वारा सीमित) लिखने के लिए। जैसा कि मुझे जल्द से जल्द कई मेगाबाइट लिखने की जरूरत है, इससे प्रदर्शन लगभग 500 kB / s से 100 kB / s से कम हो जाता है।
मुझे पता है कि SD कार्ड तकनीकी रूप से पूरी तरह से SPI के अनुरूप नहीं हैं, लेकिन इस समस्या को कैसे ठीक किया जा सकता है?