近段时间由于项目需求要接触蓝牙传输功能,并且蓝牙芯片需要具备MCU的功能开发;在硬件上选择了国民技术的N32WB03X这一款单片机,这一款单片机具备蓝牙射频的功能与正常MCU的开发,在开发过程中遇到一系列问题在网上查找资料并没有多少参考资料,故而写一篇文章作为开发参考。
文章以国民技术提供的官方例程1.3.3的BLE目录下的rdtss例程作为参考
蓝牙名称的修改:(在app_uaer_config.h文件修改蓝牙名称以及连接参数)
下面是一些配置的宏定义,比如debug打印,info信息输出等,还可以修改debug输出串口
新手建议修改一下main函数的两处代码,见下图修改方式一:delay_n_10us这个函数时为了增加开机时间延迟SWD时钟关闭的,建议增加到5s左右防止新手程序烧录失败;方式二:在while循环中去掉ns_sleep函数即禁用低功耗,程序就不会进入低功耗,SWD的时钟也就不会关闭;
蓝牙接口:MCU接收手机或者是上位机下发的数据通过注册的函数接口将数据通过串口发送出来,在app_ble.c文件下的app_user_msg_handler函数时专门处理蓝牙数据的接口;
在这个例程中,蓝牙的数据传输到串口都是用DMA功能处理的,当然也可以按照实际需求修改成普通串口模式,修改成普通串口修改方向如下:
1.串口中断需要开启发送中断与接收中断,在中断服务函数实现数据的收与发,切记清除发送中断,接收中断如果不接收数据的情况下一定要做清除中断标志的动作,如果读取数据可以省略这个步骤,因为读取数据的同时会清除标志;
2.数据发送到蓝牙端,即数据上传,需要把从中断接收到的数据拷贝到发送数组,即调用app_usart_rx_data_fifo_enter这个函数把数据拷贝过去;
3.发送功能,需要修改usart_tx_dma_send这个函数,将数据拷贝到一个数组,然后调用中断将数据发送出去
实现上面两个接口既可以把DMA去掉,当然也可以修改成低功耗串口,不过低功耗串口外设时钟的初始化与正常的串口时钟使能不一样,可以参考lpuart的相关工程启用低功耗时钟
对于蓝牙上位机的使用个人推荐去应用商店下载BLE调试助手,在测试PC端数据发送到调试助手时需要打开接收通知功能才可以看到数据的上传。
以上内容仅供参考,书写错误请指正!
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_53392558/article/details/137756122
|