求蓝牙2540/2541射频测试流程的文档,求TI技术支持或者有TI蓝牙射频测试文档的大神提供一下,谢谢,感激不尽啊,跪求。。。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
和USB没有关系,是通过暴露UART发命令来测试你的设备的
蓝牙测试有两种方法
1. DTM(Direct Test Mode)
DTM是一个标准的BLE测试模式, 它包含了一系列标准通用的HCI命令. 很多测试仪器厂商, 比如安利(Anritsu, 他们有MT8852B蓝牙测试仪), 罗德施瓦茨(Rhode and Schwarz), 都用DTM模式来测试蓝牙设备. 在开发过程中或者生产过程中, 用这些厂商的蓝牙测试仪能很好的测试验证BLE设备的射频性能. 对于这些测试仪, 你也完全可以自己开发PC上的应用程序, 通过串口发送HCI命令给BLE设备进行测试.
他的缺点在于要烧两次固件,第一次烧写network processor来暴露UART口来写命令测试射频性能,第二次才是烧写你产品真正的镜像,产线测试比较麻烦,适合研发测试阶段,但是是标准的测试方法
2.PTM(Production Test Mode)
PTM 是为了避开烧写两次固件的困扰,TI开发出来的一种测试方法,.V1.2 版本以后的协议栈中都提供了PTM模式.
在不重新烧入固件的前提下, 就可以在需要进入测试模式的时候直接暴露出UART从而进入到DTM模式, 而在普通运行模式下UART可以用作其他用途.
上电之后通过一个GPIO的电平设定来进入PTM测试,调用hci.h文件下面的HCI_EXT_EnablePTM 函数来进入PTM模式,这样你就可以通过UART来发命令来控制了
上面WIKI提到的USB Dongle,是和你的被测件可以同信道通讯,把多个包测试的结果传给PC,你没有USB Dongle也没关系,那就连仪器看
关键TI 的Estore上有卖CC2540 USB Dongle啊
https://store.ti.com/CC2540EMK-USB-CC2540-USB-Dongle-P2381.aspx
1. 暴露USART0
2. http://processors.wiki.ti.com/index.php/PTM, 有详细说明,比如SimpleBLEPeripheral_Init( )
3. 用CCdebugger+ Flash Programmer, SWRU270C,31页开始有详细步骤
http://www.ti.com/lit/ug/swru270c/swru270c.pdf?keyMatch=SWRU270C&tisearch=Search-EN-Everything
请问SimplePeripheral工程里,进入PTM模式相关代码要怎么修改?可以麻烦您指教一下么?我卡在这个问题上已经卡了一个月了。。谢谢。(也是用的WT-200测,协议栈版本1.4.1,库文件ptm.lib也添加了)我的代码如下:(哪里出错了,麻烦您指教一下好吗?谢谢)
void llSetupPTMTestPort( void )
{
P0SEL &= ~(BV(PTM) | BV(RDY)); // GPIO
P0DIR &= ~BV(PTM); // 输入, 这个是DUT的CTS, 测试仪的RTS
P0DIR |= BV(RDY); // 输出, 这个是DUT的RTS, 测试仪的CTS
P0 |= BV(RDY); // 首先, 拉高DUT的RTS输出, 就是测试仪的CTS
P0INP &= ~BV(PTM); // 让P0.4的输入模式由P2INP寄存的器配置来决定
P2INP &= ~BV(PDUP0); // 把P0.4拉高, P0中其他口拉低
}
void SimpleBLEPeripheral_Init( uint8 task_id )
{
llSetupPTMTestPort();
if ( TESTER_CONNECTED() )
{
HCI_EXT_EnablePTMCmd();
}
else
{
simpleBLEPeripheral_TaskID = task_id;
// Setup the GAP
......
......
请问SimplePeripheral工程里,进入PTM模式相关代码要怎么修改?可以麻烦您指教一下么?我卡在这个问题上已经卡了一个月了。。谢谢。(也是用的WT-200测,协议栈版本1.4.1,库文件ptm.lib也添加了)我的代码如下:(哪里出错了,麻烦您指教一下好吗?谢谢)
void llSetupPTMTestPort( void )
{
P0SEL &= ~(BV(PTM) | BV(RDY)); // GPIO
P0DIR &= ~BV(PTM); // 输入, 这个是DUT的CTS, 测试仪的RTS
P0DIR |= BV(RDY); // 输出, 这个是DUT的RTS, 测试仪的CTS
P0 |= BV(RDY); // 首先, 拉高DUT的RTS输出, 就是测试仪的CTS
P0INP &= ~BV(PTM); // 让P0.4的输入模式由P2INP寄存的器配置来决定
P2INP &= ~BV(PDUP0); // 把P0.4拉高, P0中其他口拉低
}
void SimpleBLEPeripheral_Init( uint8 task_id )
{
llSetupPTMTestPort();
if ( TESTER_CONNECTED() )
{
HCI_EXT_EnablePTMCmd();
}
else
{
simpleBLEPeripheral_TaskID = task_id;
// Setup the GAP
......
......
请问SimplePeripheral工程里,进入PTM模式相关代码要怎么修改?可以麻烦您指教一下么?我卡在这个问题上已经卡了一个月了。。谢谢。(也是用的WT-200测,协议栈版本1.4.1,库文件ptm.lib也添加了)我的代码如下:(哪里出错了,麻烦您指教一下好吗?谢谢)
void llSetupPTMTestPort( void )
{
P0SEL &= ~(BV(PTM) | BV(RDY)); // GPIO
P0DIR &= ~BV(PTM); // 输入, 这个是DUT的CTS, 测试仪的RTS
P0DIR |= BV(RDY); // 输出, 这个是DUT的RTS, 测试仪的CTS
P0 |= BV(RDY); // 首先, 拉高DUT的RTS输出, 就是测试仪的CTS
P0INP &= ~BV(PTM); // 让P0.4的输入模式由P2INP寄存的器配置来决定
P2INP &= ~BV(PDUP0); // 把P0.4拉高, P0中其他口拉低
}
void SimpleBLEPeripheral_Init( uint8 task_id )
{
llSetupPTMTestPort();
if ( TESTER_CONNECTED() )
{
HCI_EXT_EnablePTMCmd();
}
else
{
simpleBLEPeripheral_TaskID = task_id;
// Setup the GAP
......
......
可以看一下这个视频,说明的蛮清楚的。虽然是CC2640的,但是CC25xx同理可用。
http://training.eeworld.com.cn/TI/video/9104
BR. AZ