এসপিআই মোডের কোনও এসডি কার্ডটি কি চিপকে সম্মান জানায় / ক্রীতদাস নির্বাচন করে? আমার অ্যাপ্লিকেশনটিতে পুনরায় সেট করা লাগছে


9

আমি কোথায় আমি একটি মাইক্রোকন্ট্রোলার (এনএক্সপি আছে একটি অ্যাপ্লিকেশন আছে LPC1343 ) যা সংযুক্ত করা হয় FPGA 16 বিট SPI মাধ্যমে। একই এসপিআই পোর্ট (এমআইএসও / এমওএসআই) ব্যবহার করে একটি এসডি কার্ড রয়েছে তবে আলাদা সিএস / এসএস পিনের সাথে (এসপিআই স্পেসিফিকেশন অনুযায়ী উভয়ই সক্রিয় রয়েছে)। আমার যা করা দরকার তার মধ্যে একটি হ'ল এফপিজিএ থেকে এসডি কার্ডের একটি ফাইতে FAT32 ব্যবহার করে ডেটা লিখুন এবং এটি মাইক্রোকন্ট্রোলারের কাজ। মাইক্রোকন্ট্রোলার ফ্যাটএফএস চালাচ্ছে , যা আমি নিজে থেকে নির্ভরযোগ্যভাবে কাজ করতে পেরেছি।

যেহেতু মাইক্রোকন্ট্রোলারের কাছে কেবল অল্প পরিমাণে র‍্যাম থাকে, কেবলমাত্র অল্প পরিমাণে ডেটা একবারে বাফার করা যায়। সুতরাং, মাইক্রোকে এফপিজিএ থেকে একটি বাফার পড়তে হবে, এসপিআই মোডটি 8-বিটে পরিবর্তন করতে হবে এবং তারপরে এফএটিএফএসে ডেটা লিখতে হবে। স্মরণ করুন যে এসপিআই মোডের জন্য এসডি কার্ডটি কনফিগার করতে, এসপিআই বাসটি 400 কিলাহার্টজ চলমান অবস্থায় একটি কমান্ড প্রেরণ করতে হবে, এবং একটি নির্দিষ্ট পরিমাণের জন্য অপেক্ষা করতে হবে। অতএব, আমি কেবল একবার সূচনা করতে চাই।

যাইহোক, এসডি কার্ডে সিএস উচ্চ ধরে থাকা সত্ত্বেও এফপিজিএতে লেনদেনগুলি সম্পাদন করা এসডি কার্ডটিকে একটি অদ্ভুত অবস্থায় ফেলেছে বলে মনে হয় এটি আবার আরম্ভের মধ্য দিয়ে যেতে হবে। অবশ্যই এটি অনাকাঙ্ক্ষিত, যেহেতু সূচনাটি কয়েক মিলিসেকেন্ডে নিতে পারে, কেবল মাত্র 4 কেবি বা তার বেশি ডেটা লিখতে (আবার আমার মাইক্রোটির ছোট র‌্যামের সামর্থ্য দ্বারা সীমাবদ্ধ)। যত তাড়াতাড়ি সম্ভব আমাকে বেশ কয়েকটি মেগাবাইট লিখতে হবে, এটি প্রায় 500 কেবি / এস থেকে 100 কেবি / সেকেন্ডের চেয়ে কম পারফরম্যান্স হ্রাস করে।

আমি সচেতন যে এসডি কার্ডগুলি প্রযুক্তিগতভাবে সম্পূর্ণ এসপিআই-এর অনুগত নয়, তবে কীভাবে এই সমস্যাটি ঠিক করা যায়?


যতদূর আমি জানি এটি এটি সম্মান করা উচিত। অন্য একটি এসডি কার্ড চেষ্টা করতে পারেন?
মার্কো

এইটা একটা ভালো প্রশ্ন. এটি জিজ্ঞাসা করার (এবং উত্তর দেওয়ার জন্য) ধন্যবাদ
markrages

উত্তর:


7

ঠিক আছে, আমি এটি আসলে খুঁজে পেয়েছি। আমার কিছুটা গভীর গভীরে যাওয়া উচিত ছিল। দেখা যাচ্ছে যে এমএমসি / এসডিসি কীভাবে ব্যবহার করবেন সে অনুযায়ী বাস ভাগ করে নেওয়ার সময় এসডি কার্ডগুলি এসপিআই ডিভাইসের মতো হুবহু কাজ করে না :

এসপিআই বাসে প্রতিটি স্লেভ ডিভাইস পৃথক সিএস সংকেত দিয়ে নির্বাচন করা হয় এবং বহুবচন ডিভাইসগুলি এসপিআই বাসের সাথে সংযুক্ত করা যায়। জেনেরিক এসপিআই ক্রীতদাস ডিভাইস এসপিআই বাস ভাগ করে নেওয়ার জন্য সিএস সিগন্যালের মাধ্যমে তার ডিও সিগন্যাল চালায় / প্রকাশ করে।

তবে, এসএমএলকে সিঙ্ক্রোনাইজ করার ক্ষেত্রে এমএমসি / এসডিসি ড্রাইভ / ডিও সিগন্যাল প্রকাশ করে। এর অর্থ এমএমসি / এসডিসি এবং কোনও এসপিআই বাসের সাথে সংযুক্ত যে কোনও এসপিআই দাসদের সাথে বাসের সংঘাতের সম্ভাবনা রয়েছে। ডান চিত্রটি এমএমসি / এসডিসির ড্রাইভ / প্রকাশের সময় দেখায় (ডিও সিগন্যালটি বাসের অবস্থা দেখতে 1/2 ভি সিসিতে টানা হয় )। সুতরাং এমএমসি / এসডিসি ডিও সিগন্যাল রিলিজ করতে, মাস্টার ডিভাইসটি সিএস সিগন্যাল নির্মূল হওয়ার পরে একটি বাইট প্রেরণ করতে হবে।

এসডি কার্ড এবং এফপিজিএ সম্ভবত ডিও চালানোর চেষ্টা করছিল এবং এসডি কার্ডটি হারিয়ে গেল, তাই এটি পুনরায় সেট হয়ে গেল। অতিরিক্ত বাইট প্রেরণে এটি ঠিক হয়ে গেছে বলে মনে হচ্ছে।


এটি আপনাকে এফপিজিএ এবং কার্ডের মধ্যে বিকল্পের অনুমতি দেয়, তাই না? আপনি কি দেখতে পেয়েছেন যে ডেটা স্থানান্তর এবং পুনরায় শুরু করার সময় আপনি বাধা দিতে পারেন? এটি এলম-চ্যানে যা বলে তা থেকে মনে হচ্ছে এটি সম্ভব নয়, তবে আপনি এটি নিশ্চিত করেছেন বা অস্বীকার করেছেন কিনা তা জানতে আগ্রহী।
krs013

1
হ্যাঁ, এটি এফপিজিএ এবং এসডি এর মধ্যে বিকল্প হিসাবে প্রত্যাশার মতো কাজ করে তবে আপনি ফ্যাটএফএএস-এর কলগুলির মধ্যে স্থানান্তরকে বাধা দিতে পারবেন না। কমপক্ষে আমি এই কাজটি করতে সক্ষম হইনি। এর অর্থ আপনি ভাগ করে নেওয়া এসপিআই বাস ব্যবহার করে কোনও সেন্সর থেকে কোনও ফাইল লেখার সময় এবং পড়ার সময় (উদাহরণস্বরূপ) কোনও বাধার প্রতিক্রিয়া জানাতে পারবেন না।
জুনুফু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.