搜索
bottom↓
回复: 17

如何测试CC1101无线通讯的误码率?

[复制链接]

出0入0汤圆

发表于 2012-8-3 08:48:29 | 显示全部楼层 |阅读模式
正在做CC1101的无线通讯项目,看到很多人都是说误码率是多少多少的,自己没有想出啥办法来测试误码率,请大侠们指教。
我设置的是每收到一个数据包且CRC正确才给中断信号的。

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2012-8-3 09:00:30 | 显示全部楼层
发送一连串的数据包,每个包带一个自增的计数器,对方收到后,检验数据包的计数器是否连续(其他条件也要校验),断号的就是丢失的包

出0入0汤圆

 楼主| 发表于 2012-8-3 09:10:06 | 显示全部楼层
Niandet 发表于 2012-8-3 09:00
发送一连串的数据包,每个包带一个自增的计数器,对方收到后,检验数据包的计数器是否连续(其他条件也要校 ...

方法很简单!感谢分享,一般大家都是这么测试的吗?

出0入0汤圆

发表于 2012-8-3 23:12:42 | 显示全部楼层
本帖最后由 kation122 于 2012-8-3 23:14 编辑

1、测试误码率不是这么测的。我们使用吴码率来表征灵敏度的参量。比如我们看到 某RFIC 标  灵敏度是 -120dBm @0.1%的灵敏度。当然做成模块后 数传模块也是这样标的。
这个BER 是说 这个IC 的传导灵敏度读 在-120dBm 情况下是千分之一的误码率。
2、这个传递灵敏度是怎么测的呢,这让很多初学者迷茫,其实很简单,使用带BER 的信号源就可以快速的测出上面的参数。TI  Silabs 等原厂使用广泛的信号源是安捷伦  ESG4432 或者 ESG4438,
这个信号源能产生 FSK GFSK 等调制信号、还能统计误码率。使用这个仪器可以方便快捷的测出灵敏度。下面上一测试灵敏度的扫盲图,和看图识字差不多,看过后应该都能明白。






3、当然一般测试都是在暗示内进行的,这样可以尽量杜绝外界的干扰。那仪器多少钱,在哪来可以买呢,很简单,仪器ESG4438C 为例,基本价格 4W USD,基本上就30W RMB 左右,买的时候一定要选上  "E4438C-UN7 Internal Bit Error Rate analyzer" 这个选件,这个是BER 选件。是要加钱购买的。要不然买了也不能直接测出BER。如何购买很方便,你可以直接致电安捷伦 或者 找他们的代理商。
4、希望对你有所帮助。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入4汤圆

发表于 2012-8-4 23:45:16 | 显示全部楼层
楼上专业的

出0入0汤圆

 楼主| 发表于 2012-8-6 08:16:34 | 显示全部楼层
kation122 发表于 2012-8-3 23:12
1、测试误码率不是这么测的。我们使用吴码率来表征灵敏度的参量。比如我们看到 某RFIC 标  灵敏度是 -120dB ...

非常感谢您的回复,非常专业,非常详细,谢谢了。

出0入0汤圆

发表于 2012-8-6 08:30:16 | 显示全部楼层
4楼是专业做RF的吧?很专业...

出0入0汤圆

发表于 2012-8-6 10:10:17 | 显示全部楼层
谢谢大家夸奖,目前确实是靠数传这块吃饭,专业谈不上,就是弄了几年,杂七杂八的都知道一点。目前工作主要是 写程序、调灵敏度、调功放。

出0入0汤圆

 楼主| 发表于 2012-8-6 16:13:19 | 显示全部楼层
kation122 发表于 2012-8-6 10:10
谢谢大家夸奖,目前确实是靠数传这块吃饭,专业谈不上,就是弄了几年,杂七杂八的都知道一点。目前工作主要 ...

kation122大侠,今天正在搞CC1101的通讯问题,关于载波门限应该如何设置?设置到多少比较合适?我下面的设置我计算出来的门限应该是-81db不知道对不对,再有就是这个门限设置到多少比较合适?SMARTRF计算出来的推荐值更是保守,会大大影响通讯距离,下面是我的设置。这个设置感觉通讯距离不理想。
/*****************************************************************************************/
//CC1101初始化
/*****************************************************************************************/
// Chipcon
// Product = CC1101
// Chip version = A   (VERSION = 0x04)
// Crystal accuracy = 10 ppm
// X-tal frequency = 26 MHz
// RF output power = 10 dBm
// RX filterbandwidth = 541.666667 kHz
// Deviation = 127 kHz
// Datarate = 249.938965 kBaud
// Modulation = (1) GFSK
// Manchester enable = (0) Manchester disabled
// RF Frequency = 407.399719 MHz
// Channel spacing = 199.951172 kHz
// Channel number = 0
// Optimization = Sensitivity
// Sync mode = (3) 30/32 sync word bits detected
// Format of RX/TX data = (0) Normal mode, use FIFOs for RX and TX
// CRC operation = (1) CRC calculation in TX and CRC check in RX enabled
unsigned char PATABLE[8] = {0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0};
void WriteRFSettings(void)
{
// Write register settings
CC1100_WriteReg(CC1100_FSCTRL1, 0x0C);//Freq synthesizer control.
                                       //FREQ_IF[4:0] = 0x0C,设置中频频率为304.6875KHZ
CC1100_WriteReg(CC1100_FSCTRL0, 0x00);//Freq synthesizer control.
                                       //FREQOFF[7:0] = 0,设置频率偏移为0
CC1100_WriteReg(CC1100_FREQ2,   0x0F);//Freq control word,high byte.
CC1100_WriteReg(CC1100_FREQ1,   0xAB);//Freq control word,mid byte.
CC1100_WriteReg(CC1100_FREQ0,   0x52);//Freq control word,low byte.
                                       //FREQ[23:0] = 0x0FAB52,设置基频载波频率为407.399719238MHZ
CC1100_WriteReg(CC1100_MDMCFG4, 0x2D);//Modem configuration.
                                       //CHANBW_E[1:0] = 0x00,CHANBW_M[1:0] = 0x02,设置接收器信道滤波带宽为541.666667KHZ
                                       //DRATE_E[3:0]  = 0x0D,
CC1100_WriteReg(CC1100_MDMCFG3, 0x3B);//Modem configuration.
                                       //DRATE_M[7:0] = 0x3B,设置通讯数据速率为249.93896484375KBaud
CC1100_WriteReg(CC1100_MDMCFG2, 0x17);//Modem configuration.
                                       //DEM_DCFILT_OFF = 0,使能解调器前的直流阻断滤波器,以提高接收灵敏度
                                       //MOD_FORMAT[2:0] = 001,使用GFSK调制模式
                                       //MANCHESTER_EN = 0,关闭曼彻斯特编码
                                       //SYNC_MODE[2:0] = 0x07,设置30/32同步词汇位被侦测,载波必须超门限
CC1100_WriteReg(CC1100_MDMCFG1, 0xA2);//Modem configuration.
                                       //FEC_EN = 1,开启交错FEC前导向纠错,只支持固定长数据包
                                       //NUM_PREAMBLE[2:0] = 2,设置前导数据为4字节
                                       //CHANSPC_E[1:0] = 2
CC1100_WriteReg(CC1100_MDMCFG0, 0xF8);//Modem configuration.
                                       //CHANSPC_M[7:0] = 0xf8,设置信道间隔为199.951172KHz
CC1100_WriteReg(CC1100_CHANNR,  0x80);//Channel number.128频道是433MHZ频率中心点
CC1100_WriteReg(CC1100_DEVIATN, 0x62);//Modem dev (when FSK mod en)
                                       //DEVIATION_E[2:0] = 6,DEVIATION_M[2:0] = 2,设置FSK调制的频移键控偏移频率为126.953125KHZ
CC1100_WriteReg(CC1100_FREND1,  0xB6);//Front end RX configuration.接收前端设置
                                       //LNA_CURRENT[1:0] = 0x02
                                       //LNA2MIX_CURRENT[1:0] = 0x03
                                       //LODIV_BUF_CURRENT_RX[1:0] = 0x01
                                       //MIX_CURRENT[1:0] = 0x02,这些数值由SMART RF STUDIO给出,资料上没有给出说明
CC1100_WriteReg(CC1100_FREND0,  0x10);//Front end RX configuration.接收前端设置
                                       //LODIV_BUF_CURRENT_TX[1:0] = 0x01
                                       //PA_POWER[2:0] = 0,选择使用PATABLE索引0定义的输出功率值
CC1100_WriteReg(CC1100_MCSM2 ,  0x07);//MainRadio Cntrl State Machine
                                       //RX_TIME_RSSI = 0
                                       //RX_TIME_QUAL = 0
                                       //RX_TIME[2:0] = 0x07,直到接收完数据包后结束RX状态
CC1100_WriteReg(CC1100_MCSM1 ,  0x00);//MainRadio Cntrl State Machine
                                       //CCA_MODE[1:0]   = 0x00,关闭CCA
                                       //RXOFF_MODE[1:0] = 0x00,接收完成后进入IDLE空闲状态
                                       //TXOFF_MODE[1:0] = 0x00,发送完成后进入IDLE空闲状态
CC1100_WriteReg(CC1100_MCSM0 ,  0x08);//MainRadio Cntrl State Machine
                                       //FS_AUTOCAL[1:0] = 0x00,不进行自动校准,使用手动校准
                                       //PO_TIMEOURT = 0x02
                                       //PIN_CTRL_EN = 0,禁止可选的引脚方式控制无线电
                                       //XOSC_FORCE_ON  = 0,在SLEEP模式下关闭XOSC,禁止强制开启
CC1100_WriteReg(CC1100_FOCCFG,  0x1D);//Freq Offset Compensation Config
                                 //0x3D      //FOC_BS_CS_GATE = 1,   冻结解调器频率补偿,直到载波感应有效
                                       //FOC_PRE_K[1:0] = 0x03,检测到同步字之前的频率补偿回路增益设置为4K
                                       //FOC_POT_K      = 1,   检测到同步字之后的频率补偿回路增益设置为K/2
                                       //FOC_LIMIT[1:0] = 0x01,设置频率补偿算法饱和点为 ±BW_CHAN/8(频道带宽的1/8)
CC1100_WriteReg(CC1100_BSCFG,   0x1C);//Bit synchronization config.
                                       //BS_PRE_K[1:0]  = 0x00,在检测到同步字之前使用的时钟恢复反馈回路积分增益为Ki
                                       //BS_PRE_KP[1:0] = 0x01,在检测到同步字之前使用的时钟恢复反馈回路比例增益为2Kp
                                       //BS_POST_KI     = 1,   在检测到同步字之后使用的时钟恢复反馈回路积分增益为Ki/2
                                       //BS_POST_KP     = 1,   在检测到同步字之后使用的时钟恢复反馈回路比例增益为Kp
                                       //BS_LIMIT[1:0]  = 0x00,不进行数据传输速率偏移补偿
CC1100_WriteReg(CC1100_AGCCTRL2,0x47);//AGC control.
                                       //MAX_DVGA_GAIN[1:0] = 0x01,设置DVGA数字可变增益放大器的允许最大增益为The highest gain settings can not be used
                                       //MAX_LNA_GAIN[2:0]  = 0x00,设置LNA+LNA2可以使用尽可能最大的增益
                                       //MAGN_TARGET[2:0]   = 0x07,设置数字信道滤波器平均振幅为42dB
CC1100_WriteReg(CC1100_AGCCTRL1,0x00);//AGC control.
                                       //AGC_LNA_PRIORITY = 0,增益自动调整先减小LNA2的增益
                                       //CARRIER_SENSE_REL_THR[1:0] = 0x00,禁止载波感应相对变化阀值
                                       //CARRIER_SENSE_ABS_THR[3:0] = 0x00,设置载波感应绝对阀值和MAGN_TARGET值相同,RSSI 绝对阀值在-81db左右
CC1100_WriteReg(CC1100_AGCCTRL0,0xB0);//AGC control.
                                       //HYST_LEVEL[1:0] = 0x02
                                       //WAIT_TIME[1:0] = 0x03,信道滤波器采样32次
                                       //AGC_FREEZE[1:0] = 0x00,时钟进行自动增益调节
                                       //FILTER_LENGHT[1:0] = 0x02,设置从通道滤波器出来的幅度的平均长度为8
CC1100_WriteReg(CC1100_FSCAL3,  0xEA);//Frequency synthesizer calibration.频率校准保存寄存器3
CC1100_WriteReg(CC1100_FSCAL2,  0x2A);//Frequency synthesizer calibration.频率校准保存寄存器2
CC1100_WriteReg(CC1100_FSCAL1,  0x00);//Frequency synthesizer calibration.频率校准保存寄存器1
CC1100_WriteReg(CC1100_FSCAL0,  0x1F);//Frequency synthesizer calibration.频率校准保存寄存器0
CC1100_WriteReg(CC1100_FSTEST,  0x59);//Frequency synthesizer calibration.
CC1100_WriteReg(CC1100_TEST2,   0x88);//Various test settings.
CC1100_WriteReg(CC1100_TEST1,   0x31);//Various test settings.
CC1100_WriteReg(CC1100_TEST0,   0x0B);//Various test settings.
CC1100_WriteReg(CC1100_FIFOTHR, 0x07);// FIFOTHR   RXFIFO and TXFIFO thresholds.
CC1100_WriteReg(CC1100_IOCFG2,  0x07);//GDO2 output pin config.当接收到一个数据包,且CRC校验正确时,高电平;当从RX FIFO总读取第一个字节后,低电平。
CC1100_WriteReg(CC1100_IOCFG0,  0x07);//GDO0 output pin config.
CC1100_WriteReg(CC1100_PKTCTRL1,0x0D);//Packet automation control.
                                       //PQT[2:0] = 0x00,前导码质量评估阀值为0
                                       //CRC_AUTOFLUSH = 1,使能CRC错误自动清空RX FIFO
                                       //APPEND_STATUS = 1,自动附加2字节状态量
                                       //ADR_CHK[1:0] = 0x01,地址检查(无广播)
CC1100_WriteReg(CC1100_PKTCTRL0,0x44);//Packet automation control.
                                       //WHITE_DATA = 1,使能数据白化
                                       //PKT_FORMAT[1:0] = 0x00,普通模式,使用RX FIFO和TX FIFO
                                       //CRC_EN = 1,使能TX自动计算CRC,RX自动校验CRC
                                       //LENGTH_CONFIG[1:0] = 0x00,固定长数据包格式
CC1100_WriteReg(CC1100_ADDR,    0x01);//Device address.本机地址
CC1100_WriteReg(CC1100_PKTLEN,  0x04);//Packet length.最大允许接收数据长度为4
CC1100_WriteReg(CC1100_SYNC1,   0xD3);
CC1100_WriteReg(CC1100_SYNC0,   0x82);

CC1100_WriteBurstReg(CC1100_PATABLE, PATABLE, 8);//Write PATABLE,设置发射功率为+10dB
//CC1100_Strobe(CC1100_SIDLE);//进入空闲状态
CC1100_Strobe(CC1100_SCAL); //进行校准
Delay(CAL_TIME);            //等待校正完成,等待809us



CC1100_Strobe(CC1100_SRX);  //进入接收状态
}

出0入0汤圆

 楼主| 发表于 2012-8-7 07:51:05 | 显示全部楼层
自己再顶顶

出0入0汤圆

发表于 2012-11-12 10:37:27 | 显示全部楼层
学习,收藏了

出0入0汤圆

发表于 2012-11-20 10:13:13 | 显示全部楼层
学习了! 请问BER和PER之间可以换算么?是不是:  PER / 包内BIT数 = BER  ??

出0入0汤圆

发表于 2013-8-1 19:15:04 | 显示全部楼层
mark一下

出0入0汤圆

发表于 2013-10-19 23:09:38 | 显示全部楼层
嗯,好好学习一下。

出0入0汤圆

发表于 2013-10-20 03:48:04 来自手机 | 显示全部楼层
关注这个问题

出0入0汤圆

发表于 2014-3-26 14:27:04 | 显示全部楼层
学习了,顶

出50入255汤圆

发表于 2014-5-10 15:29:58 | 显示全部楼层

原来2012年的帖子里面就有了,结果今年3月我到供应商那里看到,才明白的。
我想自己测试的话,一个发送端,中间加衰减器,可以测个大概吧?

出50入255汤圆

发表于 2014-5-10 15:43:02 | 显示全部楼层
但是,应该采用哪种模式(fsk/ook....)?     
对于CC1101 /CC1110 来说,如何测试呢?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 01:23

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表