嘿、我要在异步串行模式下使用 CC1101发送数据。 在 TI SmartRF Studio 中、我为433.92MHz 和 ASK/OOK 调制生成了寄存器值
radio.writeSingleByte (defs.IOCFG2、0x0B)#GDO2输出引脚配置 radio.writeSingleByte (defs.IOCFG0、0x0C)#GDO0输出引脚配置 radio.writeSingleByte (defs.FIFOTHR、0x47)#RX FIFO 和 TX FIFO 阈值 radio.writeSingleByte (defs.PKTCTRL0、0x32)#数据包自动化控制 radio.writeSingleByte (defs.FSCTRL1、0x06)#Frequency Synthesizer Control radio.writeSingleByte (defs.FREQ2、0x10)#Frequency Control Word、High Byte radio.writeSingleByte (defs.FREQ1、0xB0)#频率控制字、中间字节 radio.writeSingleByte (defs.FREQ0、0x71)#Frequency Control Word、Low Byte radio.writeSingleByte (defs.MDMCFG4、0xF5)#调制解调器配置 radio.writeSingleByte (defs.MDMCFG3、0x83)#调制解调器配置 radio.writeSingleByte (defs.MDMCFG2、0x30)#调制解调器配置 radio.writeSingleByte (defs.DEVIATN、0x15)#调制解调器偏差设置 radio.writeSingleByte (defs.MCSM0、0x18)#Main Radio Control State Machine Configuration radio.writeSingleByte (defs.FOCCFG、0x16)#Frequency Offset Compensation Configuration radio.writeSingleByte (defs.AGCCTRL0、0x92)#AGC 控制 radio.writeSingleByte (defs.WORCTRL、0xFB)#Wake on Radio Control radio.writeSingleByte (defs.FREND0、0x11)#前端 TX 配置 radio.writeSingleByte (defs.FSCAL3、0xE9)#Frequency Synthesizer Calibration radio.writeSingleByte (defs.FSCAL2、0x2A)#Frequency Synthesizer Calibration radio.writeSingleByte (defs.FSCAL1、0x00)#Frequency Synthesizer Calibration radio.writeSingleByte (defs.FSCAL0、0x1F)#Frequency Synthesizer Calibration radio.writeSingleByte (defs.TEST2、0x81)#Various Test Settings radio.writeSingleByte (defs.TEST1、0x35)#各种测试设置 radio.writeSingleByte (defs.TEST0、0x09)#各种测试设置
按照中的理解、要在 TX 透明模式下发送、我需要切换连接到 GD0的引脚(GD0设置为输入)
因此、我将 INIT 和选通写入 TX
PA_TABLE =[0x00、0x60、0x00、0x00、0x00、0x00、0x00、0x00]
SPI = SPI (1、波特率= 1125000、极性= 0、相位= 0、位= 8、 firstbit=SPI.MSB、SCK=Pin (22)、mosi=Pin (23)、miso=Pin (21)
radio = CC1101.CC1101 (SPI=SPI)
radio.reset ()
setDefaultValues ()
radio.writeBurst
(defs.PATABABLE、PA_table) radio.sidle (radio.selfTest (radio.setTXState) radio.silot ("CC1101)输出:radio.selfTest)
PARTNUM 0x00
版本0x14
MARCSTATE 0x01 (空闲)
CC1101无线电初始化
PARTNUM 0x00
版本0x14
MARCSTATE 0x13 (TX)
接下来、我尝试发送数据、更改引脚的状态会连接到 GD0
DEF sendRawData (self、code1、Code2、PE):
代码1 =(代码1 << 16)+ 257 * urandom.getrandbits (8)
打印("0x%08X 0x%08X"%(代码1、代码2))
self._sendANMotors (code1、Code2、PE)
#ToDo:если не установлен 回调
#self.TX_CB (code1、Code2)如果 self.TX_CB 不是无、则为无
utime.sleep_ms (1000)
返回 True
DEF __sendANMotors (self、C1、C2、PE):
对于 J IN 范围(0、4):
#发送前导码为12位
对于 I IN 范围(0、12):
UTIME.SLEEP_US (PE)
self.gd0.on()
UTIME.SLEEP_US (PE)
self.gd0.off()
utime.sleep_us (PE * 10)
发送代码1
对于 I IN 范围(4 * 8、0、-1):
self._sendBit (C1 >>(I - 1)& 1、PE)
发送代码2.
对于 I IN 范围(4 * 8、0、-1):
self._sendBit (C2 >>(I - 1)& 1、PE)
#发送几位
self._sendBit (1、PE)
self._sendBit (1、PE)
utime.sleep_us (PE * 39)
默认_sendBit (self、b、PE):
如果 b =0:
self.gd0.on()#0
utime.sleep_us (PE * 2)
self.gd0.off()
UTIME.SLEEP_US (PE)
否则:
self.gd0.on()#1.
UTIME.SLEEP_US (PE)
self.gd0.off()
uttime.sleep_us (PE * 2)
sendRawData (0x2020、0x456AAA32、420)
我的 RTL-SDR 不显示来自 CC1101的任何活动、我在哪里不对?
