1 / 5

.SD卡在SPI模式下工作原理(该总线通信基于主-从配置) 1.SP接口的引脚:SPI_CS,SPI_SCK,SPI_MISO,SPI_MOSI

.SD卡在SPI模式下工作原理(该总线通信基于主-从配置) 1.SP接口的引脚:SPI_CS,SPI_SCK,SPI_MISO,SPI_MOSI 2.SPI总线由ss(cs)(CS为低电平,SD卡使能)、sck、sdi、sdo构成 3.SPI总线包括1根串行同步时钟信号线以及2根数据线、 4.SD卡与主机之间的通信:CMD0->CMD55->ACMD41->CMD1 .看STM32ZET6属性表和 stm32 datasheet 1.APB与AHB

chip
Download Presentation

.SD卡在SPI模式下工作原理(该总线通信基于主-从配置) 1.SP接口的引脚:SPI_CS,SPI_SCK,SPI_MISO,SPI_MOSI

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. .SD卡在SPI模式下工作原理(该总线通信基于主-从配置).SD卡在SPI模式下工作原理(该总线通信基于主-从配置) 1.SP接口的引脚:SPI_CS,SPI_SCK,SPI_MISO,SPI_MOSI 2.SPI总线由ss(cs)(CS为低电平,SD卡使能)、sck、sdi、sdo构成 3.SPI总线包括1根串行同步时钟信号线以及2根数据线、 4.SD卡与主机之间的通信:CMD0->CMD55->ACMD41->CMD1 .看STM32ZET6属性表和 stm32 datasheet 1.APB与AHB APB:主要用于低带宽的周边外设之间的连接,例如UART、1284等它的总线架构不像AHB支持多个主模块,在APB里面唯一的主模块就是APB 桥。其特性包括:两个时钟周期传输;无需等待周期和回应信号;控制逻辑简单,只有四个控制信号。APB2ENR:

  2. 当然还有APB1ENER寄存器 AHB主要用于高性能模块(如CPU、DMA和DSP等)之间的连接 2.GPIO的一些配置寄存器 每个GPI/O 端口有两个32 位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR),一个32 位置位/复位寄存器(GPIOx_BSRR),一个16 位复位寄存器(GPIOx_BRR)和一个32 位锁定寄存器(GPIOx_LCKR)。 GPIO 端口的每个位可以由软件分别配置成多种模式。每个I/O 端口位可以自由编程,然而I/0 端口寄存器必须按32 位字被访问(不允许半字或字节访问)。GPIOx_BSRR 和GPIOx_…

  3. MMC_SD.H代码: #define CMD0 0 //卡复位 应返回0x01 卡即进入Idle State状态. 此时卡将其RCA设为0, 相关寄存器设为传输稳定的最优模式.在向SD卡发送以前需要向SD卡发送74+个时钟 #define CMD9 9 //命令9 ,读CSD数据 CSD保存有如何访问卡的信息 #define CMD10 10 //命令10,读CID数据 #define CMD12 12 //命令12,停止数据传输 #define CMD16 16 //命令16,设置SectorSize 应返回0x00 #define CMD17 17 //命令17,读sector #define CMD18 18 //命令18,读Multi sector #define ACMD23 23 //命令23,设置多sector写入前预先擦除N个block #define CMD24 24 //命令24,写sector #define CMD25 25 //命令25,写Multi sector

  4. #define ACMD41 41 //命令41,应返回0x00 用来判断工作电压是否符合 只有当电压比配时, CID和CSD的数据才能正常传输给主机. #define CMD55 55 //命令55,应返回0x01 发送AMD41之前需发送该命令 #define CMD58 58 //命令58,读OCR信息 #define CMD59 59 //命令59,使能/禁止CRC,应返回0x00 SPI总线配置函数: void SPI2_Configuration(void) { RCC->APB2ENR|=1<<3; //PORTB时钟使能 RCC是时钟配置寄存器 stmdatasheet查看APB2ENR寄存器(PBIO是3位) RCC->APB1ENR|=1<<14; //SPI2时钟使能 SPI2是APB1ENR寄存器14位 GPIOB->CRH&=0X0000FFFF;//PB13.14.15复用输出 GPIOB是GPIO寄存器

  5. GPIOB->CRH|=0XBBB30000;//PB12推挽输出 GPIOB->ODR|=0XF000; //PB12.13.14.15上拉 SPI2->CR1|=0<<10;//全双工模式 SPI2->CR1|=1<<9; //软件nss管理 SPI2->CR1|=1<<8; SPI2->CR1|=1<<2; //SPI主机 SPI2->CR1|=0<<11;//8bit数据格式 SPI2->CR1|=1<<1; //空闲模式下SCK为1 CPOL=1 SPI2->CR1|=1<<0; //数据采样从第二个时间边沿开始,CPHA=1 SPI2->CR1|=6<<3; //Fsck=Fcpu/256 SPI2->CR1|=0<<7; //MSBfirst SPI2->CR1|=1<<6; //SPI设备使能 }

More Related