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 http请求
下面类支持POST和GET请求,请求数据和出错将返回 package com.sole.util { import flash.events.Event; import flash.events.HT ...
- 文档批量格式化之word技能
一.在条目末尾添加# Ctrl + H 然后将 ^p替换为#^p 二.繁体字转换为简体字 在word 审阅-->简转繁(繁转简)都可以相互互转 三.将表格的变成字典或者规则的字符串格式 结合Ex ...
- Java通过jedis操作redis缓存
package com.wodexiangce.util; import java.util.Set; import redis.clients.jedis.Jedis; /** * redis工具类 ...
- win7文件夹图标中多了一把小锁打不开文件夹怎么办?
win7文件夹图标中多了一把小锁打不开文件夹怎么办?解决办法一:右击目录→取得管理员权限!该方法适用于win7旗舰版.解决办法二:右击目录→属性→安全→高级→选择everyone→更改权限→勾上完全访 ...
- python的类和对象——类成员番外篇
学完了面向对象的三大特性,已经get了所有屌丝技能的我们也当一回文艺小青年,来看看类的成员和成员修饰符. 今天‘三’这个数字好亲和~~~类成员可以分为三类:字段.方法和属性 一.字段 首先我们来看看字 ...
- C#窗体 LISTVIEW
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- logcat的条数设置
在软件默认设置下,logcat的缓存为1024,即logcat显示的条数有限,给程序的调试带来很大的不便,通过设置 logcat缓存的大小,可以增加logcat显示的条数,将程序调试的输出都可以打印出 ...
- 联机事务处理OLTP(on-line transaction processing)和联机分析处理OLAP(On-Line Analytical Processing)
什么是OLAP(联机分析处理)? 这个是和数据处理非常相关的一个概念.接触过BI(商务智能)的同学一定清楚. 数据处理大致可以分成两大类:联机事务处理OLTP(on-line tr ...
- 如果重新设计网络,有没有可能合并IP地址跟MAC地址?
前阵子看网络基础相关的书籍,冒过一个疑问,为什么要有MAC地址跟IP地址?两者可否合二为一? 现在的逻辑是这样子:在数据传输过程中,路由器查看这个数据包的IP地址,跟路由表中记录的“IP集合:下一 ...
- PHP数据库页面增删查
1.用户操作页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...