Zigbee EZSP UART সম্পর্কে

লেখকঃ টর্চিআইওটিবুটক্যাম্প
লিঙ্কঃ https://zhuanlan.zhihu.com/p/339700391
থেকে: Quora

1। পরিচিতি

সিলিকন ল্যাবস জিগবি গেটওয়ে ডিজাইনের জন্য একটি হোস্ট+এনসিপি সমাধান অফার করেছে।এই আর্কিটেকচারে, হোস্ট UART বা SPI ইন্টারফেসের মাধ্যমে NCP এর সাথে যোগাযোগ করতে পারে।সাধারণত, UART ব্যবহার করা হয় কারণ এটি SPI এর চেয়ে অনেক সহজ।

সিলিকন ল্যাবস হোস্ট প্রোগ্রামের জন্য একটি নমুনা প্রকল্পও প্রদান করেছে, যা নমুনাZ3GatewayHost.নমুনাটি ইউনিক্সের মতো সিস্টেমে চলে।কিছু গ্রাহক একটি হোস্ট নমুনা চাইতে পারে যা একটি RTOS-এ চলতে পারে, কিন্তু দুর্ভাগ্যবশত, আপাতত কোনো RTOS ভিত্তিক হোস্ট নমুনা নেই।ব্যবহারকারীদের RTOS এর উপর ভিত্তি করে তাদের নিজস্ব হোস্ট প্রোগ্রাম বিকাশ করতে হবে।

একটি কাস্টমাইজড হোস্ট প্রোগ্রাম তৈরি করার আগে UART গেটওয়ে প্রোটোকল বোঝা গুরুত্বপূর্ণ।UART ভিত্তিক NCP এবং SPI ভিত্তিক NCP উভয়ের জন্য, হোস্ট NCP-এর সাথে যোগাযোগ করতে EZSP প্রোটোকল ব্যবহার করে।ইজেডএসপিজন্য সংক্ষিপ্তEmberZnet সিরিয়াল প্রোটোকল, এবং এটি সংজ্ঞায়িত করা হয়েছেUG100.UART ভিত্তিক NCP-এর জন্য, UART-এর উপর নির্ভরযোগ্যভাবে EZSP ডেটা বহন করার জন্য একটি নিম্ন স্তরের প্রোটোকল প্রয়োগ করা হয়, এটি হলASHপ্রোটোকল, এর জন্য সংক্ষিপ্তঅ্যাসিঙ্ক্রোনাস সিরিয়াল হোস্ট.ASH সম্পর্কে আরো বিস্তারিত জানার জন্য, অনুগ্রহ করে পড়ুনUG101এবংUG115.

EZSP এবং ASH-এর মধ্যে সম্পর্ক নিম্নলিখিত চিত্র দ্বারা চিত্রিত করা যেতে পারে:

1

EZSP এবং ASH প্রোটোকলের ডেটা বিন্যাস নিম্নলিখিত চিত্র দ্বারা চিত্রিত করা যেতে পারে:

2

এই পৃষ্ঠায়, আমরা UART ডেটা এবং কিছু কী ফ্রেম তৈরি করার প্রক্রিয়া চালু করব যা প্রায়শই জিগবি গেটওয়েতে ব্যবহৃত হয়।

2. ফ্রেমিং

সাধারণ ফ্রেমিং প্রক্রিয়া নিম্নলিখিত চার্ট দ্বারা চিত্রিত করা যেতে পারে:

3

এই চার্টে, ডেটা মানে EZSP ফ্রেম।সাধারণভাবে, ফ্রেমিং প্রক্রিয়াগুলি হল: |না|পদক্ষেপ|রেফারেন্স|

|:-|:-|:-|

|1|EZSP ফ্রেম পূরণ করুন|UG100|

|2|ডেটা র্যান্ডমাইজেশন|UG101 এর বিভাগ 4.3|

|3|UG101|এর কন্ট্রোল বাইট|Chap2 এবং Chap3 যোগ করুন|

|4|সিআরসি গণনা করুন|UG101 এর বিভাগ 2.3|

|5|বাইট স্টাফিং|UG101 এর ধারা 4.2|

|6|শেষ পতাকা যোগ করুন|UG101 এর বিভাগ 2.4|

2.1।EZSP ফ্রেম পূরণ করুন

EZSP ফ্রেম বিন্যাসটি UG100 এর অধ্যায় 3 এ চিত্রিত করা হয়েছে।

4

SDK আপগ্রেড করার সময় এই ফর্ম্যাটটি পরিবর্তিত হতে পারে সেদিকে মনোযোগ দিন৷ফরম্যাট পরিবর্তন হলে, আমরা এটিকে একটি নতুন সংস্করণ নম্বর দেব।সর্বশেষ EZSP সংস্করণ নম্বর 8 যখন এই নিবন্ধটি লেখা হয় (EmberZnet 6.8)।

যেহেতু EZSP ফ্রেম বিন্যাস বিভিন্ন সংস্করণের মধ্যে ভিন্ন হতে পারে, তাই একটি বাধ্যতামূলক প্রয়োজন রয়েছে যে হোস্ট এবং NCPঅবশ্যইএকই EZSP সংস্করণের সাথে কাজ করুন।অন্যথায়, তারা প্রত্যাশিতভাবে যোগাযোগ করতে পারে না।

এটি অর্জন করতে, হোস্ট এবং NCP-এর মধ্যে প্রথম কমান্ডটি সংস্করণ কমান্ড হতে হবে।অন্য কথায়, অন্য কোনো যোগাযোগের আগে হোস্টকে অবশ্যই NCP-এর EZSP সংস্করণ পুনরুদ্ধার করতে হবে।যদি ইজেডএসপি সংস্করণ হোস্ট সাইডের ইজেডএসপি সংস্করণের সাথে ভিন্ন হয়, তাহলে যোগাযোগটি অবশ্যই বাতিল করতে হবে।

এর পিছনে অন্তর্নিহিত প্রয়োজনীয়তা হ'ল সংস্করণ কমান্ডের বিন্যাসটি করতে পারেকখনোই পরিবর্তন হবে না.EZSP সংস্করণ কমান্ড বিন্যাস নীচের মত:

5

পরামিতি ক্ষেত্রের ব্যাখ্যা এবং সংস্করণ প্রতিক্রিয়ার বিন্যাস UG100 এর অধ্যায় 4 এ পাওয়া যাবে।প্যারামিটার ক্ষেত্র হল হোস্ট প্রোগ্রামের EZSP সংস্করণ।এই নিবন্ধটি যখন লেখা হয়, তখন 8।
7
উদাহরণ: টর্চিআইওটিবুটক্যাম্প
链接: https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转转请注明出处.

2.2।ডেটা র্যান্ডমাইজেশন

বিশদ র্যান্ডমাইজেশন প্রক্রিয়া UG101 এর অধ্যায় 4.3 এ বর্ণিত হয়েছে।পুরো EZSP ফ্রেম এলোমেলো করা হবে।র্যান্ডমাইজেশন হল একচেটিয়া-অথবা EZSP ফ্রেম এবং একটি ছদ্ম-এলোমেলো ক্রম।

নীচে ছদ্ম-এলোমেলো ক্রম তৈরি করার অ্যালগরিদম রয়েছে।

  • rand0 = 0×42
  • randi এর 0 বিট 0 হলে, randi+1 = randi >> 1
  • রান্ডির বিট 0 যদি 1 হয়, randi+1 = (randi >> 1) ^ 0xB8

2.3।কন্ট্রোল বাইট যোগ করুন

কন্ট্রোল বাইট হল এক বাইট ডেটা, এবং ফ্রেমের মাথায় যোগ করা উচিত।বিন্যাসটি নীচের টেবিলের সাথে চিত্রিত করা হয়েছে:

6

মোট, 6 ধরনের কন্ট্রোল বাইট আছে।প্রথম তিনটি EZSP ডেটা সহ সাধারণ ফ্রেমের জন্য ব্যবহৃত হয়, যার মধ্যে ডেটা, ACK এবং NAK রয়েছে।শেষ তিনটি সাধারণ EZSP ডেটা ছাড়াই ব্যবহার করা হয়, যার মধ্যে RST, RSTACK এবং ERROR।

RST, RSTACK এবং ERROR এর বিন্যাস 3.1 থেকে 3.3 বিভাগে বর্ণিত হয়েছে।

2.4।সিআরসি গণনা করুন

একটি 16-বিট CRC কন্ট্রোল বাইট থেকে ডেটা শেষ হওয়া পর্যন্ত বাইটে গণনা করা হয়।স্ট্যান্ডার্ড CRCCCITT (g(x) = x16 + x12 + x5 + 1) 0xFFFF এ আরম্ভ করা হয়েছে।সবচেয়ে উল্লেখযোগ্য বাইটটি সর্বনিম্ন উল্লেখযোগ্য বাইটের (বিগ-এন্ডিয়ান মোড) আগে থাকে।

2.5।বাইট স্টাফিং

UG101 এর অধ্যায় 4.2-এ বর্ণিত কিছু সংরক্ষিত বাইট মান রয়েছে যা বিশেষ উদ্দেশ্যে ব্যবহৃত হয়।এই মানগুলি নিম্নলিখিত টেবিলে পাওয়া যাবে:

7

যখন এই মানগুলি ফ্রেমে উপস্থিত হয়, তখন ডেটার জন্য একটি বিশেষ চিকিত্সা করা হবে।- সংরক্ষিত বাইটের সামনে এস্কেপ বাইট 0x7D ঢোকান - সেই সংরক্ষিত বাইটের বিট5টি বিপরীত করুন

নীচে এই অ্যালগরিদমের কিছু উদাহরণ দেওয়া হল:

8

2.6।শেষ পতাকা যোগ করুন

চূড়ান্ত ধাপ হল ফ্রেমের শেষে শেষ পতাকা 0x7E যোগ করা।এর পরে, ডেটা UART পোর্টে পাঠানো যেতে পারে।

3. ডি-ফ্রেমিং প্রক্রিয়া

যখন UART থেকে ডেটা প্রাপ্ত হয়, তখন আমাদের এটিকে ডিকোড করার জন্য বিপরীত পদক্ষেপগুলি করতে হবে।

4. তথ্যসূত্র


পোস্টের সময়: ফেব্রুয়ারি-০৮-২০২২
হোয়াটসঅ্যাপ অনলাইন চ্যাট!