Корзина

0 Товары - 0.00 RUB
В корзину

Курсы Валют

Курсы Валют  Дата ЦБ
Нал.USD
24.11 58.46
Нал.EUR
24.11 69.18
Нал.CNY
24.11 88.80

Оплата

visa

Реклама

Блог

Первый проект для 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:

3f4629d7c967b5595180a4ea3f213500.jpg

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

292f24653c9bd5cf3b69b7396eb2c56f.jpg

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

1e08a7bc26fa3a8ec9330fa15f8e0a95.jpg

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

aef0711810861efd8de1c67d319b0f18.jpg

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

0e833ff240d9817916eb5962593e4402.jpg

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

ARM_MATCH_CM3

__VISUALE__

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

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

021c87fc85f3b57d0bfcd2975c3eee61.jpg

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

1ee58918d6ea6f70fd18ddb44320e758.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.

fa95441441fa1ae9614d5caba01bb359.jpg

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

038925af57d6421170de925336b8e3e8.jpg

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

 9d962b7080187414f3a2901b9ee53d86.jpg

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

e03047e0ac7c5f3a95f16daf5c181bf8.jpg

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

19bb6d558198debb5320fd8a8412977e.jpg

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

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

 9aadf47f8205c3ac618f7be9df71563e.jpg

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

8484d39c7fab89ef6add46bc126bbd78.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 после этого мы должны подключиться к нашей плате:

0aedb3d3d5ea80eeb2584edd1fe82056.jpg

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

b54ff69f1673a47ac9f7c861e4d58139.jpg

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

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

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

Перевод

Вход

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

Время

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