翻译资料1——SPI的访问
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
串行外围接口SPI的访问
作者:Siri Namtvedt 关键字:
• CC1100 • CC1101 • CC1150 • CC2500 • CC2550 • SPI
•复位
•突发访问•命令滤波
1 简介
本设计说明的目的是让我们了解该如何配置SPI接口使其能够与CC1100/CC1101/CC1150/CC2500/CC2550连接,并且告诉我们要如何理解状态字节,以及复位开关在SPI接口上是怎么实现的,另外也描述了我们可以使用的不同SPI接口的访问(读/写,单址访问/突发访问以及命令滤波)。
目录
1简介 (1)
2缩写词 (3)
3SPI接口 (3)
3.1SPI接口配置 (3)
3.2 SPI接口的时间要求 (4)
3.3 SPI的访问 (4)
3.4单字节访问 (5)
3.5突发访问 (5)
3.6命令滤波 (5)
4芯片的状态字节 (7)
5复位 (9)
6总说明 (10)
2 缩写词
MCU 微控制器单元
SPI 串行外围接口
3 SPI接口
CC1100/CC1101/CC1150/CC2500/CC2550的接口配置为一个简单的4线SPI兼容接口(SI, SO, SCLK和CSn),在这里无线电受到MCU的控制。这个接口也可以同时用作写或读缓存数据。在SPI接口上传输的所有地址和数据都要在最重要的位上先进行。
图1 4-线SPI接口
3.1SPI接口配置
配置时要注意连接MCU的SPI接口必须在主模式下操作。配置时钟相位时要确保数据的中心在SCLK周期的第一个正边缘处,在选择极性时要确保SCLK在静止状态时为低电平。
图2 SPI接口的时钟相位和极性
3.2SPI接口的时间要求
关于SPI接口的时间要求,详情请查看芯片数据表。值得注意的是最大SCLK频率(fsclk)是如何改变的,这主要取决于SPI接口的使用情况。SPI时钟运行的最大频率是10 MHz,在地址字节和数据字节(单字节)之间、地址和数据之间或者每一个数据字节之间(突发访问)的最小延迟是100ns。如图3所示。
图3 f SCLK = 10 MHz Max
如果各字节之间没有延迟,那么单通道的最大时钟速度是9MHz(图4),突发访问为6.5MHz(图5)。
3.3SPI的访问
芯片上有47个配置寄存器(地址0000至地址0x2E)。寄存器的读写操作由头地址的R/W 位控制,而burst突发访问位控制访问方式为单字节还是突发访问。
图6 头地址
当CSn变低,我们总是要等到MISO(CHIP_RDYn)变为低电平之后再进行头地址的写操作。CHIP_RDYn信号表明晶体正在运行,调节数字供给电压是稳定的。只要芯片不是在SLEEP或XOFF状态或者一个SRES闪光灯发出命令的情况下,SO引脚总是在CSn变成低电平之后也迅速变为低电平。
图7
图7显示了电磁波从IDLE (1)静止状态转变为SLEEP休眠状态(SPWD),接着通过发射一个TX滤波(STX) (2)使其在休眠状态后被唤醒的工作过程。当CSn变为低电平时电磁波从休眠状态中唤醒。在CSn首次变为低电平时,MISO变为高电平,然后又立即成为低电平,这样就表示芯片已经准备工作了。当CSn第二次变为低电平时,因为电磁波回到了休眠状态,所以MISO又变为高电平。等到电压调节器稳定之后,晶体开始运行,MISO变回低电平,此时可以安全发送TX滤波。
3.4单字节访问
单字节访问寄存器时,突发访问位必须置0。发送地址头以后可以根据R/W位发送或读入一个数据字节。在数据字节之后等待一个新的地址,因此,CSn继续保持低电平。图8表明了数据0x0A是如何首先写入寄存器0x02,然后从同一个寄存器中读出来的。
3.5突发访问
当突发访问位置1时,电磁波会要求一个地址字节和接下来的连续的数据字节,直到CSn 变为高电平,访问终止。
3.6命令滤波
命令滤波是单字节指令,它可以启动一个内部序列(启动RX,进入掉电模式等)。命令滤波和一系列的状态寄存器(地址0x30到地址0x3F)共享地址。这些状态寄存器不能用突发访问模式来访问。如果突发访问位是1,那么访问的就是状态寄存器;如果突发访问位是0,则发送一个命令滤波。一个命令滤波可能在任何其他SPI访问之后,而不需要将CSn拉至高电平。在处理完一个SRES命令滤波之后,当MISO引脚变成低电平时,可以处理下一个命令滤波。命令滤波可以立即被执行,但是当CSn为高电平时SPWD和SXOFF滤波是例外。
当CSn被拉为低电平时,MISO已经变为低电平,表明芯片已经准备好了。SIDLE(离开RX/TX)滤波紧随在一个寄存器写操作和一个无需等待CHIP_RDYn信号的SRES(重启芯片)滤波后。在复位滤波之后,在MISO变为低电平之前需要一些时间才能读寄存器0x00。从这个寄存器读到的数值是0x29(复位之后的默认数值)。
4芯片的状态字节
当在SPI接口上发送头字节、数据字节或命令滤波时,CC1100在SO引脚上发送芯片状
表1 状态字节概要
当写寄存器时,每次一个头字节或者数据字节在MOSI 引脚上传送,一个状态字节都在MISO 引脚上传送。当读寄存器时,每次一个头字节在 MOSI 引脚上传送时,一个状态字节都在MISO引脚上传送。注意状态字节的4LSB(FIFO_BYTES_AVAILABLE)可以为TX FIFO (R/W = 0) or和RX FIFO (R/W = 1)提供信息。
图11 状态字节说明
第一次转移是将0x0A写到寄存器0x02上。因为这是一个写操作,所以当地址头(1)和数据字节(2)都传送时,状态字节在MISO线上传送。状态字节(0x0F)告诉我们,电磁波处于空闲状态,并且TX FIFO (FIFO_BYTES_AVAILABLE = 15)上有15个或以上的自由字节。
第二次转移是从寄存器0x02上进行读操作。因为这是一个读操作,所以仅仅在传送地址头时状态字节才能在MISO线上传送。在MISO线上的下一个字节是寄存器0x02的内容——0x0A。这个状态字节告诉我们电磁波处在空闲状态(STATE = 0),并且在RX FIFO(FIFO_BYTES_AVAILABLE = 0)上没有字节可用。