用SEGGER Embedded Studio(SES)开发蓝牙nRF52840

0. 准备

WIN10电脑一台
nrf52840开发板一套(其实如果基本蓝牙功能的话,nrf52832也行,有更小的成本)。nrf52840集成了2.4GHz的各种协议,但还是蓝牙功能比较完善。
仿真器最好用jlink v9

1. download nrf5 sdk

这个sdk解压后可以用常用的ide开发单片机。
https://www.nordicsemi.com/Software-and-tools/Software/nRF5-SDK/Download#infotabs

2. SEGGER Embedded Studio(SES)

SEGGER是jlink的公司,SES是这家公司的单片机开发环境。nrf52系列的单片机,基本国内常用的就是keil和ses了。keil需要license,ses开发nrf52840可以免license费用,只要上网申请一下,填写用户名公司电脑MAC等资料即可获得许可。
https://www.segger.com/downloads/embedded-studio

3. 运行demo

3.1 命令行交互
下载nRF5_SDK_17.0.2_d674dde\examples\ble_central_and_peripheral\experimental\ble_app_interactive可以通过串口使用命令行调用蓝牙的大部分功能

3.2 蓝牙鼠标实现移动和点击
官方demo自带鼠标移动的实例:
HID Mouse Application
https://infocenter.nordicsemi.com/index.jsp?topic=%2Fstruct_nrf5gs%2Fstruct%2Fnrf5gs.html&cp=1

这行是往下移动MOVEMENT_SPEED个像素的函数:mouse_movement_send(0, MOVEMENT_SPEED);

参考资料1中看到了鼠标点击需要修改输入函数:

mouse_buttons_send(1,0,0);//鼠标左键
mouse_buttons_send(0,0,0);//释放按键
mouse_buttons_send(1, 0, 0);//left
mouse_buttons_send(2, 0, 0);//right
mouse_buttons_send(4, 0, 0);//middle
mouse_buttons_send(0, 0, 0);//cancel
static void mouse_buttons_send(int8_t click, int8_t wheel, int8_t pan)
{
    uint32_t err_code;
 
    uint8_t buffer[INPUT_REP_BUTTONS_LEN];
 
    APP_ERROR_CHECK_BOOL(INPUT_REP_BUTTONS_LEN == 3);
    
    NRF_LOG_INFO("mouse_buttons_send\r\n");
    buffer[0] = click;
    buffer[1] = wheel;
    buffer[2] = pan;
 
        err_code = ble_hids_inp_rep_send(&m_hids,
                                         INPUT_REP_BUTTONS_INDEX,
                                         INPUT_REP_BUTTONS_LEN,
                                         buffer,
                                         m_conn_handle);
 
    if ((err_code != NRF_SUCCESS) &&
        (err_code != NRF_ERROR_INVALID_STATE) &&
        (err_code != NRF_ERROR_RESOURCES) &&
        (err_code != NRF_ERROR_BUSY) &&
        (err_code != BLE_ERROR_GATTS_SYS_ATTR_MISSING)
       )
    {
        APP_ERROR_HANDLER(err_code);
    }
}

4. 下载

ses准备链接jlink,发现no idcode found
排查原因,原来是线没接好。这个要接好JLINK到单片机的SWD四根线,USB连JLINK和电脑。然后Target ---> Download ... 即可实现下载。SES已经集成了jlink驱动,一般不会出现其他问题。

用SEGGER Embedded Studio(SES)开发蓝牙nRF52840

用SEGGER Embedded Studio(SES)开发蓝牙nRF52840

备注:注意nRF5 sdk中,如果自己的板子不匹配官方开发板,那么是需要修改引脚号的
开发板                        官方编号            芯片
nRF52840 DK            PCA10056            nRF52840
nRF52840 Dongle        PCA10059            nRF52840
nRF52 DK                    PCA10040            nRF52832/nRF52810
nRF51 DK                   PCA10028            nRF51422
nRF51 Dongle            PCA10032            nRF51422

 

参考资料1:nRF52832 — 基于HID实现鼠标的左击、右击和滚轮,https://blog.csdn.net/zhanghuaishu0/article/details/81783044
参考资料2:Nordic Semiconductor Infocenter

上一篇:【HTML】嵌入


下一篇:抖音视频推广