CC2500 使用总结
概述
- 最高传输速率:500kbps
- RX 功耗:15.6ma
- 单独的64 字节RX 和 TX 数据 FIFO
通信接口
cc2500 提供了spi 接口与外部的mcu通信。cc2500 作为spi slave
接口连线如下:
主控mcu 的spi 配置:
spi 模式 | spi 配置 | 备注 |
---|---|---|
SPI_MODE | SPI_MODE_Master | 主控 |
SPI_DATASIZE | SPI_DataSize_8b | 8bit |
SPI_CPOL | SPI_CPOL_High | sck 空闲为低 |
SPI_CPHA | SPI_CPHA_2Edge | sck 第一沿取样 |
SPI_FirstBit | MSB | 高位在前 |
常规用途/测试输出控制引脚(GDO0,GDO1,GDO2)
分别用IOCFG2,IOCFG1,IOCFG0 三个寄存器配置这三个引脚的功能。这三个寄存器分别可配置的参数范围是0-0x3F,每个参数对应的含义,参考cc2500 datasheet。
我使用的配置方案。
IOCFG2 | IOCFG1 | IOCFG0 |
---|---|---|
0x29 | 0x2E | 0x06 |
- GDO0
上电后,初始化cc2500 前,GDO0 以135khz的频率输出方波。初始化完IOCFG0 寄存器后,保持为低电平。
发射模式下。平常为低电平。当mcu 对cc2500 下达STX(发射)命令后,GDO0 会从低变成高,表示CC2500 正在发射资料。等到GDO0由低高变低时,表示CC2500 发射完成。
接收模式下。平常GDO0 为低电平,当MCU 对CC2500 下达SRX(接收)指令后,当接到封包且preamble 和 syncword 正确时,GDO0 会从低变高,表示正在接收资料,等到GDO0 由高变低时,表示接收完成。编程时,可以设置为下降沿中断接收数据包。
- GDO1 和在spi 接口上的SO 脚是同一脚,因此这个脚上控制的输出在CS 高时才有用。GDO1 默认是3态
- GDO2 没使用。
寄存器
寄存器概述
寄存器类型 | 地址范围 | 说明 |
---|---|---|
配置寄存器 | 0-> 0x2F | 配置CC2500。可读写,长度为一个字节 |
选通命令 | 0x30->0x3F | 当执行写寄存器操作时 表示 mcu 下达的切换命令,只需要写寄存器地址;当执行读寄存器操作时,CC2500 会返回RF 的相关参数 |
发射功率寄存器 | 0x3E | 决定发射功率,最多可设置8组,共8种功率 |
TX/RX FIFO | 0x3F | 写入时,写入TX FIFO;读取时,读取RX FIFO。长度各为64 bytes |
头字节
每次MCU 发起通信,写入的第一个字节成为头字节。头字节有固定的格式。第一个bit 表示读写位,第二个bit表示single or burst 访问,后面6bits 表示地址。
状态字
每次MCU 发起通信,写入头字节到CC2500 ,CC2500 返回一个状态字。状态字的定义如下
bits | 名称 | 描述 |
---|---|---|
7 | CHIP_RDYn | 当功率和晶体已经稳定,该位保持为低 |
6:4 | STATE[2:0] | 表示CC2500当前主状态机状态 |
3:0 | FIFO_BYTES_AVAILABLE[3:0] | TX FIFO 中的自由比特数 |
寄存器的访问
mcu 访问CC2500 寄存器时,第一个字节写入头字节(参考前面说明)。如果是写寄存器,第二个字节是要写入的参数;如果是读寄存器,第二个字节可以是0xFF。
write | read |
---|---|
Single byte: + 0x00 | Single byte: + 0x80 |
Burst: + 0x40 | Burst: + 0xC0 |
突发访问
对于连续地址访问,如果每次都要写入一次地址,将会很浪费时间资源。CC2500 提供了突发访问的机制,访问第一个地址时,设置突然访问位,后续的访问,将不需要再写入地址。scs 拉高结束突发访问。典型的应用场景是FIFO 的访问。
调试
- 可以通过查看CC2500 返回的状态字,查看当前处于的状态。
- 比较一下写入和读出寄存器内容是否一致,判断spi 读写是否正常。
- 可以利用频谱仪捕抓发送频率信息,验证自己配置的频点参数是否符合预期。
遇到的坑
- 焊接了几块CC2500 ,其中一款spi读写寄存器正常,就是收不到数据。其他几块正常,还没找到原因。
- cc2500 周边电路元器件虚焊,导致cc2500 gdo0 输入的电平有异常。我平常习惯于用逻辑分析仪分析数据,一开始没怀疑GDO0 的电压问题,一直在纠结为什么GDO0 没提示收到数据包。
CC2500 使用总结相关推荐
- STM32之SPI原理
SPI(Serial Peripheral Interface,串行外设接口)是Motorola公司提出的一种同步串行数据传输标准,是一种高速的,全双工,同步的通信总线,在很多器件中被广泛应用. SP ...
- 网友在各自领域中所用到的芯片总结(转载赛亚人hanker的博客)
1.音频pcm编码DA转换芯片cirrus logic的cs4344,cs4334 4334是老封装,据说已经停产,4344封装比较小,非常好用.还有菲利谱的. 8211等. 2.音频放大芯片 ...
- [转载]有经验的人对各种常用IC芯片使用感受
有时间看看,可能对以后的硬件电路设计有帮助. -- 作者:互动人 -- 发布时间:2006-10-9 7:26:44 -- 网友在各自领域中所用到的芯片总结(转载) 1.音频pcm编码DA转换芯 ...
- STM32学习笔记之硬件SPI读写与极性设置
废话不多说讲重点!!! [软件中如何设置SPI的极性和相位] SPI分主设备和从设备,两者通过SPI协议通讯. 而设置SPI的模式,是从设备的模式,决定了主设备的模式. 所以要先去搞懂从设备的SP ...
- betaflight 代码结构
. betaflight 代码结构如下表所示 betaflight 体系结构 应用层 CMS osd调参 Flight fail safe gps rescue PID Mixer 抽象基础功能 co ...
- 【详解】SPI中的极性CPOL和相位CPHA是什么以及如何设置
[详解]SPI中的极性CPOL和相位CPHA是什么以及如何设置 2012-03-0214:34:10| 分类:单片机 | 标签: |字号大中小 订阅 版本:2011-08-15 作者:crif ...
- SPI极性与相位简介
[背景] 最近在看关于Silicon Labs的C8051F347的某个驱动中,关于SPI部分初始化的代码,看到其对于SPI的设置为CPOL=1,CPHA=0,对于CPOL及CPHA的含义不了解,想要 ...
- CC1101的WOR电磁波唤醒方式用法
WOR很多人只见其音不见其容,最近经过一翻折腾终于在CC1101上把WOR解决了. 这个配置方式其实对于 CC1100/CC1100E/CC2500等芯片都是通用的,对于SOC 芯片,CC1110和C ...
- SPI总线之CPOL CPHA(转)
[背景] 最近在看关于Silicon Labs的C8051F347的某个驱动中,关于SPI部分初始化的代码,看到其对于SPI的设置为CPOL=1,CPHA=0,对于CPOL及CPHA的含义不了解,想要 ...
- 应聘linux/ARM嵌入式开发岗位
**************************************************************** 因为发在中华英才和智联招聘没有人采我所以我 在这里发布我的个人简历希望 ...
最新文章
- 東方茸回廊 汉化补丁
- 系统集成项目管理工程师考试准备
- Exchange Server 2016管理系列课件53.DAG管理之设置滞后数据库副本
- 008_SpringBoot视图层技术jsp
- selenium调用js文件_selenium肿么调用执行这两个js函数
- Windows常用shell命令大全
- 外部中断实验 编写程序学习外部中断的电平触发方式。无中断时发光让发光二极管从左到右依次点亮,有外部中断请求时,4位数码管从0000开始加1显示(加到9999后复位为0000),同时蜂鸣器报警。
- java 蓝桥杯 乘法次数(题解)
- hdu-4080 Stammering Aliens 字符串hash 模板题
- LED显示驱动(二):显示驱动FPGA验证流程与注意细节
- HDU-1042 N!
- Excel学习笔记4||数据处理函数ROUND、INT、TRUNC、MAX、MIN、ROW、COLUMN
- ping不通云服务器,ping不通云服务器是什么原因
- linux配置文件密码加密工具,Linux下利用openssl对文件进行加密和解密
- 电脑上打开chm文件时系统提示:不能打开文件:mk:@MSITStore:(文件路径)
- Esp8266 进阶之路36【外设篇】乐鑫esp8266芯片SDK编程驱动时间芯片 ds1302,同步网络时间到本地,再也不怕掉电断网也可以同步时间了!(附带Demo)
- 蜗牛爬墙墙高10米C语言,蜗牛爬墙——打破小朋友的数学思维模式
- 删除MySQL中字段中括号以及括号之内的内容
- 开题报告里的基本内容写什么,预期效果又怎么写?
- Job 和 Event