SPP Seems MSP430 पर आधारित है


9

मैं समझदार बिट्स को लॉन्च करने की कोशिश कर रहा हूं, जो कि एक लॉन्चपैड बोर्ड तक पहुंचा है (स्पार्कफुन केबल का उपयोग करके: ऑरेंज P1.6, येलो से P1.5 तक जाता है। यह तब तक सही होना चाहिए, जब तक कि मुझे MOSI और MISO की उलझन न हो। ...)। मेरे पास सीएस नहीं है, क्योंकि मैं बस पाइरेट का उपयोग कर रहा हूं, ताकि कुछ भी देख सकूं।

बस पाइरेट को SPI, 125KHz, क्लॉक पोलरिटी आइडल कम, आउटपुट क्लॉक एज एक्टिव टू आइडल, इनपुट सैंपल फेज मिड / CS के लिए सेट अप किया गया है, आउटपुट सामान्य है।

लॉन्चपैड पर, मेरे पास MSP430G2231 है जिसमें कोई बाहरी क्रिस्टल नहीं है। कोड संगीतकार स्टूडियो का उपयोग करना, मेरे पास निम्नलिखित हैं:

#include  "msp430g2231.h"
volatile unsigned char value=0;

#pragma vector=USI_VECTOR
__interrupt void universal_serial_interface(void)
{
    value+=1;
    USISRL=value;
    USICNT=8;
}
void main(void){
    WDTCTL = WDTPW + WDTHOLD;

    BCSCTL1 = CALBC1_1MHZ;                    // Set range
    DCOCTL = CALDCO_1MHZ;
    BCSCTL2 &= ~(DIVS_3);

    USICTL0 |= USIPE7 +  USIPE6 + USIPE5 + USIMST + USIOE;
    USICTL1 |= USIIE;
    USICKCTL = USIDIV_3 + USISSEL_2;
    USICTL0 &= ~USISWRST;
    USISRL=value;
    USICNT = 8;

    __bis_SR_register(LPM0_bits+ GIE);  
}

इसमें से अधिकांश को विभिन्न नमूनों से एक साथ सिल दिया जाता है। डेटा शीट के बहुत पढ़ने के बाद, ऐसा लगता है कि USI घड़ी 125KHz (1MHz के SMCLK, 8 से विभाजित) पर चलने के लिए सेट है, हालांकि मेरे पास इसे मापने की गुंजाइश नहीं है।

दौड़ते समय, मुझे वही मिलता है जो अनिवार्य रूप से बस के समुद्री डाकू से निकलता है। P ने USI इंटरप्ट वेक्टर की पहली लाइन पर एक ब्रेकपॉइंट लगाया, और यह तीन बार चला गया था, इसलिए मुझे बस समुद्री डाकू से 0, 1, 2 मिलनी चाहिए थी

0x00(0x00)0x00(0x00)][0x40(0x00)]

और इसे मुफ्त चलाने के लिए, मुझे बस इस तरह से सामान मिलता है:

[0xFF(0x00)][0x3F(0x00)][0x7F(0x00)][0xBF(0x00)][0xC0(0x00)0x00(0x00)][0x40(0x00)0x80(0x00)]

जो अभी भी कुछ भी नहीं लग रहा है कि मैं क्या उम्मीद कर रहा हूँ।

मैंने ज्यादातर शाम को चिप के लिए यूजर्स गाइड के माध्यम से गुजारा है, और मैं अभी भी स्तब्ध हूं।

यह लिखते समय, मुझे पता चला कि मैं लॉज एनालाइज़र के रूप में बस पाइरेट का उपयोग कर सकता हूं (LogicSniffer का उपयोग करके), और ऐसा करने के लिए इसे सेट कर सकता हूं। और 0x55 को लिखने के लिए कार्यक्रम को संशोधित किया USISRL, और चीजों को थोड़ा और धीमा USIDIVकरने के USIDIV_4लिए बदल दिया , और यहां परिणाम हैं: यहां छवि विवरण दर्ज करें

घड़ी संकेत अच्छा लग रहा है, LogicSniffer की रिपोर्ट है कि यह 285KHz के बारे में है ... और MOSI है ... विशेष। मैं एक अच्छा वैकल्पिक पैटर्न की उम्मीद करूँगा, क्योंकि मैं 0x55 लिख रहा हूँ, और यह कुछ भी है।

किसी के पास कोई भी विचार है जो मैं गलत कर रहा हूं? दोषपूर्ण चिप? कुछ और?

संपादित करें: ठीक है, मेरी ओर से मूर्खता की मामूली राशि। मैंने उस मान को नहीं बदला जो व्यवधान में SPI को लिखा जाता है। अपेक्षित पैटर्न में यह परिणाम करना:

यहां छवि विवरण दर्ज करें

हालाँकि, एक वृद्धिशील बाइट को लिखने का प्रयास करने से मुझे कचरा हो जाता है: यहां छवि विवरण दर्ज करें

इसलिए, मुझे अभी भी एक समस्या है, जैसा कि मैंने सोचा था कि उतना बड़ा नहीं है ...

EDIT 2: नीचे दी गई टिप्पणियों के लिए धन्यवाद, मैंने अपनी बिजली आपूर्ति (स्पार्कफुन की ब्रेडबोर्ड बिजली की आपूर्ति) को बंद करने के लिए बस पीरेट केबल से जमीन के तार को बांध दिया, जो पहले असंबद्ध था। पहले, उनके द्वारा साझा किया गया सबसे करीबी मैदान USB हब में वापस था मैं इस सभी उपकरणों को बंद कर रहा हूं।

काउंटर प्रोग्राम को चलाते समय MOSI पर यह गड़बड़ दिखती है, और LogicSniffer अब बाइट्स को सही ढंग से डिकोड कर सकता है: यहां छवि विवरण दर्ज करें

मॉनिटर मोड में बस समुद्री डाकू अभी भी अजीब परिणाम रिपोर्ट करता है:

[0x00(0x00)][0x04(0x00)][0x06(0x00)][0x10(0x00)][0x10(0x00)][0x10(0x00)][0x12(0x00)][0x18(0x00)]

यह लिखने के सिरों का पता लगाने में बेहतर प्रतीत होता है (मैं मान रहा हूं कि वर्ग कोष्ठक का परिसीमन क्या है), लेकिन डेटा अभी भी बंद है। मैं अभी चिंतित नहीं हूं कि तरंग बेहतर दिख रही है, लेकिन यह जानना अभी भी अच्छा होगा कि बस समुद्री डाकू क्यों भ्रमित हो रहे हैं।


3
यह अंतिम आरेख जैसा दिखता है कि इसमें MOSI लाइन पर ग्लिच हैं, क्लच से क्रॉसस्टॉक हो सकता है। क्या आप एक आस्टसीलस्कप? आप क्या वायरिंग कर रहे हैं - क्या आपके पास BusPirate और MSP430 के बीच अच्छा ठोस मैदान है?
मार्टिन थॉम्पसन

2
मैं @MartinThompson से सहमत हूं। MOSI लाइन गड़बड़ है और बस समुद्री डाकू भ्रमित हो रहा है। यदि आप दूसरी तस्वीर पर थोड़ा ध्यान देते हैं और अनदेखा करते हैं कि बस समुद्री डाकू क्या सोचता है तो यह देखता है (मैंने विंडोज कैलकुलेटर में देखा बाइनरी टाइप किया और हेक्स में परिवर्तित हो गया) आपको 6B-6C-6D मिलता है, जैसा आप चाहते हैं। आपको बस समुद्री डाकू और एमएसपी के बीच तारों को साफ करने की आवश्यकता है।
embedded.kyle

मैं इसे while(1);समाप्त करने और यादृच्छिक सामान करने के लिए मुख्य () के अंत में एक या समकक्ष नहीं देखता ।
ओली ग्लेसर

2
@OliGlaser, अगर मैं शीट को सही से पढ़ रहा हूं, तो LPM0 में जाना वास्तव में एक निष्पादन होने तक सीपीयू निष्पादन को रोक देता है। यदि टीआई के सभी नमूने इसका उपयोग नहीं करते हैं, तो अधिकांश। यह समझ में आता है, क्योंकि वे MSP430s को कम बिजली भागों के रूप में बताते हैं, और एक व्यस्त लूप बहुत बिजली के अनुकूल नहीं है।
मैट सिएकर

1
ओह माय, मैंने अभी देखा> यह 1 साल पुराना है।
अपलोपोहपा १६'१३ को

जवाबों:


3

MSP430 एक MCU उदाहरण है जो CPHA नामकरण सम्मेलन को उल्टा करता है, इस प्रकार मानक SPI विवरण से भिन्न होता है: TI MSP430 CPOL के बजाय UCCKPL नाम का उपयोग करता है, और इसका UCCKPH CPHA का विलोम है। जब दो चिप्स एक साथ जोड़ते हैं, तो सही सेटिंग्स का उपयोग सुनिश्चित करने के लिए घड़ी चरण आरंभीकरण मूल्यों की सावधानीपूर्वक जांच करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.