No description
- C 92.3%
- Makefile 7.7%
| config | ||
| inc | ||
| src | ||
| .gitignore | ||
| flash_app.jlink | ||
| flash_app_safe.jlink | ||
| flash_softdevice.jlink | ||
| Makefile | ||
| nrf52840_xxaa_s140.ld | ||
| README.md | ||
nRF52840 BLE Peripheral Project
Проект для nRF52840 (PCA10056) - BLE Peripheral устройство на базе Nordic nRF5 SDK.
Описание
Этот проект реализует BLE Peripheral устройство, которое:
- Рекламирует себя как "MyDevice" через BLE
- Принимает подключения от телефона (Central)
- Использует LED Button Service (LBS) для управления LED и получения состояния кнопки
- Индикация состояния:
- LED_1 - горит во время рекламы (advertising)
- LED_2 - горит при подключении телефона
Требования
Оборудование
- nRF52840 Development Kit (PCA10056)
- J-Link программатор (встроенный в PCA10056 или внешний)
Программное обеспечение
- nRF5 SDK (версия с поддержкой S140 SoftDevice)
- По умолчанию:
/home/lulko/nRF5_SDK - Можно изменить через переменную
NRF_SDK_ROOTв Makefile
- По умолчанию:
- ARM GCC Toolchain (arm-none-eabi-gcc)
- SEGGER J-Link (JLinkExe)
- nRF Command Line Tools (nrfjprog) - опционально
Структура проекта
nrf52840/
├── src/ # Исходные файлы
│ ├── main.c # Основной файл приложения
│ └── ble.c # BLE инициализация (не используется)
├── inc/ # Заголовочные файлы
│ └── ble.h
├── config/ # Конфигурация SDK
│ └── sdk_config.h
├── build/ # Собранные файлы (создается автоматически)
├── flash_app.jlink # Полная прошивка (SoftDevice + приложение)
├── flash_app_safe.jlink # Безопасная прошивка приложения (без стирания SoftDevice)
├── flash_softdevice.jlink # Прошивка только SoftDevice
├── nrf52840_xxaa_s140.ld # Скрипт линковки
└── Makefile # Файл сборки
Сборка проекта
Настройка пути к SDK
Если SDK находится не в /home/lulko/nRF5_SDK, измените переменную в Makefile:
NRF_SDK_ROOT := /path/to/your/nRF5_SDK
Или установите переменную окружения:
export NRF_SDK_ROOT=/path/to/your/nRF5_SDK
Компиляция
make
Собранные файлы:
build/main.elf- ELF файл для отладкиbuild/main.hex- HEX файл для прошивки
Очистка
make clean
Прошивка устройства
Вариант 1: Полная прошивка (SoftDevice + приложение)
ВНИМАНИЕ: Это стирает все содержимое flash памяти!
make full_reset
Или напрямую через J-Link:
JLinkExe -CommandFile flash_app.jlink
Вариант 2: Прошивка только SoftDevice
make flash_softdevice_jlink
Или напрямую:
JLinkExe -CommandFile flash_softdevice.jlink
Вариант 3: Безопасная прошивка приложения (без стирания SoftDevice)
Рекомендуется для обновления приложения без потери SoftDevice:
make flash_app_jlink
Или напрямую:
JLinkExe -CommandFile flash_app_safe.jlink
Прошивка через nrfjprog
# Прошивка приложения
make flash_app
# Полная прошивка (стирает все)
make flash
Основные команды Makefile
| Команда | Описание |
|---|---|
make |
Собрать проект |
make clean |
Очистить директорию build |
make flash_app_jlink |
Безопасная прошивка приложения через J-Link |
make flash_softdevice_jlink |
Прошивка SoftDevice через J-Link |
make full_reset |
Полная прошивка (SoftDevice + приложение) |
make check_vectors_safe |
Проверка векторов прерываний (безопасно) |
make debug_flags |
Показать флаги компиляции |
Использование
-
Прошейте устройство:
make full_reset -
Подключите устройство:
- Устройство начнет рекламировать себя как "MyDevice"
- LED_1 будет гореть во время рекламы
-
Подключитесь с телефона:
- Найдите "MyDevice" в сканере BLE
- Подключитесь к устройству
- LED_2 загорится при подключении
- LED_1 погаснет
-
Использование LED Button Service:
- Отправка команды на LED: включение/выключение LED_2
- Нажатие кнопки на устройстве: отправка уведомления на телефон
Технические детали
BLE Конфигурация
- SoftDevice: S140 v7.2.0
- Роль: Peripheral
- Имя устройства: "MyDevice"
- Advertising interval: 100ms (160 units)
- Connection parameters:
- Min interval: 100ms
- Max interval: 200ms
- Slave latency: 0
- Supervision timeout: 4000ms
Используемые модули SDK
ble_advertising- управление рекламойble_lbs- LED Button Servicenrf_ble_qwr- Queued Writeble_conn_params- управление параметрами соединенияnrf_pwr_mgmt- управление питаниемapp_timer- таймерыapp_button- обработка кнопок
LED Mapping (PCA10056)
- LED_0 (BSP_BOARD_LED_0) - не используется
- LED_1 (BSP_BOARD_LED_1) - индикация рекламы
- LED_2 (BSP_BOARD_LED_2) - индикация подключения
- LED_3 (BSP_BOARD_LED_3) - не используется
Отладка
GDB отладка
-
Запустите J-Link GDB Server:
make jlink_server -
В другом терминале запустите GDB:
make gdb_client
Проверка состояния устройства
make check_vectors_safe
Устранение неполадок
Устройство не прошивается
- Убедитесь, что J-Link подключен и устройство включено
- Проверьте, что J-Link видит устройство:
JLinkExe -device NRF52840_XXAA - Попробуйте полное стирание:
make full_reset
Ошибки компиляции
- Проверьте путь к SDK в Makefile (
NRF_SDK_ROOT) - Убедитесь, что установлен ARM GCC toolchain
- Выполните
make cleanи попробуйте снова
BLE не работает
- Убедитесь, что SoftDevice прошит:
make flash_softdevice_jlink - Проверьте, что устройство видно в сканере BLE на телефоне
- LED_1 должен гореть во время рекламы
Лицензия
Проект основан на примерах Nordic nRF5 SDK и использует их лицензию.
Автор
Проект создан на базе примера ble_app_blinky из nRF5 SDK.