富芮坤微电子创始人_F52557是什么芯片「建议收藏」

富芮坤微电子创始人_F52557是什么芯片「建议收藏」基于富芮坤的FR801BLE芯片开发前言:本篇主要讲解如何利用官方的SDK和ble协议栈知识开发所需的功能注意:因为官方是每个工程都导入同一个底层…所以一旦修改了components,全部工程

基于富芮坤的FR801 BLE芯片开发

前言:本篇主要讲解如何利用官方的SDK和ble 协议栈知识开发所需的功能

注意:因为官方是每个工程都导入同一个底层…所以一旦修改了components ,全部工程受影响,所以建议copy一份出来.自己乱改都没事…

一 欲练神功,必先备其资料

1.这部分的学习需要使用到官方的SDK.在上节的资料中并没有SDK资料.因此我需要在官网的github or gitee 下载 上链接(gitee快速下载):

FR801xH-SDK

简单介绍文件内容

components:官方给的底层文件和API.

docs: 教程文档,特别是SDK用户手册,.非常关键好用…API

examples 官方给的例子.主要看none_evm.(这里推荐看几个例子)

ble_simple_peripheral 从机通讯.我主要在这个改的…

ble_drivers_demo 外设驱动.第二部分基本看这个例子就基本可以了…

tools 顾名思义就是开发过程可能用到的工具,我就用到了一个ota app和 下载工具…

二 基本的外设驱动(GPIO,FLASH等)

这部分.我感觉就看 example里面的 ble_drivers_demo 写的很详细了…

什么串口 i2c spi flash gpio 都给整明白了.实在不行,别忘了有个sdk用户手册.没事看看不亏…

三 BLE开发(广播内容 GATT服务)

蓝牙开发:不过在于,广播的数据 蓝牙的连接以及通讯数据的传输…然后 睡眠低功耗…notify…

这里先推荐几篇文章有关的 :

FR8016H程序运行流程、任务、定时器、串口的使用 非常详细.强烈推荐

GATT学习

正题来了:

(1) 广播部分

通过SDK手册和API说明,我知道了.广播的数据和广播参数设置

gap_set_advertising_param()

gap_set_advertising_data()

因此在文中找到查看对应的结构体并修改即可

adv_param.adv_intv_min = 300;
adv_param.adv_intv_max = 300;

上面对应的是广播的时间间隔.单位0.625ms 1s的广播间隔设置为1600即可…其他类似.看看sdk手册.

(2) 睡眠低功耗

调用API就完事了…

system_sleep_enable(); //使能

system_sleep_disable();//失能

进入低功耗无法进行jlink下载和调试哦.所以使用jlink下载记得延时会…
富芮坤微电子创始人_F52557是什么芯片「建议收藏」

唤醒的方式很多种.IO中断触发,广播触发…

唤醒后,首先会进入 user_entry_after_sleep_imp()函数

需要在该函数,重新初始化外设,串口.gpio等…

(3) 蓝牙连接

开启广播后,手机APP(这里推荐使用nrf connect,其他也行)或者其他设备就可以搜索当前广播的设备了.在app_gap_evt_cb()处理不同的事件.比如连接,断开连接等…

(4) 数据通讯

这部分内容.需要一点ble协议栈的知识…我默认大家都会了…

profiles —-添加服务…

概念的东西我也不是很懂,我也是小白…我就知道添加服务,就能干活…
在这里插入图片描述
在这里插入图片描述

修要添加Characteristic 按照格式添加即可.可选读写 notify功能…

我主要讲解的数据通讯的数据处理…

sp_gatt_msg_handler()处理蓝牙的数据接收和发送…具体看代码,有详细的注释…
在这里插入图片描述

(5) notify

notify…主动通知…只要打开使能,设备主动向主机(手机app)发送内容,自定义.可以是温度,电池电量…
在这里插入图片描述

在这里插入图片描述

这里我是使用软件定时器…

这个变量下面的回调函数用到.连接从机的ID
在这里插入图片描述

软件定时器回调函数的内容:

//软件定时器回调函数
void temp_up_func(void *arg)
{ 
   
	uint8_t ret;
	int32_t temperature, humidity;
	co_printf("temp_up_func\r\n");
	
		//定义上报的notify的内容。。。ntf_att结构体。。
	gatt_ntf_t temp_ntf_att;
		temp_ntf_att.att_idx = SP_IDX_CHAR1_VALUE;
	temp_ntf_att.conidx = sp_conidx;
	temp_ntf_att.svc_id = sp_svc_id;
	
	//数据
	
	uint8_t show_string[60]={ 
   0};

	
	ret = sht3x_measure_blocking_read(&temperature, &humidity);//Read temperature humidity
  if (ret == STATUS_OK)
  { 
   
		sprintf((char *)show_string,"temperature = %0.1f,humidity = %0.1f\r\n",temperature/1000.0,humidity/1000.0);
		
	}
	else
	{ 
   
		sprintf((char *)show_string,"temperature = error,humidity = error\r\n");
	}
	temp_ntf_att.p_data = (uint8_t *)show_string;
	temp_ntf_att.data_len = sizeof(show_string);
		gatt_notification(temp_ntf_att);
	
}

四  OTA

蓝牙OTA也是学习蓝牙必不可少的…在富芮坤中,已经把功能都实现了.我们只需将官方给的代码加入到我们的工程中即可…

首先在自己的工程中导入:\freqchip-FR801xH-SDK-master\FR801xH-SDK\components\ble\profiles\ble_ota目录下的4个文件…

然后在添加服务那里,将加入…就ok了…记住不要改ota的文件…老老实实的用就可以了.

ota_gatt_add_service();			//OTA服务

然后烧录代码…手机端下载tools中的ota.apk…然后修改代码编译生成.bin文件…传入到手机文件夹中…(这样注意哦:要升级和待升级都必须有ota服务…).

就是这么easy…毕竟人家都给我们做好了…
在这里插入图片描述

今天的文章富芮坤微电子创始人_F52557是什么芯片「建议收藏」分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/87382.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注