نحن نعمل مع مكدس nRF24LU1 + USB. الجزء الأول

توضح هذه المقالة تشغيل مكدس USB للوحدة النمطية nRF24LU1 +. في الجزء الأول ، مقدمة صغيرة ، تثبيت البرامج و SDK ، Hello World.
في الجزء الثاني ، سننظر في التهيئة والتعداد ودعم WinUSB وتبادل البيانات مع المضيف. من المفترض أن القارئ لديه فهم أولي لـ USB. إذا لم يكن الأمر كذلك ، أنصحك بالتعرف على الدليل الممتاز .




أمرت رقائق بلدي على موقع ئي باي . وشملت كانت وحدتين ومبرمج SPI. يطير مباشرة في مرهم لأولئك الذين يأمرون نفس المجموعة. لا يوجد خط إعادة تعيين في موصل البرمجة على الوحدة النمطية نفسها. بدونها ، لا تعمل برمجة ISP. اضطررت إلى لحام بعناية.


من حيث المبدأ ، يمكن برمجة الرقائق من خلال أداة تحميل التشغيل المضمنة (وحتى كتابة الخاصة بك). وهناك أيضا مجموعة من فلاشات SPI على أساس FTDI ، اردوينو وأكثر من ذلك. تشبه عملية البرمجة شريحة nrf24le1.

رقاقة nRF24LU1 + هي:
  • 2.4 غيغاهرتز nRF24l01 + جهاز الإرسال والاستقبال
  • تحكم USB 2.0 بسرعة كاملة
  • متحكم 8 بت مع Intel MCS 51 core
  • فلاش 16 أو 32 كيلو بايت


الجهاز الداخلي للرقاقة:

من بين الميزات الجديرة بالذكر أن ذاكرة الوصول العشوائي السريعة هي 256 بايت فقط (IRAM). تقع 2 كيلو بايت المتبقية (SRAM) على الناقل الخارجي ، على التوالي ، والوصول إليها أبطأ. هناك أيضًا وحدة تشفير.

قم بتكوين Keil و nRFgo SDK و Hello World


سيتم إجراء جميع عمليات التطوير في بيئة Keil و nRFgo SDK. تحميل وتثبيت ( tyts ، tyts ).
بضع كلمات حول تنظيم المشروع. لقد خلقت هذا الهيكل. تم نسخ برنامج التحويل البرمجي و HAL و LIB من nRFgo SDK. ستكون المشاريع موجودة بالفعل مباشرة في مجلد المشاريع.

├───compiler
│   ├───c51
│   ├───common
│   └───icc8051
├───hal
│   ├───nrf24l01p
│   ├───nrf24le1
│   └───nrf24lu1p
├───lib
│   ├───adns7530
│   ├───assertions
│   ├───crypt
│   ├───display
│   ├───eeprom
│   ├───eeprom255
│   └───rf_test
└───projects
     └───HelloWolrd

نذهب في Keil. المشروع - مشروع uVision الجديد. نختار الكتالوج مع المشروع ، أدخل اسم المشروع. بعد ذلك ، حدد الشريحة كما في الصورة ، توافق على كل شيء.

بعد ذلك ، أضف مصدرًا جديدًا إلى المشروع (انقر بزر الماوس الأيمن على Source Group 1 - Add New Iteam).

البرنامج الأول ، اطبع بلا نهاية في Hello World! UART

#include <stdio.h>
#include "nrf24lu1p.h"
#include "hal_uart.h"
#include "hal_delay.h"

char putchar(char c)
{
  hal_uart_putchar(c);
  return c;
}

void putstring(char *s)
{
  while(*s != 0)
    putchar(*s++);
}

void main(void)
{
	P0DIR = 0x00;
	hal_uart_init(UART_BAUD_57K6);
	EA = 1;

  for(;;)
  {
		putstring("\r\nHello World!\r\n");
		delay_ms(1000);
   }
}

تحتاج أيضًا إلى إضافة ملفين إلى المشروع:
hal\nrf24lu1p\hal_uart.c
hal\hal_delay.c

ربما يكون القارئ قد فهم بالفعل أننا نقوم بتوصيل الكود المصدري للرقاقة الخاصة بنا بالضبط.
للحصول على كل شيء معًا بشكل صحيح ، تحتاج إلى وضع بعض العلامات وتسجيل مسار تضمين للمترجم.
إسفين مناسب للمشروع - خيارات.

في البناء الناتج ، حدد خانة الاختيار إنشاء ملف HEX.
بعد ذلك ، في علامة التبويب C51 ، اكتب تضمين
..\..\hal;..\..\hal\nrf24lu1p;..\..\compiler\c51;..\..\compiler\common;

وضع مشروع. يتم تعبئة الملف السداسي الناتج بالمبرمج في وحدة التحكم. في حالتي ، أرسل الصينيون هذا النوع من البرامج. يتم تعريف المبرمج نفسه على أنه جهاز HID ، ولا يتطلب برامج تشغيل. قبل البرمجة ، يجب محو الشريحة.
يمكن تنزيل البرنامج هنا .


إذا تم عمل كل شيء بشكل صحيح ، فسيتم سكب Hello World مرة واحدة في الثانية في UART.

تابع في الجزء التالي. سيتم النظر في تهيئة USB والتعداد ودعم WinUSB وتبادل المضيف.
الجزء الثاني

Source: https://habr.com/ru/post/ar382873/


All Articles