STM8教程实验21-SPI总线+SD卡+block的读写
STM8教程实验21-SPI总线+SD卡+block的读写学生剪什么发型好看
例程⼆⼗⼀SDCard基于SPI总线的读写SDCard现在可以说是⾮常流⾏的了,⽆论是⼿机,相机等等的电⼦产品中都能见到它的影⼦,所以对于SDCard的读写就变得⼗分之重要了,SDCard有2中链接⽅法,⼀种是SPI,另⼀种是SDIO。2种链接⽅式的读写速度相差很⼤的,基于SPI的读写只要25Mbit/s,⽽基于SDIO⽅式便可以达到100Mbit/s。在我的STM8开发板上没有SDIO的总线,那只能是基于SPI总线的读写。那我们先看看它的链接⽅式吧
戴拿奥特曼主题曲这就SPI总线的接法。
SDCard涉及的知识⾮常多,如果要具体到每⼀点去讲解的话,恐怕要将⼏天都讲不完,下⾯我主要讲⼀下简单实⽤,并且是在单⽚机的应⽤,其他的就留给读写再深⼊去了解。
SDCard每个扇区⼤约有10万次的写寿命,读的话就没有限制,这应该够我们的吧。擦除操作可以加速写操作,因为在写之前会进⾏擦除操作。如果SDCard不在⽀持的电压范围内,他是忽略所有总线的传输。SD卡总线采⽤的是单主多从结构,总线上所有卡公⽤时钟和电源线。主机可以通过不同的⽚选信号线依次分别访问每个卡,每个卡的CID寄存器中已预编程了⼀个唯⼀的卡标识号,来区分不同的卡,主机通过READ_CID的命令读取CID寄存器,CID寄存器咋SD卡⽣产过程中的测试和格式化是被编程,主机只能读取改号。
SD的读写操作有2种Single Block Mode 和Multiple Block Mode。
东风无力百花残Single Block Mode :主机根据事先定义的长度读写⼀个数据块。有发送模块⽣成⼀个16位的CRC校验码,接受端根据校验码进⾏检验。读操作的块的长度受设备sector⼤⼩(512byte)的限制,但是可以最⼩为⼀个字节。不对齐的访问时不允许的,每个数据块必须位于单个物理sector内。写操作的⼤⼩必须为sector ⼤⼩,起始地址必须与sector边界对齐。
Multiple Block Mode:主机可以读写多个数据块(相同长度),根据命令中的地址读取或写⼊连续的内存地址。操作通过⼀个停⽌传输命令结束。写操作必须地址对齐。
数据保护:每个sector的数据通过ECC进⾏保护,在写sector时⽣成ECC,在读sector是检验ECC,如果发现错误,在传输前进⾏纠正。
数据擦除:SD卡数据擦除的最⼩单位是sector。为了加速擦除操作,多个sector 可以同时擦除,为了⽅便选择,第⼀个指令包含起始地址,第⼆个指令包含结束地址,在地址范围内的所有sector将被擦
除。
买房的流程
形容高兴的词语二个字
下⾯我们来看看怎样初始话和读写SDCard。还是从主函数看起
SD_Init();SD的初始话就是SPI的初始话,跟在SPI_Flash的例程配置⼀样的,注意的⼀点是要把W25X16的⽚选信号线拉⾼。
最主要就是这个函数u8 SD_Idle_Sta(void)。下⾯就是函数原型
只有使SD卡设置为挂起的模式,才能向卡⾥⾯读写数据。函数⾥⾯主要是向SD 卡命令,和等待SD卡的响应。下⾯在看看发命令的函数双通道内存

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。