nrf51822蓝牙nrf51822 协议栈烧录里面有没有加入操作系统

Nordic推出nRF51822蓝牙低功耗2.4GHz片上系统_新品发布_新闻中心_RFID世界网
Nordic推出nRF51822蓝牙低功耗2.4GHz片上系统
作者:厂商供稿
来源:RFID世界网
摘要:Nordic Semiconductor ASA (OSE: NOD) 消息,其nRF51822蓝牙低功耗2.4GHz片上系统(SoC)即将问世,该产品由Nordic自主研发,其特性、周边设备和性能与现有产品完全一样,但是闪存容量只有现有产品的一半(容量由原来的256kB变为128kB)。
关键词:[14篇]&&[0篇]&&[121篇]&&[26篇]&&[61篇]&&[1篇]&&
  Nordic Semiconductor ASA (OSE: NOD) 消息,其nRF51822蓝牙低功耗2.4GHz片上系统(SoC)即将问世,该产品由Nordic自主研发,其特性、周边设备和性能与现有产品完全一样,但是闪存容量只有现有产品的一半(容量由原来的256kB变为128kB)。
  产品特点
  新产品将通过锁定对价格最敏感的超低功耗无线应用(通常是入门级个人电脑鼠标与键盘、智能手机配件和玩具等高容量消费产品),完善Nordic现有的nRF5kB)闪存片上系统。nRF5kB)还与现有的nRF5kB)管脚兼容,因而能够成为所有基于现有nRF51822设计的直接代用品,并能以一半闪存容量运转,这支持平稳无缝衔接,不会有任何设计风险或再让美国联邦通讯委员会(FCC)和欧盟(EU)等相关监管机构进行质量鉴定。
  这意味着nRF5kB)将带来同样业内第一的多协议无线能力和专为超低功耗无线应用优化的32位ARM Cortex-M0处理器,为蓝牙低功耗模式带来-92.5dB RX的敏感度,为所有模式带来最高达+4dBm的输出功率,让链路预算最多较原先业内领先的一代Nordic芯片提升9.5dBm,并为3V电池带来低于10mA的峰值电流,使电池寿命延续数月或数年(依应用情况而定)。和现有的nRF51822一样,新的nRFkB也能百之分百地与Nordic现有的nRF24L系列IC空中兼容。
  新产品将通过锁定对价格最敏感的超低功耗无线应用(通常是入门级个人电脑鼠标与键盘、智能手机配件和玩具等高容量消费产品),完善Nordic现有的nRF5kB)闪存片上系统。
  供货与报价
  查询进一步信息,请访问官方网站。(RFID世界网编辑整理)
&已有条评论
最新评论():
相关新闻:2-101-712-279-99-7
关键字搜索:技术文章:[0篇]&&[0篇]&&[36篇]&&[17篇]&&[12篇]&&[0篇]&&成功应用:[0篇]&&[0篇]&&[5篇]&&[0篇]&&[7篇]&&[0篇]&&解决方案:[0篇]&&[0篇]&&[4篇]&&[0篇]&&[4篇]&&[0篇]&&
图片新闻:
最新发布产品基于nRF51822的蓝牙防丢器的设计与实现--《电子科学技术》2016年01期
基于nRF51822的蓝牙防丢器的设计与实现
【摘要】:低功耗蓝牙技术以其较高的灵敏度、低功耗和高集成度等特点广泛应用于智能穿戴、医疗器械、无线数据采集等多个领域。本文基于nRF51822芯片,开发一种低功耗蓝牙防丢器,并与手机蓝牙通过APP相互通信,以实现手机防盗、物品查找、定位等功能,可有效防范手机或者物品被盗,具有重要的实用价值。
【作者单位】:
【关键词】:
【分类号】:TN925【正文快照】:
引言随着经济的发展和人们生活节奏的加快,日常用品例如手机、钱包、钥匙等丢失或者被遗忘,给人们的生活造成极大的困扰。随着无线通信技术的发展,利用无线通信技术可有效帮助人们实现防盗或者查找。传统的电子防盗技术分为主机和子机,需要通过主机来控制子机来实现防盗[1],这
欢迎:、、)
支持CAJ、PDF文件格式,仅支持PDF格式
【相似文献】
中国期刊全文数据库
宋鸾姣;李利;;[J];图书馆;2012年05期
钟莹;刘芯宇;;[J];电子技术与软件工程;2014年06期
董智明;张长学;张伟;;[J];移动通信;2011年09期
李培林;;[J];计算机光盘软件与应用;2012年18期
周兰;;[J];现代电信科技;2013年06期
盛慧;;[J];江西图书馆学刊;2012年03期
何华斌;;[J];闽江学院学报;2014年05期
李靖;;[J];科技情报开发与经济;2011年09期
杨秀丽;张静航;;[J];电子技术与软件工程;2014年02期
郑西川;孙宇;马俊;许燕玲;王炯;;[J];医学信息学杂志;2013年08期
中国重要会议论文全文数据库
刘震;吴汉光;李馨;;[A];2013年中国信息通信研究新进展论文集[C];2014年
熊晓波;付晓玲;;[A];2007通信理论与技术新发展——第十二届全国青年通信学术会议论文集(上册)[C];2007年
中国硕士学位论文全文数据库
赵蕻;[D];重庆工商大学;2014年
蒋亦奇;[D];南京大学;2013年
&快捷付款方式
&订购知网充值卡
400-819-9993
《中国学术期刊(光盘版)》电子杂志社有限公司
同方知网数字出版技术股份有限公司
地址:北京清华大学 84-48信箱 知识超市公司
出版物经营许可证 新出发京批字第直0595号
订购热线:400-819-82499
服务热线:010--
在线咨询:
传真:010-
京公网安备75号今天看啥 热点:
BLE-NRF51822教程5-静态密码设置nordicBLE交流群这一讲介绍配对的一些相关理论知识,并且介绍如何实现”静态密码”的设定 程序是基于sdk9.0 下的 uart demo 另外 测试使用的手机app是 IOS下的lightblue。 这里准确的说法应该是叫配对码,而不是密码。输入这个这个配对码是配对过程中可选的一部分 介绍如何设置静态密码前先介绍一下配对的相关知识(后面都直接叫密码,而不是配对码) 起初未提供安全性的两个设备如果希望做一些需要安全性的工作,就必须先配对。配对涉及两个设备的身份认证,链路加密。如果配对时设置了绑定位,随后还会有一个秘钥分配。分配的秘钥用户可以存储在flash中这样两个设备再第二次重连时的安全启动会更快。而不需要像第一次一样需要再启动整个配对过程。 配对的第一个过程首先是配对信息的交换,这些信息用于确定认证方式,以及后续是否需要分配密钥以及分配哪些密钥。 交换的信息包括: 两端设备的输入输出能力如:是否有显示屏,键盘等。 是否需要绑定(如果设置了绑定位配对的)。 是否需要MITM,是否使用OOB等 这些信息会让BLE协议栈确定一种认证方式: 比如:
1:如果两端设备的输入输出能力有限,比如都没有键盘和显示器,认证方式就是just work,这其实就是没有认证,
2:如果两端设备一个有显示频,而另一个有键盘,而配对中设置了MITM保护。那么认证方式就是passkey entery。一端会显示一个配对码,另一需要输入这个配对码。之后的配对才能正确进行下去。
3:如果设置了OOB,那么这个配对码就是通过另外的通信方式(如NFC)来发送的,而不是像上面一样一端显示一端输入。 这一讲的密码设置就是第二种情况。显示的密码是可以随机的也可以是静态的。由于设备并没有显示器。但是我们仍然可以设置输入输出能力为有显示器,因为我们使用的是静态密码。
配对的过程不仅只是输入配对码这样,后续还会根据输入的配对码,以及两端设备交换的随机数来生成链路密钥来加密链路以及分配后续的长期密钥,身份解析密钥等需要的密钥 配对相关的理论比较多,上面的描述只是一个大概的过程。配对过程的详细介绍在蓝牙规范的 安全章节中。 根据上面的理论描述,我们来总结一下:
我们需要的输入“密码”这个功能,其实是配对过程中的一部分。而配对过程又是需要首先交换配对信息,然后协议栈会根据交换的信息才决定是否有输入密码这一过程。 那么我们要做的有如下几步:
1: 首先设置要输入的静态密码2: 设置配对时会交换的信息:根据上面的介绍如果我们需要手机输入密码,那么配对时就要设置只具有显示器(这样就会是一端显示,一端输入,虽然我们真的没显示器,但是设置的是静态密码所以也是可以的),设置需要MITM攻击保护。
3:触发配对。 下面先介绍如何设置静态密码: //首先定义一下静态密码,配对密码只能是 6-digit ASCII string #defineSTATIC_PASSKEY "123456"
/**< Static pin. *///改结构体中可以设置静态密码
staticble_opt_t
m_static_pin_定义了这两个参数后,我们需要设置一下静态密码,设置的操作需要在协议栈初始化之后 所以我们将设置密码操作放在 gap_params_init()函数的最后 如下: static void gap_params_init(void){ //前面都是设置一些设备名以及一些后续需要协商的连接参数
//详细解释在 串口透传剖析 中有说明 uint32_t err_ble_gap_conn_params_tgap_conn_ble_gap_conn_sec_mode_t sec_BLE_GAP_CONN_SEC_MODE_SET_OPEN(&sec_mode);err_code=sd_ble_gap_device_name_set(&sec_mode,(constuint8_t*DEVICE_NAME,trlen(DEVICE_NAME));APP_ERROR_CHECK(err_code);memset(&gap_conn_params, 0,sizeof(gap_conn_params));gap_conn_params.min_conn_interval = MIN_CONN_INTERVAL;gap_conn_params.max_conn_interval = MAX_CONN_INTERVAL;gap_conn_params.slave_latency= SLAVE_LATENCY;gap_conn_params.conn_sup_timeout= CONN_SUP_TIMEOUT;err_code = sd_ble_gap_ppcp_set(&gap_conn_params);APP_ERROR_CHECK(err_code); //以下是设置静态密码操作
uint8_tpasskey[] = STATIC_PASSKEY;
m_static_pin_option.gap_opt.passkey.p_passkey=//该系统调用执行密码的设置操作。
err_code=sd_ble_opt_set(BLE_GAP_OPT_PASSKEY,&m_static_pin_option) APP_ERROR_CHECK(err_code);
}到这里设置静态密码的操作就做完了。 然后是设置配对时要交换的信息: 下面定义我们需要交换的信息的宏,也就是和安全参数相关的一些宏。 //这里只是演示静态密码,不需要绑定 #define SEC_PARAM_BOND 0//因为要输入密码,就是一种MITM攻击保护,所以这里设置MITM #define SEC_PARAM_MITM 1//这里设置只有显示屏(其实没有,但是我们用的是事先知道的静态密码所以不// 需要显示) #define SEC_PARAM_IO_CAPABILITIES BLE_GAP_IO_CAPS_DISPLAY_ONLY//不使用带外数据 #define SEC_PARAM_OOB 0//链路加密密钥的长度 #define SEC_PARAM_MIN_KEY_SIZE 7#define SEC_PARAM_MAX_KEY_SIZE 16定义了宏之后我们需要在设置参数,写一个如下的函数。 m_sec_params 是一个全局变量 ble_gap_sec_params_t m_sec_static void sec_params_init(void){ m_sec_params.bond = SEC_PARAM_BOND;m_sec_params.mitm =SEC_PARAM_MITM;m_sec_params.io_caps =SEC_PARAM_IO_CAPABILITIES;m_sec_params.oob =SEC_PARAM_OOB;m_sec_params.min_key_size = SEC_PARAM_MIN_KEY_SIZE;m_sec_params.max_key_size = SEC_PARAM_MAX_KEY_SIZE;}将该函数放在 main函数的初始化流程中的conn_params_init(); 函数之后。 设置的这个全局变量会在配对启动后的信息交换中使用(因为其内部值就是要交换的信息)。 到这里我们设置完了配对启动后会交换的信息。但是怎么把这个信息给对端设备呢? 先看完最后一步的触发配对的问题,再来解决将配对信息发给对端设备的问题。 最后一步触发配对: 配对的触发有以下几种情况:
1:主机直接发起。
2:从机发起安全请求,如果之前绑定过,那么主机会直接用用保存的LTK加密链路,如果没有那么主机会发起配对请求。 3:BLE中的有一个安全模式的概念。当某个属性被设置为需要认证的加密链路访问时,那么当在主机访问从机的属**器时,如果链路是不安全的就会返回错误,然后主机会发起配对请求从而实现安全要求。 我们采用的就是第三种 被动等待主机触发的方式,那么首先要做的就是将一些属性设置为需要安全的链路才能访问,那么手机在访问时就会触发配对过程了。 因为我们是基于 9.0SDK 下的uartdemo,所以我们将具有notify 性质RX 特征值的 cccd(客户端配置描述符)设置为需要认证和加密的安全链路。 因为手机端使能notify是需要写CCCD的 那么当手连上板子后 点击rx特征值的notify 按钮后主机会发一个 写命令写板子上的rx特征值的cccd,因为初试链路是不完全的,那么这时手机就会返回写出错,然后启动配对过程。 设置如下: 在添加RX特征值的函数中做如下的简单就可以了。
这里只截取部分代码: static uint32_t rx_char_add(ble_nus_t * p_nus, constble_nus_init_t * p_nus_init){ /**@snippet [Addingproprietary characteristic to S110 SoftDevice] */ ble_gatts_char_md_tchar_ ble_gatts_attr_md_tcccd_ ble_gatts_attr_t attr_char_ ble_uuid_t ble_ ble_gatts_attr_md_tattr_memset(&cccd_md, 0, sizeof(cccd_md));BLE_GAP_CONN_SEC_MODE_SET_OPEN(&cccd_md.read_perm);//BLE_GAP_CONN_SEC_MODE_SET_OPEN(&cccd_md.write_perm);//将上面的一行修改成下面这行 BLE_GAP_CONN_SEC_MODE_SET_ENC_WITH_MITM(&cccd_md.write_perm);
cccd_md.vloc =BLE_GATTS_VLOC_STACK;memset(&char_md, 0, sizeof(char_md));·············· ·············· ············ }这样当对端设备(如手机)使能开发板的上rx特征值的notify功能时,就会
因为没有写权限而触发配对,手机会发来配对请求,然后板子回复配对信息, 怎么回复? 这就是第二步中最后留下的问题。如何将配对信息交给对端设 备(手机)。 当手机发来配对请求时,这对板子来说是一个事件,即配对事件。最终由 dispatch派发函数交给各个服务或模块的事件处理函数。 那么我们要做的就是在收到这个配对请求事件后回复第二步中设置的配对 信息就可以了。在main.c 文件中的的on_ble_evt做如下修改 staticvoidon_ble_evt(ble_evt_t * p_ble_evt){ uint32_terr_switch(p_ble_evt->header.evt_id) {caseBLE_GAP_EVT_CONNECTED:err_code= bsp_indication_set(BSP_INDICATE_CONNECTED); APP_ERROR_CHECK(err_code);m_conn_handle= p_ble_evt->evt.gap_evt.conn_caseBLE_GAP_EVT_DISCONNECTED:err_code= bsp_indication_set(BSP_INDICATE_IDLE); APP_ERROR_CHECK(err_code);m_conn_handle= BLE_CONN_HANDLE_INVALID;caseBLE_GAP_EVT_SEC_PARAMS_REQUEST: //注释掉原本的不支持配对的函数,改为如下的配对回复函数 //err_code= sd_ble_gap_sec_params_reply(m_conn_handle, //BLE_GAP_SEC_STATUS_PAIRING_NOT_SUPP, NULL, NULL);
err_code=sd_ble_gap_sec_params_reply(m_conn_handle,
BLE_GAP_SEC_STATUS_SUCCESS,&m_sec_params,NULL);
APP_ERROR_CHECK(err_code);caseBLE_GATTS_EVT_SYS_ATTR_MISSING: // No system attributes have beenstored.err_code=sd_ble_gatts_sys_attr_set(m_conn_handle, NULL, 0, 0); APP_ERROR_CHECK(err_code);default: // No implementation needed. }}到这里所有需要配置的都设置完了。程序运行后。手机连接上板子,然后访问rx特征值。因为该特征值是用来将板子数据通过Notify方式传给手机的,那么首先要点击手机上的notify按钮去使能板子的notify功能。当我们点击该按钮时就会弹出输入密码的配对框。
相关搜索:
相关阅读:
相关频道:
&&&&&&&&&&&&
系统综合最近更新查看: 863|回复: 8
关于nRF51822连接蓝牙3.0手机的问题。
rt,条件:手机硬件上支持4.0且向下兼容。应用程序使用蓝牙3.0进行扫描。那么ble 4.0的nRF51822从设备处于广播模式。
这两个设备可以配对成功吗?如果可以连接上,是不是手机只能得到从设备的蓝牙地址,设备名称什么的都没有办法得到?
主要是nrf51822要发一个字符串给主设备。
不可以,nrf51822 只实现了4.0的 BLE部分。
不可以,nrf51822 只实现了4.0的 BLE部分。
但是它们俩的确连接上了,只不过不能通信
Vampireyifeng 发表于
但是它们俩的确连接上了,只不过不能通信
你确定可以?
现在手机是双模的,你换一个以前只有经典蓝牙的扫一下吧
要是你的结论成立,何须搞双模????
你看看手机支不支持LE啊。如果只是支持BR/EDR,那肯定不会连上的。。。。
本帖最后由 Vampireyifeng 于
10:29 编辑
你确定可以?
现在手机是双模的,你换一个以前只有经典蓝牙的扫一下吧
要是你的结论成立,何须搞双模?? ...
谢谢回复。是的,手机是双模的。硬件支持蓝牙4.0.只不过系统还没有更新。所以不支持蓝牙4.0.但是两者连接上了之后不能数据通信。手机只可以知道从设备的uuid。我的意思是说有没有一种方法。在这种情况下发送一个用户自定义的id号给手机。
我的手机是小米2s。系统是android4.1的。手机可以扫描到nrf51822.但是只有uuid号。点击配对。就提示无法配对成功。无法通信。我的意思是既然手机可以知道uuid。那有没有什么办法。发一个用户自定义的id号给手机?
你看看手机支不支持LE啊。如果只是支持BR/EDR,那肯定不会连上的。。。。
谢谢回复,手机硬件上支持蓝牙4.0。支持ble。但是系统没有升级。所以不支持蓝牙4.0、这种情况下可以连接。但是只能知道从设备的uuid。别的什么不知道。没有办法通信。我是想看看有没有什么方法。在这种情况下。发送一个用户自定义id号给手机设备。、
谢谢回复,手机硬件上支持蓝牙4.0。支持ble。但是系统没有升级。所以不支持蓝牙4.0、这种情况下可以连接 ...
能拿到UUID,那就是advertising已经拿到了。那你就效仿ibeacon吧....自定义一些manufacturer数据就好了。
阿莫电子论坛, 原"中国电子开发网"

我要回帖

更多关于 nrf51822蓝牙协议 的文章

 

随机推荐