先说说cc1101是通过SPI方式与MCU相连,可以通过MCU自带的硬件SPI,3线模式,或者MCU模拟SPI来驱动。

关于滤波指令和寄存器配置:

其实这里也TFT配置差不多,玩过TFT的都有同感,TFT可以通过RW引脚控制是读还是写,如果是写寄存器,先写寄存器的地址,然后写数据,数据就到了相应的寄存器里面了;读就是RW引脚设置为读对应的电平,先写寄存器的地址,该寄存器里面的数据就可以读出来了。明白了这些其实理解CC1101就可以很容易理解了。

那么对应CC1101的理解:

寄存器的配置:

CC1101寄存器地址是0~0x3F,也就是BIT0~BIT5

CC1101读写控制是BIT7,BIT7为1时,为读对应的寄存器,BIT7为0时,为写相应的寄存器。

那么还剩下一个BIT6,BIT6是突发访问控制为,BIT6为1为突发访问,BIT6为0为单字节访问。(突发访问下面说)

这样我们就可以很容易理解了,比如配置PKTCTRL0寄存器,其地址0x08,我们突发访问写的话写先数据0x48,再连续写数据,这里明白了突发访问后就很容易知道了,如果单字节读这个寄存器,先写数据0x88,读一下就可以了。

命令滤波:

命令滤波这里和TFT的写0x22是一样的,它就自动跳转到寄存器的出口,cc1101这里也是,只要写一下对应的寄存器的地址,不用写数据,它就内部自动执行相应的指令,比如重启芯片,设置为发送模式,共有14个滤波指令,地址从0x30~0x3D。

关于滤波指令的状态寄存器其实是可读不可写的,

也就是0x30~0x3D的地址加上0xC0,(BIT7 和IBT6为1,前面说过了),比如写数据0xF4,就可以读到相应RSSI状态寄存器里面的值。

数据包格式:

先看一个官方PDF上截得一个图


可以看出数据包由前导码,同步字节,可选的数据包长度,可选的目标地址,真正数据区,2字节的CRC校验码。其更加详细内容可以看前面写的CC430上的无线通信两篇文章。

CC1101的几个状态:

几个状态分别是,IDLE,TX,RX,FSTXON,校准,迁移,RXFIFO_OVERFLOW,TXFIFO_OVERFLOW,有读的状态字的BIT6~BIT4决定

知道了那么多基本的,那么初步认识就容易了,我下面再把笔记贴上去,大家可以看看。

1当CSN引脚变低,MCU必须等待SO引脚电平变低,表明内部稳定,除非radio处于Sleep或者XOFF状态,或者CSN变低后SO会立即变低的。

2只有使radio处于XOSC空闲,并且数字中心的能量开启,其他模块处于功率降低状态,这时候频率和信道配置才能被更新。

3状态字的最后4个字节表示FIFO的可用字节,其最大值是15,此时表示15或者更多字节是可以使用的。

4每当一个字节通过SI引脚写入到寄存器时,状态字节将被送到SO引脚

5寄存器的连续字节访问,就是内部计数器会自动设置起始地址,每增加一个字节,地址会自动加1,无论是读还是写,必须通过CSN拉高终止。

6关于命令滤波其实是radio的单字节指令,通过指令对寄存器的选址,内部的功能做出相应的启动或者关闭,这里和TFT的液晶的寄存器出口指令一样,只需要写一个0x22,不像前面的对寄存器先写地址后写数据。

7关于FIFO的访问,首先知道这个是64字节,可以通过单字节访问或者突发访问(也就是连续访问),他们的地址是0x3F,其实这些是这样操作的。

FIFO分为TX FIFO和RX FIFO两个单独的64数据区,当我们给的地址BIT7不同时,也就是读写控制位是1还是0,BIT7是0时访问的是TX FIFO,BIT7是1时RX FIFO被访问。BIT6是突发访问控制位,当BIT6为1时,选择的是突发访问,BIT6为0是单字节访问。这样就可以得到

0x3F:单字节访问TX FIFO

0xBF:单字节访问RX FIFO

0x7F:突发访问TX FIFO

0xFF:突发访问RX FIFO

8当radio进入休眠状态时,两个FIFO都被刷新为空。

9PATABLE的访问,用来设置发射功率的。地址是0x3E,里面有8个字节的表,接受地址SPI要等待8个字节。读写还是通过读写位控制,突发访问还是单字节访问还是通过突发位控制。这内部有个计数器,当计数到7时会自动下次为0。当设置CSn为高时,内部的计数器会变为0。

10一般所有的滤波命令会立即执行,但是SPWD(休眠滤波命令)不会立即执行,它会延迟到CSn为高时执行。

11接收模式下的数据包滤波,CC1101支持包括地址滤波和最大长度滤波两种滤波方式。

地址滤波:设置PKTCTRL1.ADR_CHK大于0开启数据包地址滤波,radio将数据包中的目标地址字节的值同自己ADDR寄存器值和广播地址(0x00,0xFF)进行比较,如果匹配则数据包被写到RX FIFO,否则数据包被丢失。

最大长度滤波:在可变数据包长度模式下,PKTLEN.PACKET_LENGTH寄存器的值用来设置最大允许数据包长度,当接收字节值比这个值大,则数据包被丢弃。

注:当设置PKTCTTL1.ADRCHK=10时广播地址为0x00,当设置PKTCTTL1.ADRCHK=11时,广播地址为0x00和0xFF。

CC1101调试入门相关推荐

  1. 【旧文章搬运】Windbg+Vmware驱动调试入门(一)---Windbg的设置

    原文发表于百度空间,2009-01-08 ========================================================================== Wind ...

  2. 简单技能之程序调试入门

    简单技能之程序调试入门 黑盒测试 等价类划分

  3. Matlab程序仿真与调试入门

    一.matlab新建脚本文件,程序如下 num =100 ; % 传递函数分子 i = 0 ; % 循环次数计数 % 定义循环变量 sigma, 从 0 开始,每次增加 0.25, 直至 1.25 f ...

  4. 《少年编程反汇编逆向调试入门》录制成功

    少年编程反汇编逆向调试入门 编程要从娃娃抓起,邕城少年编程在行动 让我们一起来编程 手把手教你逆向编程,传授最先进的逆向调试技术,逆向分析系统化工程化,逆向编程不是梦. 李炎 2005年开始反汇编逆向 ...

  5. gdb调试lua_gdb 调试入门,大牛写的高质量指南

    原标题:gdb 调试入门,大牛写的高质量指南 (点击上方公众号,可快速关注) 来源: 伯乐在线 - 道法子 如需转载,发送「转载」二字查看说明 没想到Brendan Gregg这样的大牛,会写出这样一 ...

  6. MTK调试入门之一-TRACE使用的技巧

    52RD上曾有朋友让我写一些调试技巧方面的文章.调试对于软件是十分重要的,但却不是一篇二篇文章能讲清楚的.有很多调试技巧都是零零碎碎的东西,用的时候能很容易使用,但要写出来时,却还是比较麻烦的. MT ...

  7. 使用gdb进行调试入门篇

    今天介绍一下gdb,如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC.BCB的图形化调试器更强大的功能. GDB主要帮忙你完成下面四个方面的功能: 1.启动你的程序,可以按照你的自定 ...

  8. Dev C++报错找不到zlib1.dll解决办法以及调试入门

    调试时出现下面的界面 解决办法 1.下载zlib1.dll: http://www.pc6.com/softview/SoftView_81060.html 2.解压后放到系统目录中 32位系统:放到 ...

  9. Cocos Creator 调试入门

    感谢原作者的辛勤劳作:https://blog.csdn.net/potato47/article/details/79364727 打开 Chrome 开发者工具 Windows:F12 或 Ctr ...

最新文章

  1. nn.Upsampling is deprecated. Use nn.functional.interpolate instead.
  2. MySQL里的wait_timeout
  3. 小白 初步识别读取距离
  4. Deploying Kubernetes with CoreDNS using kubeadm
  5. Proxy模式简介和用例
  6. redhat下使用mrtg监控主机流量
  7. Android版添加phonegap---为APP添加CNZZ统计插件教程
  8. javascript正则表达式一
  9. Atitit.信息论原理概论attilax总结
  10. 乌班图/Ubuntu 21.10 安装nvidia 显卡驱动
  11. 京东万能转链API接口 含商品信息优惠券转链 京东线报如何转链?
  12. eclipse优化配置
  13. C# 实现Remoting双向通信
  14. 【新东方的全套价值上亿英语资料】好不容易搞到的~
  15. 用大O记号法测量算法的效率(Algorithm efficiency Asymptotic notation Big O notation)
  16. 一种圆面积公式的推导方法
  17. windows11 笔记本开启热点就断网
  18. 【HDU4622】Reincarnation(后缀自动机)
  19. 江南鹤微信公众号文章采集器,开发完成了!以后再也不发愁采集微信公众号文章了!
  20. goldenDict有道地址

热门文章

  1. 录音转文字软件有电脑版吗?推荐这几个音频转文字软件
  2. LintCode刷题(入门篇)
  3. 【计算机网络】第七章:[网络层]网络协议(Part1.网络层首部)
  4. 使用TextCNN+Word2Vec实现简历文本分类(一)
  5. Ubuntu系统初次使用
  6. k均值聚类算法python_K均值和其他聚类算法:Python快速入门
  7. cmd 怎么找到文件目录路径
  8. matlab 罗德里格斯变换,修正罗德里格斯参数
  9. 基于Java爬虫的课堂考勤管理系统(毕业设计论文)
  10. 【卫朋】结构设计:如何使用 PROE 导出 CAD 文件?