2012-04-27 32 views
19

Follow-Up question on Electrical Engineering Stackexchangeब्लूटूथ निम्न ऊर्जा - एक विशेषता मूल्य को अद्यतन करने के बार-बार

मैं (एक संभावित उपयोग की स्थिति के रूप में, एक माउस की कल्पना) समय की एक छोटी राशि में बार-बार एक ब्लूटूथ निम्न ऊर्जा विशेषता का मान लिखना चाहते हैं।

  • एक 128bit UUID के साथ विशेषता 20 बाइट लंबा है। इसलिए, इसे एक कम ऊर्जा लेनदेन में लिखा जा सकता है।
  • लेखन 50 हर्ट्ज की दर से होते हैं, जो प्रत्येक 20ms पर एक बार लिखने के बराबर होता है।
  • इसलिए, 20 * 50 * 8 = 8 केबीटी/एस लिखा गया है।
  • मैं कमांड/का उपयोग कर रहा हूं विशेषता लिखने के बिना लिखें। इसलिए, विशेषता परत पर कोई पावती नहीं होती है।
  • कोई अन्य ब्लूटूथ या ब्लूटूथ कम ऊर्जा डिवाइस जुड़े हुए हैं। डब्लूएलएएन पर कुछ भी नहीं किया जाता है। परीक्षण के दौरान कोई अन्य विशेषताओं को पढ़ या लिखा नहीं जाता है।

मैं आईफोन 4 एस से अनुक्रम संख्या वाले पैकेट भेजकर प्रोग्राम का परीक्षण करता हूं। अनुक्रम संख्या प्रत्येक भेजे गए पैकेट के बाद एक द्वारा बढ़ाया जाता है।

प्राप्त करने वाले पक्ष पर, एक प्रोग्राम करने योग्य विकास बोर्ड, जिसमें CSR1000 बीएलई चिप शामिल है, का उपयोग किया जाता है जो पैकेट प्राप्त करता है और प्राप्त अनुक्रम संख्या को सीरियल कनेक्शन में प्रिंट करता है।

मेरे समस्याओं निम्नलिखित हैं:

  • कुछ समय के बाद, पैकेट गिरा दिया हो रही शुरू करते हैं। पहले ~ 100 पैकेट ठीक @ 50 हर्ट्ज काम करते हैं। तब से, पैकेट गिरावट शुरू हो जाते हैं।

      0x00 - 0x46 received 
          0x47, 0x48 missing 
    0x49, 0x4a, 0x4b, 0x4c received 
            0x4d missing 
    0x4e, 0x4f, 0x50, 0x51 received 
            0x52 missing 
    0x53, 0x54, 0x55, 0x56 received 
            0x57 missing 
    ... 
    

    अक्सर, चार पैकेट के एक पैकेट से फैलता है ठीक (शायद ही कभी, केवल 2 पैकेट)। फिर, 1-7 पैकेट गायब हैं।

    जब मैं विशेषता मूल्य आकार को कम करता हूं, तो समस्या अभी भी बनी रहती है।

    जब मैं 50 हर्ट्ज की बजाय 100 हर्ट्ज पर लिखता हूं, तो तस्वीर समान होती है - केवल 35 पैकेट के बाद बूंदें शुरू होती हैं और चार पैकेट के सफल संचरण के बीच 5-7 पैकेट गिराए जाते हैं।

    खोए हुए पैकेट के साथ, परिणामी संचरण दर लगभग 5 केबीटी/एस है, चाहे लिखने की आवृत्ति के बावजूद। यह स्पष्ट रूप से ~ 305 केबीटी/एस से नीचे है जो ब्लूटूथ कम ऊर्जा पर तकनीकी रूप से संभव होना चाहिए।

  • समस्या भी विपरीत दिशा में होती है, जब मैं विकास बोर्ड से आईफोन 4 एस में पैकेट भेज रहा हूं। दोबारा, 5 केबीटी/एस अधिकतम है जो मुझे मिल रहा है। इस परिदृश्य के लिए अधिसूचना तंत्र का उपयोग किया जाता है। फिर, विशेषता परत पर कोई पावती नहीं होती है।

  • जब मैं दोनों दिशाओं को एक साथ भेजने की कोशिश करता हूं, तो चीजें उस बिंदु तक उड़ने लगती हैं जहां मुझे विकास बोर्ड और आईफोन 4 एस दोनों को रीसेट करना होता है।

सवाल:

  • इस ब्लूटूथ निम्न ऊर्जा चिप की एक समस्या हो सकती है कि विकास बोर्ड पर प्रयोग किया जाता है?

    यदि हां, तो समस्या विपरीत दिशा में क्यों होती है, जहां आईफोन रिसीवर के रूप में कार्य करता है?

    क्या बाजार में कोई विकास बोर्ड है जो विशेषताओं तक उच्च आवृत्ति पहुंच का समर्थन करता है?

  • समस्या की उत्पत्ति क्या हो सकती है?

    कृपया धारणाओं के अतिरिक्त ब्लूटूथ स्पेक/प्रस्तुति स्लाइड्स/आलेखों के हिस्सों को संदर्भित करने का प्रयास करें।

बाजार पर ब्लूटूथ कम ऊर्जा चूहों मौजूद हैं। चूहे में 125 हर्ट्ज की सामान्य मतदान दर होती है और कम से कम दो 16 बाइट मूल्यों और प्रति छड़ी अतिरिक्त छिपाई ओवरहेड भेजना पड़ता है। इसलिए, मेरी समस्या का समाधान उपलब्ध होना चाहिए।

अद्यतन

ले कनेक्शन पूर्ण घटनाब्लूटूथ विशिष्टता संस्करण 4.0 खंड 2 भाग ई धारा 7.7.65.1 में वर्णित है। मैं अलग कनेक्शन मापदंडों के लिए निम्न मान प्राप्त करते हैं:

Parameter    Value  Description 
-------------------------------------------------- 
Conn_Interval   0x0054  Time = 105 ms 
Conn_Latency   0x0000  Time = 0 ms 
Supervision_Timeout  0x00fc  Time = 2520 ms 
Master_Clock_Accuracy  0x05    50 ppm 
+0

क्या ली चिप/देव बोर्ड आप उपयोग कर रहे हैं? –

+1

कनेक्शन के लिए आपने किन पैरामीटर सेट किए हैं - क्या आप डिफ़ॉल्ट का उपयोग कर रहे हैं? –

+0

आप कनेक्शन समय कैसे देखते हैं? – chwi

उत्तर

14

जारी करने वाले एक कनेक्शन पैरामीटर अद्यतन को ~ 33 kbit/s से 5 kbit/s समस्या और प्रवाह में वृद्धि हुई हल किया। हालांकि, यह अभी भी अपेक्षित ~ 305 केबीटी/एस से नीचे है।

Conn_Interval = 0x000f = 18.75 ms 
Conn_Latency = 0x0000 
Supervision_Timeout = 0x00fc 

क्या पूर्ण ~ 305 केबीटी/एस तक पहुंचने के लिए कोई तरीका है?

Follow-Up question on Electrical Engineering Stackexchange

एक TSI जल और एक महीने के लिए इंतजार कर रहे द्वारा एप्पल से एक उत्तर मिल सकती है।

असल में, वे बताते हैं कि व्यवहार आईओएस 5.1 में है। यह किसी भी तरह समझ में आता है, क्योंकि वे नहीं चाहते हैं कि आपके ऐप का प्रदर्शन इस बात पर निर्भर करता है कि कोई अन्य ऐप ब्लूटूथ या वाईफाई का उपयोग करता है या नहीं।

प्रति इंजीनियरों टिप्पणी - आईओएस 5.1 के तहत वहाँ एक कनेक्शन अंतराल के दौरान सूचनाओं के 6 जोड़े होना चाहिए, जिसका अर्थ है 6 * packetSize * 1000/अंतराल। इसका अनुवाद ~ 55 केबीपीएस अधिकतम (न्यूनतम अंतराल 20ms है, पैकेटसाइज 23 बाइट्स) का अनुवाद करना चाहिए। हमने का निर्णय प्रति अंतराल की संख्या को सीमित कर दिया है और के कारण न्यूनतम अंतराल है, इस तथ्य के लिए कि आईफोन और आईपैड दोनों ने बीटी क्लासिक, बीटी ली और वाईफ़ाई के बीच एंटीना साझा किया है।

आईओएस ली को कम बिजली परिवहन के लिए डिज़ाइन किया गया है। उच्च थ्रूपुट बीटी क्लासिक के लिए एक बेहतर परिवहन विधि है।

मेरे पास वापस - इंजीनियरों की टिप्पणियों के आधार पर, अगर 200 केबीएस थ्रूपुट प्राप्त करने की इच्छा है, तो क्लासिक ब्लूटूथ जवाब है। हालांकि, अगर आईफोन पर किसी एप्लिकेशन के साथ काम करना है, तो मैं समझ सकता हूं कि यह कोई आसान बदलाव नहीं है - क्लासिक बीटी को एमएफआई लाइसेंसिंग की आवश्यकता है।

2

मुख्य समस्या होने के लिए है कि यह चिप आप उपयोग कर रहे पर एक बफर समस्या है लग रहे हैं। कोर विनिर्देश, खंड 3, भाग एफ, 3.3.2 से:

सूचनाओं के लिए, जो एक प्रतिक्रिया PDU की जरूरत नहीं है, वहाँ कोई प्रवाह नियंत्रण है और एक अधिसूचना किसी भी समय भेजा जा सकता है।

कमांड जिनके पास प्रतिक्रिया की आवश्यकता नहीं है, उनके पास कोई प्रवाह नियंत्रण नहीं है। नोट: सर्वर को कमांड के साथ बाढ़ आ सकती है, और एक उच्च परत विनिर्देश यह परिभाषित कर सकता है कि इसे होने से कैसे रोकें।

बफर ओवरफ्लो या अन्य कारणों के कारण प्राप्त किए गए आदेश और अधिसूचनाएं संसाधित नहीं की जा सकती हैं, लेकिन उन्हें हटाया नहीं जा सकता है। इसलिए, उन पीडीयू अविश्वसनीय माना जाना चाहिए।

+0

समस्या बोर्ड से आईफोन 4 एस की दिशा में समस्या भी मौजूद है। – Etan

+1

यहां वर्णित आदेश और अधिसूचनाएं लिखें, इसमें कोई अंतर्निहित प्रवाह नियंत्रण तंत्र नहीं है। यदि आप स्टैक के आंतरिक बफर को ओवरफ्लो करते हैं तो क्या होता है यह परिभाषित करने के लिए कार्यान्वयन को कम किया जाता है। जब ऐसा होता है तो आईफोन व्यवहार के लिए, इस प्रश्न को ऐप्पल ब्लूटूथ मेलिंग सूची में पोस्ट करने का प्रयास करें। – introiboad