Корзина

0  Товары

0.00 RUB

Вход

Классический вход

Сообщество

Блог

Первый проект для VE-XC6SLX9. Часть 1.

В первом проекте для VE-XC6SLX9, мы реализуем USB HID устройство для для процессора LPC1343FBD48. Микроконтроллеры NXP ARM7 серии LPC2000 представляют собой 32-битные устройства с процессорным ядром ARM7TDMI-S, которые в отличие от 8-битных обеспечивают более высокую производительность (соотношение цена/производительность) и применяются во всех отраслях медицинской, автомобильной, промышленной и бытовой электроники с повышенной сложностью решаемых задач и надёжностью. Данные контроллеры содержат встроенный драйвер USB устройств, что существенно облегчает разработку. Наш проект основывается на документации AN10904: USB HID with the LPC1300 on-chip driver которую можно свободно скачать с сайта www.lpcware.com.

Среду разработки Eclipse мы уже настроили в нашей прошлой статье первый проект для ve-ep4ce10e часть 1. Поэтому сразу приступим к созданию проекта, у нас он называется usb_hid_rom:

bdbd2f00574873f626569f1b449a190e.jpg

 Тулчейн выбираем, настроенны ранее:

0c0f57dfc4ad29beb40b028ffe407261.jpg

 В оригинальной реализации проект разделен на две части: собственно сам проект, и библиотека CMSIS. В своем проекте мы объединили эти составляющие в один проект. Поэтому на этом шаге нужно скачать наш проект (ссылка ниже). Распаковать содержимое архива в папку созданного проекта, в вашей директории workspace. И нажав на созданном проекте правую клавишу мыши, выбрать пункт меню Refresh.

b4356bcbf6b47acf2e8c4a30646aba96.jpg

Структура проекта должна выглядеть так:

8e0adc34caca9bd40f44bd5c9dbba08d.jpg

 Далее настроим проект, сначала выберем тип процессора, тут все стандартно:

66df4549782a8a40951930acae83cd6f.jpg

В препроцессоре добавим два предопределенных символа:

ARM_MATCH_CM3

__VISUALE__

Первый определяет используемое ядро процессора, второй определяет тип отладочной платы.

 Настройка путей поиска заголовочных файлов:

2ad45406b984ed8be1ad5042a221293c.jpg

Настройка линкера:

78aa0c8c2972e9db5fae87666b7efd4f.jpg

Далее создадим конфигурацию отладчика. Для этого выберем пункт меню Run->External tools->External Tools->External Tools Gonfigurations. Назовем нашу конфигурацию jlink-swd lpc1343, в поле Locations пропишем путь к GDB серверу: D:\Program Files (x86)\SEGGER\JLink_V512g\JLinkGDBServerCL.exe. В качестве аргументов передадим строку -select USB -device LPC1343 -if SWD -speed auto.

328384e489a5ebe319e255df95c68573.jpg

На вкладке Common поставим галку на пункт External Tools, после чего наша конфигурация появится в меню быстрого доступа.

33fb8c9026494c9cc989254bc9b01a38.jpg

Далее выберем пункт Run->Debug Configurations:

4ed108d879ab4957181c9ec6083e66da.jpg

В строке Using Legacy GDB Hardware Debugging Launcher - выбираем Select other... Настраиваем согласно рисунку:

4e7d8a15e6382e9fadf3f3eb8bf6b9a9.jpg

На вкладке Debugger прописываем путь до нашего отладчика, у нас это D:\dev\ARM_toolchain\arm_gcc\bin\arm-none-eabi-gdb.exe. Параметры соединения показаны ниже:

d280f07fece59fecfbd5ba1a2976762f.jpg

На вкладке Startup прописываем команды инициализации:

monitor speed auto
monitor endian little
monitor flash device = LPC1343
monitor flash download = 1
monitor flash breakpoints = 1

b4158de2f342231a97282f0eb0e14a77.jpg

На вкладке Common добавляем нашу конфигурацию в меню отладки.

045cfaeee3dd6624b0d3727485f24454.jpg

Далее изменяем USB дескрипторы с описанием нашего устройства:

C++ Code:
  1. /* USB String Descriptor (optional) */
  2. const uint8_t USB_StringDescriptor[] = {
  3. /* Index 0x00: LANGID Codes */
  4. 0x04, /* bLength */
  5. USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */
  6. WBVAL(NXP_VID), /* US English */ /* wLANGID */
  7. /* Index 0x04: Manufacturer */
  8. 0x1C, /* bLength */
  9. USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */
  10. 'v',0,
  11. 'i',0,
  12. 's',0,
  13. 'u',0,
  14. 'a',0,
  15. 'l',0,
  16. 'e',0,
  17. '.',0,
  18. 'r',0,
  19. 'u',0,
  20. ' ',0,
  21. ' ',0,
  22. ' ',0,
  23. /* Index 0x20: Product */
  24. 0x28, /* bLength */
  25. USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */
  26. 'V',0,
  27. 'E',0,
  28. '-',0,
  29. 'X',0,
  30. 'C',0,
  31. '6',0,
  32. 'S',0,
  33. 'L',0,
  34. 'X',0,
  35. '9',0,
  36. ' ',0,
  37. 'H',0,
  38. 'I',0,
  39. 'D',0,
  40. ' ',0,
  41. ' ',0,
  42. ' ',0,
  43. ' ',0,
  44. ' ',0,
  45. /* Index 0x48: Serial Number */
  46. 0x1A, /* bLength */
  47. USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */
  48. 'D',0,
  49. 'E',0,
  50. 'M',0,
  51. 'O',0,
  52. '0',0,
  53. '0',0,
  54. '0',0,
  55. '0',0,
  56. '0',0,
  57. '0',0,
  58. '0',0,
  59. '0',0,
  60. /* Index 0x62: Interface 0, Alternate Setting 0 */
  61. 0x0E, /* bLength */
  62. USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */
  63. 'H',0,
  64. 'I',0,
  65. 'D',0,
  66. ' ',0,
  67. ' ',0,
  68. ' ',0,
  69. };

 Далее в файле config.h переопределим порты вывода под нашу плату:

C++ Code:
  1. /* Define the output pins controlled by the USB HID client */
  2. #if defined(__VISUALE__)
  3. /* LED outputs for the LPC1343-SK board from IAR */
  4. #define OUTPUT_ON 1
  5. #define OUTPUT_OFF (1-OUTPUT_ON)
  6.  
  7. #define OUTPUT0_PORT PORT2
  8. #define OUTPUT0_BIT 0
  9.  
  10. #define OUTPUT1_PORT PORT2
  11. #define OUTPUT1_BIT 1
  12.  
  13. #define OUTPUT2_PORT PORT2
  14. #define OUTPUT2_BIT 2
  15.  
  16. #define OUTPUT3_PORT PORT2
  17. #define OUTPUT3_BIT 3

И порты ввода: 

C++ Code:
  1. /* Define the input pins controlled by the USB HID client */
  2. #if defined(__VISUALE__)
  3. /* Pushbuttons for the LPC1343-SK board from IAR */
  4. #define INPUT_CLOSED 1
  5. #define INPUT_OPEN (1-INPUT_CLOSED)
  6.  
  7. #define INPUT0_PORT PORT2
  8. #define INPUT0_CPORT LPC_GPIO2
  9. #define INPUT0_BIT 4
  10.  
  11. #define INPUT1_PORT PORT2
  12. #define INPUT1_CPORT LPC_GPIO2
  13. #define INPUT1_BIT 5
  14.  
  15. #define INPUT2_PORT PORT2
  16. #define INPUT2_CPORT LPC_GPIO2
  17. #define INPUT2_BIT 6
  18.  
  19. #define INPUT3_PORT PORT2
  20. #define INPUT3_CPORT LPC_GPIO2
  21. #define INPUT3_BIT 7

 Компилируем наш проект:

'Invoking: Cross ARM GNU Print Size'
arm-none-eabi-size --format=berkeley "usb_hid_rom.elf"
   text	   data	    bss	    dec	    hex	filename
   1316	      4	     32	   1352	    548	usb_hid_rom.elf
'Finished building: usb_hid_rom.siz'
' '

21:10:51 Build Finished (took 314ms)

 В меню Run->External Tools выбираем созданный нами пункт jlink-swd lpc1343 после этого мы должны подключиться к нашей плате:

ee9d95e2efde60340fba0e67a8d7f51a.jpg

 Запускаем отладку нажав на значок с зеленым пауком ))) и выбрав там пункт usb_hid_rom Debug :

c401adc1c4742a6948e008a04afac549.jpg

В результате мы получили USB HID устройство, которым можно управлять с помощью утилиты LPC1343 HID Demonstration.exe:

Исходные файлы проекта: usb_hid_rom.zip

Утилита для управления: LPC1343 HID Demonstration.zip

Карта сайта Визуальная электроника Полезные ссылки сайта Визуальная электроника

Алиса это умеет

Оплата товаров

Cookies make it easier for us to provide you with our services. With the usage of our services you permit us to use cookies.
More information Ok