微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > CC1101 ASK模式不能通讯

CC1101 ASK模式不能通讯

时间:12-23 整理:3721RD 点击:

你好,我咨询下,我把CC1101调到433.92Mhz,4.2Kbps, 2-FSK方式,可以通信。具体配置如下:

# Sync word qualifier mode = 30/32 sync word bits detected
# CRC autoflush = false
# Channel spacing = 199.951172
# Data format = Normal mode
# Data rate = 4.20284
# RX filter BW = 325.000000
# PA ramping = false
# Preamble count = 4
# Whitening = false
# Address config = No address check
# Carrier frequency = 433.919830
# Device address = 0
# TX power = 0
# Manchester enable = false
# CRC enable = true
# Deviation = 5.157471
# Packet length mode = Variable packet length mode. Packet length configured by the first byte after sync word
# Packet length = 255
# Modulation format = 2-FSK
# Base frequency = 433.919830
# Modulated = true
# Channel number = 0
//
// Rf settings for CC1101
//
halRfWriteReg(IOCFG0,0x06); //GDO0 Output Pin Configuration
halRfWriteReg(PKTCTRL0,0x05);//Packet Automation Control
halRfWriteReg(FSCTRL1,0x06); //Frequency Synthesizer Control
halRfWriteReg(FREQ2,0x10); //Frequency Control Word, High Byte
halRfWriteReg(FREQ1,0xB0); //Frequency Control Word, Middle Byte
halRfWriteReg(FREQ0,0x71); //Frequency Control Word, Low Byte
halRfWriteReg(MDMCFG4,0x57); //Modem Configuration
halRfWriteReg(MDMCFG3,0x53); //Modem Configuration
halRfWriteReg(MDMCFG2,0x03); //Modem Configuration
halRfWriteReg(DEVIATN,0x15); //Modem Deviation Setting
halRfWriteReg(MCSM0,0x18); //Main Radio Control State Machine Configuration
halRfWriteReg(FOCCFG,0x1D); //Frequency Offset Compensation Configuration
halRfWriteReg(AGCCTRL0,0x92);//AGC Control
halRfWriteReg(WORCTRL,0xFB); //Wake On Radio Control
halRfWriteReg(FSCAL3,0xE9); //Frequency Synthesizer Calibration
halRfWriteReg(FSCAL2,0x2A); //Frequency Synthesizer Calibration
halRfWriteReg(FSCAL1,0x00); //Frequency Synthesizer Calibration
halRfWriteReg(FSCAL0,0x1F); //Frequency Synthesizer Calibration
halRfWriteReg(TEST0,0x09); //Various Test Settings

但是按照上面的配置,只是把调制方式改为ASK/OOK,就不能收发数据了。请问还有别的地方需求修改吗?在SmartRF软件上面只看到有2个寄存器改变了。

MDMCFG2  改变为33

FREND0 改变为11

具体如下:

# Sync word qualifier mode = 30/32 sync word bits detected
# CRC autoflush = false
# Channel spacing = 199.951172
# Data format = Normal mode
# Data rate = 4.20284
# RX filter BW = 325.000000
# PA ramping = false
# Preamble count = 4
# Whitening = false
# Address config = No address check
# Carrier frequency = 433.919830
# Device address = 0
# TX power = 0
# Manchester enable = true
# CRC enable = true
# Deviation = 5.157471
# Packet length mode = Variable packet length mode. Packet length configured by the first byte after sync word
# Packet length = 255
# Modulation format = ASK/OOK
# Base frequency = 433.919830
# Channel number = 0
//
// Rf settings for CC1101
//
halRfWriteReg(IOCFG0,0x06); //GDO0 Output Pin Configuration
halRfWriteReg(PKTCTRL0,0x05);//Packet Automation Control
halRfWriteReg(FSCTRL1,0x06); //Frequency Synthesizer Control
halRfWriteReg(FREQ2,0x10); //Frequency Control Word, High Byte
halRfWriteReg(FREQ1,0xB0); //Frequency Control Word, Middle Byte
halRfWriteReg(FREQ0,0x71); //Frequency Control Word, Low Byte
halRfWriteReg(MDMCFG4,0x57); //Modem Configuration
halRfWriteReg(MDMCFG3,0x53); //Modem Configuration
halRfWriteReg(MDMCFG2,0x3B); //Modem Configuration
halRfWriteReg(DEVIATN,0x15); //Modem Deviation Setting
halRfWriteReg(MCSM0,0x18); //Main Radio Control State Machine Configuration
halRfWriteReg(FOCCFG,0x1D); //Frequency Offset Compensation Configuration
halRfWriteReg(AGCCTRL0,0x92);//AGC Control
halRfWriteReg(WORCTRL,0xFB); //Wake On Radio Control
halRfWriteReg(FREND0,0x11); //Front End TX Configuration
halRfWriteReg(FSCAL3,0xE9); //Frequency Synthesizer Calibration
halRfWriteReg(FSCAL2,0x2A); //Frequency Synthesizer Calibration
halRfWriteReg(FSCAL1,0x00); //Frequency Synthesizer Calibration
halRfWriteReg(FSCAL0,0x1F); //Frequency Synthesizer Calibration
halRfWriteReg(TEST0,0x09); //Various Test Settings

不明白哪里出了问题,麻烦大牛们帮我看看。

AGCCTRL0也变了。

其实你可以直接用ask的推荐设置。

我用了推荐设置,也是不行。没有任何反馈。

TI的大神:

今天我勾选了PA  ramping这个值,然后ASK就收到数据,是不是ASK模式必须选上?

用smartrf sudio 的默认配置连接两个1101对传我试过了,没有问题的。(SmartRF05EB+1101EM)

选不选PA ramping都可以的。

PA ramping 一般可以改善开关频谱的。

我也测试了,是可以的。现在还有一个问题,就是数据可以正常收发,但是接收的内容不对。

一般只有长度字节和第一个字节是正确的,后面感觉解调都失败。比如我发送的是:0x0B 0x0F 0x0F 0x0F 0x0F 0x0F 0x0F 0x0F 0x0F 0x0F 0x0F 0x0F ,

收到的是:0x0B 0x0F 0xFF 0xD4 0x3A 0x5D 0xB0 0xE8 0x87 0xB6 0x14 0x78.

我的寄存器设置是:

0x0F, // FSCTRL1 Frequency synthesizer control.
0x00, // FSCTRL0 Frequency synthesizer control.
0x10, // FREQ2 Frequency control word, high byte.
0xB0, // FREQ1 Frequency control word, middle byte.
0x71, // FREQ0 Frequency control word, low byte.
0xC7, // MDMCFG4 Modem configuration.
0x53, // MDMCFG3 Modem configuration.
0x3A, // MDMCFG2 Modem configuration.
0x22, // MDMCFG1 Modem configuration.
0xF8, // MDMCFG0 Modem configuration.

0x00, // CHANNR Channel number.
0x47, // DEVIATN Modem deviation setting (when FSK modulation is enabled).
0x56, // FREND1 Front end RX configuration.
0x11, // FREND0 Front end RX configuration.
0x18, // MCSM0 Main Radio Control State Machine configuration.
0x1D, // FOCCFG Frequency Offset Compensation Configuration.
0x1C, // BSCFG Bit synchronization Configuration.
0x03, // AGCCTRL2 AGC control.
0x00, // AGCCTRL1 AGC control.
0x92, // AGCCTRL0 AGC control.

0xEA, // FSCAL3 Frequency synthesizer calibration.
0x2A, // FSCAL2 Frequency synthesizer calibration.
0x00, // FSCAL1 Frequency synthesizer calibration.
0x1F, // FSCAL0 Frequency synthesizer calibration.
0x59, // FSTEST Frequency synthesizer calibration.
0x81, // TEST2 Various test settings.
0x35, // TEST1 Various test settings.
0x09, // TEST0 Various test settings.
0x29, // IOCFG2 GDO2 output pin configuration.
0x3F, // IOCFG0 GDO0 output pin configuration. Refer to SmartRF?Studio User Manual for detailed pseudo register explanation.

0x04, // PKTCTRL1 Packet automation control.
0x05, // PKTCTRL0 Packet automation control. 正常fifo模式
0x00, // ADDR Device address.
0x0F, // PKTLEN Packet length.
0x47 //FIFOTHR

上面的问题我今天找到了,是因为把寄存器MDMCFG2 (0x0012)  SYNC_MODE[2:0] 从03设置为02了。改回03收到的数据就正常了。

现在还有一个问题,接收汽车TPMS的数据接收不到。

咨询下TI的大神,前导码能不能设置?默认的是01010101交互,能设置000000或者不要前导码吗?

咨询下TI的大神:

1、在同步模式下,前导码能设置为0000吗?默认是0101.或者取消前导码。如何设置?当我设置

SYNC_MODE  ---   No preamble/sync, carrier-sense above threshold  这样的时候,能不停的收到干扰数据。这种模式应该不行。

2、SYNC_MODE -- 15/16 + carrier-sense above threshold  这种模式表示什么意思?没有前导码?

3、我设置为异步模式能解码数据吗?

请参考文档AN095

同步模式下如果关闭硬件同步((MDMCFG2.SYNC_MODE=0/4) 需要MCU自己来实现前导码功能

一般是发送若干个0x55或是0xAA, 收到后再用一个若干字节的SYNC标识来同步位

关闭硬件同步,CLK脚是不停出现的, 需要MCU自己处理同步码

我的项目就是用的这种模式, 但是我也有个问题未解决...开启Manchester就没办法通信了....

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top