基于CC2530的SDHC卡读写设计
扫描二维码
随时随地手机看文章
引言
CC2530是用于IEEE802.15.4、ZigBee和RF4CE应用的一个真正的片上系统(SoC)解决方案[2]oSDHC卡的存储性质属于NANDflash,其容量可达32GB,可以有效解决数据存储容量问题,保证数据存储的非易失性。在无线传感网络中,CC2530所组成的每个节点都配上SDHC卡,可以实现多点工作并记录大量数据,能够满足工业监控、森林环境监测、水文检测、土壤检测等场合的需要。
1 硬件设计
1.1 SDHC卡简介
SDHC卡有SD总线模式和SPI总线模式。SD总线模式采用四条数据线并行传输数据,传输效率高,但传输协议复杂,且不易用软件模拟;而SPI总线模式工作时只用一条数据传输线,虽然数据传输效率低,但很容易用软件来模拟,而且SPI总线模式传输协议简单叫所以采用SPI总线,由主控制器在每次传输时产生8个时钟脉冲给SDHC卡作为同步时钟,即可控制数据的输入与输出。
1.2 CC2530简介
CC2530集成了一个高性能的RF收发器和一个低功耗的8051内核,其RAM达8KB,具有两个USART、12位ADC和21个通用GPIO。其本身自带2.4GHz高性能RF收发器,配上适合的天线就构成了无线通信模块。CC2530可配备TI的RemoTI、Z-Stack或SimpliciTI等专有或标准兼容的网络协议栈来简化开发。
1.3 主控电路接口设计
CC2530与SDHC卡的接口连接图如图1所示。
图1 CC2530与SDHC接口图
CS为SDHC卡使能端,DI为写命令和写数据端,DO为读响应与读数据端,CLK为SPI时钟输入端。CC2530的P0口与SDHC卡的对应端口相连,口线之间需要连接上拉电阻。
2 软件设计
2.1 SDHC卡初始化程序设计
为完成SDHC卡的上电过程,CC2530必须向SDHC卡发送至少74个时钟周期,之后SDHC卡会自动进入SD总线模式。若在SD总线模式下,使片选信号CS处于低电平状态,向SDHC卡发送复位命令(CMD0),SDHC卡将进入SPI总线模式,否则SDHC卡工作在SD总线模式。SDHC卡进入SPI工作模式之后,使用CMD8命令识别卡的版本,然后主机不断地向SDHC卡发送命令ACMD41(CMD55与CMD41的组合),使卡处于空闲状态,最后通过CMD58命令区别是标准容量卡还是大容量卡。SPI模式的一般初始化流程如图2所示。
图2 SPI模式的初始化流程
CMD指令是6字节指令,第1字节高两位分别为起始位(对应0)、传输位(对应1),剩余6位为命令号,如CMD0的命令号为000000,合起来第1字节就是40H。因为SPI模式是无需CRC校验位的,所以在CMD0与CMD8之后的CMD命令,是无需关心CRC校验位的。命令的具体内容见表1所列。
表1 SDHC卡初始化使用的主要指令
命令 |
起始命令 |
对应参数 |
校验结束 |
CMD0 |
40H |
00H,00H,00H,00H |
95H |
CMD8 |
48H |
00H,00H,01H,AAH |
87H |
CMD55 |
77H |
00H,00H,00H,00H |
FFH |
CMD41 |
69H |
40H,00H,00H,00H |
FFH |
CMD58 |
7AH |
00H,00H,00H,00H |
FFH |
2.2 SDHC卡的读写程序设计
SPI模式支持单块和多块读写操作。当初始化完成后,用CMD16命令设置SDHC卡读写长度为单块512字节。设置好之后,向SDHC卡发送单块写命令CMD24,在接收到正确的响应信号后,发送数据起始标志(0xFE)和512字节的数据,并跟两字节的CRC校验码。当SDHC卡的回应信号为05H时,即表明SDHC卡接收到正确的数据,若SDHC卡的输出口变为低电平,表明正在向SDHC卡写数据,当输出口变为高电平时表明写操作完成,SDHC卡的单块写数据软件流程如图3所示。单块读操作与单块写操作类似,也是先接收起始位,然后接收数据。
3 结语
本文给出了CC2530对SDHC卡读写操作的方法。通过实验验证了将体积小、容量大的SDHC卡用于CC2530,能使CC2530适应各种需要长期记录大量数据的场合,满足实际的需要。
20210903_6131a8d44d118__基于CC2530的SDHC卡读写设计