查看: 1675|回复: 0

CC1101笔记

[复制链接]
  • TA的每日心情
    擦汗
    2024-5-31 10:44
  • 签到天数: 1492 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2014-1-22 13:07:52 | 显示全部楼层 |阅读模式
    分享到:
    CC1101工作流程:
        1.初始化SPI,MCU各引脚。
       
            当有数据接收或发送状态声明时,有中断和查询两种方式。GDO0与GDO2引脚输出至MCU引脚,若要用中断则要接至MCU外部中断引脚,查询时则可用GPIO。
        2.复位CC1101。
        3.初始化CC1101。(写操作时可从SO中读出CC1101状态)
            初始化后CC1100为IDLE状态.
       
        4.状态机转换,写/读FIFO数据。
            每次写操作时SO返回的值为写操作前的CC1100状态值,具体值见Table20;读状态命令为当前CC1100状态值,具体值见寄存器0X35说明;注意两者区别。
    快速认识Cc1100
                 Cc1100可以工作在同步模式下,代价是:MCU自己控制前导码。本系统中,Cc1100将工作在异步模式下。
      
    知识点
                 Head Byte:在 引脚 Cc1100.Csn 有效后,通过SPI总线写入 Cc1100的第一个字节。
                 Status Byte: 在写入 HeadByte 的同时,MCU 得到 Status Byte。
                 Burst Bit:在 Head Byte 中的一个 Bit, 有效值=="1",无效值=="0"
    GDO0:
                 GDO0可用作FIFO状态输出,载波感应(CS),时钟输出,GDO0 脚也能用作集成于芯片的模拟温度传感器(未用).配置寄存器为IOCFG0(0X02),现在配置为RX模式下数据状态反应输出.
    GDO1:
                 GDO1与SPI的SO共用引脚,默认状态下为3态,当CSn为低电平时,此引脚SPI的SO功能生效。配置寄存器为IOCFG0(0X01),现在配置为空闲状态下3态,SPI模式下SO.
    GDO2:
                 GDO2可用作FIFO状态输出,载波感应(CS),时钟输出,配置寄存器为IOCFG0(0X00),现在配置为载波感应(CS)输出.
    TXOFF_MODE/RXOFF_MODE:
                 注意,此配置为在数据包被发送/接收后状态机状态决定位,仅是在发生发送或者接收后动作;当为IDLE时发SRX/STX后状态机不按此配置运行。TX/RX后要校准。
    功率放大控制(PATABLE):
                 0X3E为功率写入地址,0X22为为功率配置寄存器。PATABLE 是一个8字节表,定义了8个PA 功率值。这个表从最低位(0)到最高位(7)可读和写,一次一位。一个索引计数器用来控制对这个表的访问。
                 每读出或写入表中的一个字节,计数器就加 1。当 CSn 为高时,计数值置为最小值。当达到最大值时,计数器由零重新开始计数。
       
                 FREND0.PA_POWER(2:0)从8个功率值中选择1个,且振幅为相应数等级。
    异步模式:
                 在此模式下,CC1101中的MCU的若干支持机制会停用,包括数据包硬件处理,FIFO 缓冲,数据白化,交错(interleaver)和前向纠错(FEC) ,曼彻斯特编码(Manchester encoding);
                 MSK不支持异步模式;
                 PKTCTRL0.PKT_FORMAT == 3 使能异步模式,GDO0为input,GDO0, GDO1或GDO2为output 相应配置位为IOCFG0.GDO0_CFG, IOCFG1.GDO1_CFG IOCFG2.GDO2_CFG;
    电磁波激活(WOR):
                 在WOR滤波使用之前RC振荡器必须启用,RC振荡器是 WOR 定时器的时钟源.在WOR下,收到信号后会自动进入RX模式.
    载波感应(CS)与RSSI:
                 因此两配置相互有连系,所以一起论述.
                 RSSI 只能在RX模式下才能有效,作用为对当前信号质量评估,信号质量可从RSSI寄存器读出.RSSI信号强度可从0X34取出.
                 RSSI(信号强度)计算公式: 注:此为433M下,结果为负数,
                                                RSSI_dBm=(RSSI-256)/2-74 (RSSI>=128)
                                                RSSI_dBm= (RSSI/2)-74      (RSSI<128)
                 CS 只在RX模式下才能有效,当信号质量高于设定门限值时,CS状态将会被声明。现在配置为GDO2输出感应状态.
                 CS门限值由以下4个寄存器决定
                 ? AGCCTRL2.MAX_LNA_GAIN  
                 ? AGCCTRL2.MAX_DVGA_GAIN
                 ? AGCCTRL1.CARRIER_SENSE_ABS_THR
                 ? AGCCTRL2.MAGN_TARGET

                
                 CS门限值计算公式:     表默认门限值 + (MAGN_TARGET-33) + CARRIER_SENSE_ABS_THR.
                                               表默认门限值见table29,table30. 由AGCCTRL2.MAX_LNA_GAIN   AGCCTRL2.MAX_DVGA_GAIN 决定.
                                              默认门限值表只给了两个数据速率下的值,其余由自己测.我们对此要求不是太高,可以参考用这个表.
                                               CARRIER_SENSE_ABS_THR为对应表中-7~7的值,最后单位为dBm.
                                               Example:
                                                             在250K下AGCCTRL2.MAX_LNA_GAIN = 00   AGCCTRL2.MAX_DVGA_GAIN = 00 得出表中为-90.5
                                                              MAGN_TARGET = 7(42), CARRIER_SENSE_ABS_THR = 1(1)
                                                             门限为-90.5 + (42-33) + 1= -82.5dBm            
    清理信道访问(CCA):

                 清理信道访问用来指示当前信号是空闲还是忙。当忙时是否丢弃当前数据,寄存器MCSM1.CCA_MODE决定是否丢弃.默认配置为保留当前寄存器中数据,丢弃下一步要处理数据.

    数据FIFO:

             

                 当TX操作时,由MCU控制,溢出时CC1101出错;当RX操作时,读空时CC1101出错
                 RX FIFO 和 TX FIFO 中的字节数也能分别从状态寄存器 RXBYTES.NUM_RXBYTES和TXBYTES.NUM_TXBYTES 中读出
                 4 位 FIFOTHR.FIFO_THR 设置用来控制FIFO 门限点
                 读单字节时,,CSn继续保持低;。突发访问方式允许一地址字节,然后是连续的数据字节,直到通过设置 CSn 为高来断访问
                
                 当写操作时,最后一个字节被传送至 SI 脚后, 被 SO脚接收的状态位会表明在 TX FIFO中只有一个字节是空闲,
    寄存器分类
    Configration Registers

    共47个,可读,可写

    0x00~0x2E

    Status Registers

    共14个,只读

    0x30~0x3D

    Command Strobe

    共14个,只写

    寻址空间:0x30~0x3D

    14个地址,对相应的地址进行写,

    就相当于激活了对应的命令

    本系统是用到的Strobe:

    CC1100_STROBE_RESET
    CC1100_STROBE_ENTER_RX_MODE
    CC1100_STROBE_ENTER_TX_MODE
    CC1100_COMMAND_STROBE_SIDLE
    CC1100_COMMAND_STROBE_SFRX

    TX FIFO共64个,只写
    RX FIFO共64个,只读

    Status(Command)Registers操作:
         当地址为0X30~0X3D时
         burst为1:对Status Registers的操作
                       Status Registers只可读,且只能一次读一个字节,不可写                 
         burst为0:对Command Registers操作
                     寄存器的访问和一个寄存器的操作一样,但没有数据被传输.写完毕后,CC1100便执行相应操作.
         读写FIFO,有两种模式:单字节读写;Burst读写。
             单字节读写时序:
                 1 Cc1100.Csn有效。
                 2 写入Head Byte。
                  3 读、写一个1字节。
                 4 Cc1100.Csn无效。

    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-25 18:28 , Processed in 0.102588 second(s), 15 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.