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.

cc2530发射功率的问题,有原理图,pcb,程序。希望TI工程师给解答下

Other Parts Discussed in Thread: CC2530

用频谱仪测试的输出功率是17个dbm,PA是RXF2401C增益22dbm,cc2530功率4.5dbm。理论上大约应该是24或者25dbm多,现在实际测试为17dbm。然后从cc2530输出经过巴伦电路输出测试为-6dbm。

测试程序:

#include "ioCC2530.h"
#include <stdio.h>
#include <string.h>

char un8Array[] = {0X47,0Xde,0Xb3,0X12,0X4d,0Xc8,0X43,0Xbb,0X8b,0Xa6,
0X1f,0X03,0X5a,0X7d,0X09,0X38,0X25,0X1f,0X5d,0Xd4,
0Xcb,0Xfc,0X96,0Xf5,0X45,0X3b,0X13,0X0d,0X89,0X0a}

void rf_send( char *pbuf , int len);

void rf_init()
{
TXPOWER = 0xF5; // 发射功率为4.5dBm
CCACTRL0 = 0xF8; // 推荐值 smartRF软件生成

FRMFILT0 = 0x0C; // 静止接收过滤,即接收所有数据包

FSCAL1 = 0x00; // 推荐值 smartRF软件生成
TXFILTCFG = 0x09;
AGCCTRL1 = 0x15;
AGCCTRL2 = 0xFE;

TXFILTCFG = 0x09; // 推荐值 smartRF软件生成

FREQCTRL = 0x12; // 选择通道11

RFIRQM0 |= (1<<6); // 使能RF数据包接收中断
IEN2 |= (1<<0); // 使能RF中断

RFST = 0xED; // 清除RF接收缓冲区 ISFLUSHRX
RFST = 0xE3; // RF接收使能 ISRXON
}

void rf_send( char *pbuf , int len)
{
RFST = 0xE3; // RF接收使能 ISRXON
// 等待发送状态不活跃 并且 没有接收到SFD
while( FSMSTAT1 & (( 1<<1 ) | ( 1<<5 )));

RFIRQM0 &= ~(1<<6); // 禁止接收数据包中断
IEN2 &= ~(1<<0); // 清除RF全局中断

RFST = 0xEE; // 清除发送缓冲区 ISFLUSHTX
RFIRQF1 = ~(1<<1); // 清除发送完成标志

// 填充缓冲区 填充过程需要增加2字节,CRC校验自动填充
RFD = len + 2;
for (int i = 0; i < len; i++)
{
RFD = *pbuf++;
}

RFST = 0xE9; // 发送数据包 ISTXON
while (!(RFIRQF1 & (1<<1))); // 等待发送完成
RFIRQF1 = ~(1<<1); // 清除发送完成标志位

RFIRQM0 |= (1<<6); // RX接收中断
IEN2 |= (1<<0);
}

void main(void)
{
P0DIR |= ( 1<< 0) | (1<<1 );//PA 设置为输出
P0_0 = 0;
P0_0 = 1;
P0_1 = 0;

EA = 0; // 暂时关闭全局中断

SLEEPCMD &= ~0x04; // 设置系统时钟为32MHz
while( !(SLEEPSTA & 0x40) );
CLKCONCMD &= ~0x47;
SLEEPCMD |= 0x04;

timer1_init(); // 定时器初始化 2ms 比较匹配
rf_init(); // RF初始化 无帧过滤

EA = 1; // 使能全局中断

while(1)
{
rf_send(un8Array , 30); // 直接转发串口数据
}
}