Skip to content

board_sparkfun_ubw32_ru

Serge Vakulenko edited this page Aug 26, 2015 · 1 revision

Плата UBW32 (схема, PCB, файлы Eagle) разработана Брайаном Шмальцем на основе микроконтроллера Microchip PIC32MX460F512L.

На плате имеется:

  • микроконтроллер PIC32MX460F512L с архитектурой MIPS (80 МГц)
  • 78 цифровых входов/выходов по краям платы
  • разъём miniUSB с возможностью питания
  • место для разъёма USB-host
  • переключатель питания от USB или внешнего источника
  • разъём внешнего питания с диодной защитой и предохранителем 500 мА
  • 5 светодиодов
  • 3 кнопки

Память:

  • 512 килобайт flash-памяти для программ
  • 12 килобайт дополнительной flash-памяти для начального загрузчика
  • 32 килобайта памяти данных (RAM)

Цифровые выходы обеспечивают ток до 18 мА. Некоторые имеют специальные функции: UART, SPI, I2C, АЦП, таймеры. Имеется два встроенных генератора 8 МГц и 32 кГц. Можно питать плату от miniUSB или от внешнего источника постоянного напряжения +7.6 - 15 вольт.

Кнопки:

  • RESET - сброс и перезапуск процессора
  • PRG - вход в режим начальной загрузки (при RESET)
  • USER - управление программой пользователя

Светодиоды:

  • USB (зелёный) - программно управляемый, мигает при работе порта USB
  • LED1 (белый) - программно управляемый
  • LED2 (красный) - программно управляемый
  • LED3 (жёлтый) - программно управляемый
  • PWR (синий) - горит при наличии питания

Карта памяти: | Физический адрес | Виртуальный адрес | Размер| Назначение | |:----------------------|:----------------------|:----------|:------------------------| |1fc0 0000-1fc0 2fff |bfc0 0000-bfc0 2fff | 12 Kb | Flash-память загрузки | |1d00 0000-1d07 ffff |9d00 0000-9d07 ffff | 512 Kb | Flash-память программ | |0000 0000-0000 7fff |8000 0000-8000 7fff | 32 Kb | Память данных | |1f80 0000-1f8f ffff |bf80 0000-bf8f ffff | 1 Mb | Регистры управления |

Стандартная прошивка UBW32 Firmware

Исходно плата поставляется с предустановленной программой, которая называется UBW32 Firmware. Если подключить плату к компьютеру кабелем miniUSB, то зажигается синий и начинает мигать зелёный светодиод - работает UBW32 Firmware. При этом в компьютере появляется USB-устройство со следующими параметрами:

ID 04d8:000a

bInterfaceClass         2 Communications
idVendor           0x04d8 Microchip Technology, Inc.
idProduct          0x000a CDC RS-232 Emulation Demo

UBW32 Firmware реализует интерфейс виртуального COM-порта. Например, в Линуксе с ним можно работать через устройство /dev/ttyACM0. На команду "V {Enter}" выдаётся номер версии Firmare:

$ kermit -l /dev/ttyACM0 -b 115200 -c
V
UBW32 Version 1.0
OK

Команды Firmware: | Пример | Ответ | Описание | |:----------------------|:--------------------|:-------------| | C,0,0,0,0,65535,0,0 | OK | Конфигурация направления портов A, B, C, D, E, F, G. В битовой маске 1 означает вход, 0 - выход. | | O,0,0,131,0,0,0,0 | OK | Выдача значений в порты A, B, C, D, E, F, G. | | I | I,50943,64479,24606,65535,01015,12607,62403 | Ввод значений из портов A, B, C, D, E, F, G. | | V | UBW32 Version 1.0 | Запрос номера версии Firmware. | | R | OK | Сброс в начальное состояние, все порты как входы. | | PD,B,2,1 | OK | Конфигурация направления одного сигнала. | | PI,C,6 | PI,1 | Ввод значения одного сигнала. | | PO,A,3,0 | OK | Выдача значения одного сигнала. | | CU,1,0 | OK | Конфигурация прочих параметров Firmware. | | BL | (отсутствует) | Вход в режим начальной загрузки. | | T1,200,4 | OK | Запуск встроенного теста №1 - бегущие огни по всем портам. |

Загрузчик HID Bootloader

Программный код можно загружать в плату через порт miniUSB посредством предустановленного начального загрузчика. Загрузчик размещается в отдельной области flash-памяти процессора и не портится при загрузке программы пользователя. Описание и исходный код загрузчика доступен на странице UBW32.

Чтобы перевести плату в режим загрузки, надо, удерживая кнопку PRG, нажать кнопку RESET. При этом будут светиться синий, жёлтый и красный светодиоды, и мигать белый и зелёный светодиоды. Плата будет видна в компьютере как USB-устройство со следующими параметрами:

ID 04d8:003c

bInterfaceClass         3 Human Interface Device
idVendor           0x04d8 Microchip Technology, Inc.
idProduct          0x003c USB HID Bootloader

Конфигурационные регистры, устанвливаемые загрузчиком: | DEVCFG0 | |:------------| | CP = OFF | Code Protect | Общая защита кода отключена. | | BWP = OFF | Boot Flash Write Protect | Защита flash-памяти загрузки отключена. | | PWP = OFF | Program Flash Write Protect | Защита flash-памяти программы отключена. | | ICESEL = ICS_PGx2| ICE Channel Select | Отладчик подключается к сигналам PGC2/PGD2. | | DEBUG = OFF | Background Debugger Enable | Фоновый отладчик отключен. | | DEVCFG1 | | FWDTEN = OFF | Watchdog Timer Enable | Сторожевой таймер отключен. | | WDTPS = PS1 | Watchdog Timer Postscale | 1:1 | | FCKSM = CSECME | Fail Safe Clock Switching Mode| | | FPBDIV = DIV_1 | Peripheral Clock divisor | PBCLK = SYSCLK / 1 | | OSCIOFNC = OFF | CLKO Enable | Выход CLKO отключен. | | POSCMOD = HS | Primary Oscillator | Основной генератор в режиме HS. | | IESO = ON | Internal/External Switch-over | Двухскоростной старт. | | FSOSCEN = OFF | Secondary Oscillator Enable | Вторичный генератор отключен. | | FNOSC = PRIPLL | Oscillator Selection | Основной генератор с ФАПЧ.| | DEVCFG2 | | FPLLODIV = DIV_1 | PLL Output Divider | 1:1 делитель выхода ФАПЧ. | | UPLLEN = ON | USB PLL Enable | Включена ФАПЧ USB. | | UPLLIDIV = DIV_2 | USB PLL Input Divider | 1:2 делитель ФАПЧ USB. | | FPLLMUL = MUL_20 | PLL Multiplier | 20x умножитель ФАПЧ USB. | | FPLLIDIV = DIV_2 | PLL Input Divider | 1:2 делитель входа ФАПЧ. |

Для программы пользователя загрузчик выделяет диапазон адресов 9d005000-9d07ffff. Стартует программа с адреса 9d006000. Для обработки прерываний и исключений рекомендуется использовать 9d005200.

Для загрузки HEX-файлов в плату рекомендуется утилита pic32prog. Например:

pic32prog test.hex 

Сигналы

Разъём Сигнал Функции Разъём Сигнал Функции Разъём Сигнал Функции
J3 / 1 GND J4 / 40 GND J5 / 1 VPP /MCLR, сброс процессора
J3 / 2 +5V J4 / 39 +5V J5 / 2 +3.3V
J3 / 3 +3.3V J4 / 38 +3.3V J5 / 3 GND
J3 / 4 D8 J4 / 37 A15 SDA1, INT4 J5 / 4 PGD B7, PGD2
J3 / 5 D9 /SS1 J4 / 36 A14 SCL1, INT3 J5 / 5 PGC B6, PGC2
J3 / 6 D10 SCK1 J4 / 35 A5 TDO J5 / 6 B2
J3 / 7 D11 J4 / 34 A4 TDI J5 / 7 B1 PGC1
J3 / 8 D0 SDO1, INT0 J4 / 33 A3 SDA2 J5 / 8 B0 PGD1
J3 / 9 C13 J4 / 32 A2 SCL2
J3 / 10 C14 J4 / 31 F8 U1TX
J3 / 11 D1 J4 / 30 F2 U1RX
J3 / 12 D2 J4 / 29 F5 U2TX
J3 / 13 D3 J4 / 28 F4 U2RX
J3 / 14 D12 J4 / 27 D15 /U1RTS
J3 / 15 D13 J4 / 26 D14 /U1CTS
J3 / 16 D4 J4 / 25 B15
J3 / 17 D5 J4 / 24 B14
J3 / 18 D6 J4 / 23 B13
J3 / 19 D7 J4 / 22 B12
J3 / 20 F0 J4 / 21 F12 /U2CTS
J3 / 21 F1 J4 / 20 F13 /U2RTS
J3 / 22 G1 J4 / 19 A1 TCK
J3 / 23 G0 J4 / 18 B11
J3 / 24 A6 J4 / 17 B10
J3 / 25 A7 J4 / 16 B9
J3 / 26 E0 J4 / 15 B8
J3 / 27 E1 J4 / 14 A10
J3 / 28 G14 J4 / 13 A9
J3 / 29 G12 J4 / 12 B3
J3 / 30 G13 J4 / 11 B4
J3 / 31 E2 J4 / 10 B5
J3 / 32 E3 J4 / 9 E9 INT2
J3 / 33 E4 J4 / 8 E8 INT1
J3 / 34 G15 J4 / 7 A0 TMS
J3 / 35 E5 J4 / 6 G9 /SS2
J3 / 36 E6 J4 / 5 VPP /MCLR, сброс процессора
J3 / 37 E7 J4 / 4 G8 SDO2
J3 / 38 C1 J4 / 3 G7 SDI2
J3 / 39 C2 J4 / 2 G6 SCK2
J3 / 40 C3 J4 / 1 C4 SDI1

Подключение адаптера JTAG

Для прошивки и отладки через порт JTAG можно использовать адаптер Olimex ARM-USB-Tiny. Подключить его можно по следующей схеме:

Olimex Сигнал На плате
5 TDI J4/34 - A4
7 TMS J4/7 - A0
9 TCK J4/19 - A1
13 TDO J4/35 - A5
15 /SYSRST J4/5 - VPP
18, 20 GND J4/40 - GND

Расширение возможностей

Для работы с консольным портом UART0 можно использовать адаптер Sparkfun FTDI Basic Breakout. Последовательность действий:

  • Переключить выход на +5V, перерезав и запаяв соответствующую перемычку на нижней стороне платы FTDI Basic Breakout.
  • Сигнал GND припаять к JP1/GND.
  • Сигнал 3V3 припаять к J1/+.
  • Сигнал TXO припаять к J4/30 = F2 U1RX.
  • Сигнал RXI припаять к J4/31 = F8 U1TX.

Сменную Flash-карточку можно подключить через Sparkfun Breakout Board for SD-MMC Cards. Для совместимости с платой MikroElektronika MMB for PIC32MX7 рекомендуется следующий перечень соединений: | UBW32 board | Signal| SD/MMC board | |:-----------------|:----------|:-----------------| | J4 / 13 - A9 | SD-CS# | CS | | J3 / 8 - D0 | SDO1 | DI | | J5 / 2 - +3.3V | +3.3V | VCC | | J3 / 6 - D10 | SCK1 | CLK | | J5 / 3 - GND | GND | GND | | J4 / 1 - C4 | SDI1 | DO | | n/c | n/c | IRQ | | n/c | n/c | P9 | | J4 / 3 - G7 | SD-CD# | CD | | J4 / 2 - G6 | SD-WP | WP | | J5 / 3 - GND | GND | COM |

Примеры

test-debug.c

  • Проверка runtime-библиотеки и отладочной печати. Микроядро отсутствует. Программа циклически выдаёт на консоль строку "Hello, World!" и ждёт нажатия клавиши.

test-leds.c

  • Проверка светодиодов. Микроядро отсутствует. Программа циклически зажигает и гасит все светодиоды.

test-task.c

  • Проверка переключения задач. Одна задача пользователя, циклически печатающая свой общий размер стека и размер свободной части, затем ждущая нажатия клавиши.

test-timer.c

  • Проверка драйвера таймера. Одна задача: программа пользователя, которая каждые 100 миллисекунд печатает строку на консоли.

test-uart.c

  • Проверка драйвера UART. Две задачи: драйвер UART и программа пользователя, циклически выдающая строку "Hello, World!" и ждущая нажатия клавиши.

test-sd.c

  • Проверка карточки flash-памяти SD. Задача пользователя с простым диалоговым меню. Позволяет запрашивать размер карточки, читать и писать сектора.
Testing SD card.
Slow speed: 250000 kbit/sec

  1. Initialize a card
  2. Get card size
  3. Read sector #0
  4. Read sector #1
  5. Read sector #99
  6. Write sector #0
  7. Write-read sectors #0...200

Command: _

usb-hello.c

  • Проверка драйвера виртуального COM-порта USB. Микроядро отсутствует. Программа принимает данные от виртуального COM-порта и возвращает обратно строку вида: "Received 2 bytes: 61..."

usb-hid.c

  • Проверка драйвера виртуального устройства ввода USB. Микроядро отсутствует. Программа принимает данные от компьютера в формате запросов HID (human interface device) и возвращает их же обратно (эхо-режим).
You can’t perform that action at this time.