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假设项目 ...
随机推荐
- Flex 学习笔记 ComboBox内容框宽度
如何设置ComboBox下拉选项框的宽度呢 左边下拉框发现字符太长了 属性里也找不到相关宽度可以设置,解决如下 <!--添加open事件 打开下拉选项框时设置--> <s:Com ...
- 无法获取有关Windows NT 组\用户‘组\用户’的信息,错误代码0x5(Microsoft SQL Server,错误:15404)
配置了复制,在删除某个发布的时候,突然报此错误,无法删除此发布: 使用语句修改: ALTER AUTHORIZATION ON DATABASE:: [数据库名] TO [sa] 即修改数据库的 ...
- Java与mysql数据库编程中遇见“Before start of result set at com.mysql.jdbc.SQLError.createSQLException” 的解决办法
这个Bug是因为在取出ResultSet对象,对其进行操作时,没有采用.next()方法将ResultSet对象的光标移至指定行,不管Statement对象执行SQL语句是否十分确定能搜出记录,也不可 ...
- Django1.9开发博客(14)- 集成Xadmin
xadmin是一个django的管理后台实现,使用了更加灵活的架构设计及Bootstrap UI框架, 目的是替换现有的admin,国人开发,有许多新的特性: 兼容 Django Admin 使用 B ...
- CMD规范(通用模块定义规范)(翻译)
最近在使用sea.js.大家知道sea.js遵循CMD规范.该规范的英文说明很简洁,我试着翻译了一下,旨在交流. Common Module Definition 通用模块定义规范 This spec ...
- 解决安装vc2005运行库时提示Command line option syntax error.Type Command/?for Help
安装vc2005运行库时提示 这是因为它要自解压到用户的临时文件夹下,如果用户名中带中文,就会报错. 简单的解决方法是,手动解压之,再安装 当然,你也可以修改用户名或者再新建个用户.
- 每周一荐:学习ACE一定要看的书
作 者:david++发布时间:2012/06/08 09:02文章地址:http://game-lab.org/?p=320 近两个月都在学习ACE,一个超级强大,也超级复杂的网络框架库.对ACE的 ...
- css透明度的兼容!!!
以前总是写透明度的代码,今天弄了个弹出框要求就边框透明,于是有了下边的结论,虽然很多东西不合理了,日后找到更合理在做更新!!! html <div class="new_playerf ...
- ListView在列表的头部和底部添加布局——addHeaderView,addFooterView
addHeaderView()方法:主要是向listView的头部添加布局addFooterView()方法:主要是向listView的底部添加布局 以addHeaderView为例: View he ...
- easyui treegrid 分页
$(function () { $('#maintable').treegrid({ width: '98%', height: 550, nowrap: true, striped: true, f ...