बनाते समय परिधीय त्रुटि को संभालना मैं आरएक्स और टेक्सास दोनों के लिए डीएमए का उपयोग करके यूएआरटी परिधीय के साथ संवाद करने की कोशिश कर रहा हूं। मैं एचएएल लाइब्रेरी का उपयोग कर रहा हूं जो एसटी (एसटीसीयूबीएमएक्स के साथ जेनरेट) द्वारा आपूर्ति की जाती है।एसटीएम 32 एफ 4 डीएमए ट्रांसफर (आरएक्स)
मैं 1.5 एमबीओड के साथ एक यूएआरटी चैनल को संभालने वाला हूं - इसलिए किसी भी डेटा को खोने के लिए, मैंने डीएमए को प्रत्यक्ष मोड में सर्कुलर बफर के साथ कॉन्फ़िगर किया है, और डेटा की देखभाल करने के लिए आधे स्थानान्तरण इंटरप्ट को संभाला है , और आने वाले अधिक डेटा के लिए डीएमए ऑनलाइन रखें।
समस्या यह है कि कभी-कभी मैं यूएआरटी के स्टेटस रजिस्टर में देख सकता हूं कि फ़्रेम त्रुटि बिट चालू है, और कभी-कभी ओवररन त्रुटि ध्वज भी चालू होता है।
मैं खोए बाइट्स (संरचित पैकेट पर सीआरसी का उपयोग करके) को संभाल सकता हूं, लेकिन समस्या यह है कि परिधीय डेटा प्राप्त करना बंद कर देता है - लेकिन डीएमए त्रुटि नहीं उठाता है, या स्थानांतरण को रोकता है।
तो यदि मैं डेटा प्राप्त करने का प्रयास करता हूं, और ध्वज सिस्टम पर लटकता है।
मैंने देखा कि एचएएल एक __weak फ़ंक्शन प्रदान करता है जो UART_Error को संभालना चाहिए, लेकिन इसे कभी नहीं कहा जाता है - और एचएएल हैंडल में स्थिति सामान्य बनी हुई है। रजिस्टर पर केवल एक नज़र बता सकता है कि कोई समस्या है।
मुझे इस तरह की त्रुटियों को कैसे पहचान/संभालना चाहिए?
धन्यवाद