RF 测试代码体会
这里的需求是完成一个cc2540 RF测试程序。实现功能为开发板按键控制 RF 发射频率的改变。
首先被告知要用PTM来做这个测试程序,然后我去了PTM的介绍文档,地址为 http://processors.wiki.ti.com/index.php/PTM
经过阅读后知道PTM就是为了测试而诞生的,它主要的原理就是:首先配置为 Network Processor 模式,当协议栈进入PTM模式后,HCI直接暴露在UART之上。通俗点说这时的串口就不是一般的串口了,它可以用来接收特殊的指令,这里特指HCL COMMANDS,HCI层会将特殊的指令交给该层的API使用,就是直接控制链路层或者物理层了吧。
经过思考发现我要写的测试程序和这个PTM不完全相同,因为我不需要串口,我的测试程序(即应用程序)是直接跑在开发板上的,不是 Network Processor 的配置,而是Single-Device 的配置。而且我查了HCI层相关的API发现有DTM模式下发送和接收数据的API,如
extern hciStatus_t HCI_LE_TransmitterTestCmd( uint8 txFreq, uint8 dataLen, uint8 pktPayload );
extern hciStatus_t HCI_LE_ReceiverTestCmd( uint8 rxFreq );
extern hciStatus_t HCI_LE_TestEndCmd( void );
所以我直接使用这几个API,但是最后发现如果拿两块板做测试的话,怎么接收数据呢?HCI_LE_TransmitterTestCmd()函数发送后返回一直是0,而HCI_LE_ReceiverTestCmd()接收返回也一直是0。然后上网查了很多资料并没有解决。
另外一条路线:
在HCI的API里发现有这样的外部函数:
extern hciStatus_t HCI_EXT_ModemTestTxCmd( uint8 cwMode,uint8 txFreq );
extern hciStatus_t HCI_EXT_ModemTestRxCmd( uint8 rxFreq );
extern hciStatus_t HCI_EXT_EndModemTestCmd( void );
从函数的名字可以看出来有 LE 和 EXT 之分,没错,他们是有区别的,LE 是标准协议栈里的,而 EXT 是厂商自己扩展的,不同厂商的蓝牙方案可能会有不同的扩展,这里的扩展是 TI 公司的。
两种方式测试检测,因为扩展的API没有数据包的传输,下面去用频谱仪测试:
RF 测试代码体会的更多相关文章
- .NET单元测试的艺术-3.测试代码
开篇:上一篇我们学习单元测试和核心技术:存根.模拟对象和隔离框架,它们是我们进行高质量单元测试的技术基础.本篇会集中在管理和组织单元测试的技术,以及如何确保在真实项目中进行高质量的单元测试. 系列目录 ...
- mysql锁 实战测试代码
存储引擎 支持的锁定 MyISAM 表级锁 MEMORY 表级锁 InnoDB 行级锁 BDB 页面锁 表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最高,并发度最低.行级锁:开销 ...
- 使用Microsoft Fakes隔离测试代码
在单元测试(Unit Test)中我们遇到的问题之一是:假如被测试组件(类或项目)为A,组件A依赖于组件B,那么在组件A的单元测试ATest中测试A时,也需要依赖于B,在B发生改动后,就可能影响到A的 ...
- iOS开发:XCTest单元测试(附上一个单例的测试代码)
测试驱动开发并不是一个很新鲜的概念了.在我最开始学习程序编写时,最喜欢干的事情就是编写一段代码,然后运行观察结果是否正确.我所学习第一门语言是c语言,用的最多的是在算法设计上,那时候最常做的事情就是编 ...
- 在内核中异步请求设备固件firmware的测试代码
在内核中异步请求设备固件firmware的测试代码 static void ghost_load_firmware_callback(const struct firmware *fw, void * ...
- x264测试代码
建立一个工程,将头文件,库文件加载到工程,测试代码如下:#include <iostream>#include <string>#include "stdint.h& ...
- Android网络传输中必用的两个加密算法:MD5 和 RSA (附java完成测试代码)
MD5和RSA是网络传输中最常用的两个算法,了解这两个算法原理后就能大致知道加密是怎么一回事了.但这两种算法使用环境有差异,刚好互补. 一.MD5算法 首先MD5是不可逆的,只能加密而不能解密.比如明 ...
- Git合并开发代码分支到测试代码分支
——转载请注明出自天外归云的博客园 用TortoiseGit下载代码到本地 首先需要在本机安装好TortoiseGit.然后在随便哪个路径下比如D盘,右键“Git Clone”: 然后URL处选择项目 ...
- mvn编写主代码与测试代码
maven编写主代码与测试代码 3.2 编写主代码 项目主代码和测试代码不同,项目的主代码会被打包到最终的构件中(比如jar),而测试代码只在运行测试时用到,不会被打包.默认情况下,Maven假设项目 ...
随机推荐
- 物联网安全拔“牙”实战——低功耗蓝牙(BLE)初探
物联网安全拔“牙”实战——低功耗蓝牙(BLE)初探 唐朝实验室 · 2015/10/30 10:22 Author: FengGou 0x00 目录 0x00 目录 0x01 前言 0x02 BLE概 ...
- springboot
http://7player.cn/2015/08/30/%E3%80%90%E5%8E%9F%E5%88%9B%E3%80%91%E5%9F%BA%E4%BA%8Espringboot-mybati ...
- 在node.js中使用mongose模块
对象与文档相对应 创建项目目录,用root进入 # mkdir /home/test/part9/ 直接# npm install mongoose,报错如下 ../node_modules/nan/ ...
- angularjs简述
1.MVC设计模式 MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式 Model(模型)表示应用程序核心(比如数据库记录列表 ...
- (36)老版和新版API调用
---------更新时间18:06 2016-09-18 星期日------- *前言 我用的是odoo8,但里面有相当多的api是以前版本,这时若我们自己开发的 插件采用新版本api,里面 ...
- PHP 二维码解码 (读取二维码)
#zbar wget http://ncu.dl.sourceforge.net/project/zbar/zbar/0.10/zbar-0.10.tar.bz2 yum install gtk2 g ...
- iOS_autoLayout_Masonry
概述 Masonry是一个轻量级的布局框架与更好的包装AutoLayout语法. Masonry有它自己的布局方式,描述NSLayoutConstraints使布局代码更简洁易读. ...
- The storage wars: Shadow Paging, Log Structured Merge and Write Ahead Logging
The storage wars: Shadow Paging, Log Structured Merge and Write Ahead Logging previous: Seek, and yo ...
- SqlServer索引及优化详解
实际上,您可以把索引理解为一种特殊的目录.微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引.簇集索引)和非聚集索引(nonclustered index ...
- 使用 IN 的子查询
通过 IN(或 NOT IN)引入的子查询结果是一列零值或更多值.子查询返回结果之后,外部查询将利用这些结果. 下列查询会找到所有曾出版过商业书籍的出版商的名称. USE pubs SELECT pu ...