tag 标签: spi模式

相关博文
  • 热度 11
    2013-4-4 23:04
    2227 次阅读|
    1 个评论
    第四十四章  SD卡实验        很多单片机系统都需要大容量存储设备,以存储数据。目前常用的有U盘,FLASH芯片,SD卡等。他们各有优点,综合比较,最适合单片机系统的莫过于SD卡了,它不仅容量可以做到很大(32Gb以上),而且支持SPI接口,方便移动,并且有几种体积的尺寸可供选择(标准的SD卡尺寸,以及TF卡尺寸等),能满足不同应用的要求。 只需要4个IO口即可外扩一个最大达32GB以上的外部存储器,容量从几十M到几十G选择尺度很大,更换也很方便,编程也简单,是单片机大容量外部存储器的首选。 ALIENTKE 战舰STM32开发板自带了标准的SD卡接口,可使用STM32自带的SPI/SDIO接口驱动(通过跳线帽选择驱动方式),本章我们使用SPI驱动,最高通信速度可达18Mbps,每秒可传输数据2M字节以上,对于一般应用足够了。在本章中,我们将向大家介绍,如何在ALIENTEK战舰STM32开发板上实现SD卡的读取。本章分为如下几个部分: 44.1 SD卡简介 44.2 硬件设计 44.3 软件设计 44.4 下载验证 44.1 SD卡简介 SD卡(Secure Digital Memory Card)中文翻译为安全数码卡,它是在MMC的基础上发展而来,是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地于便携式装置上使用,例如数码相机、个人数码助理(PDA)和多媒体播放器等。SD卡由日本松下、东芝及美国SanDisk公司于1999年8月共同开发研制。大小犹如一张邮票的SD记忆卡,重量只有2克,但却拥有高记忆容量、快速数据传输率、极大的移动灵活性以及很好的安全性。按容量分类,可以将SD卡分为3类:SD卡、SDHC卡、SDXC卡。如表44.1.1所示: 容量 命名 简称 0~2G Standard Capacity SD Memory Card SDSC或SD 2G~32G High Capacity SD Memory Card SDHC 32G~2T Extended Capacity SD Memory Card SDXC   表44.1.1 SD卡按容量分类 SD卡和SDHC卡协议基本兼容,但是SDXC卡,同这两者区别就比较大了,本章我们讨论的主要是SD/SDHC卡(简称SD卡)。 SD卡一般支持2种操作模式: 1,SD卡模式(通过SDIO通信); 2,SPI模式; 主机可以选择以上任意一种模式同SD卡通信,SD卡模式允许4线的高速数据传输。SPI模式允许简单的通过SPI接口来和SD卡通信,这种模式同SD卡模式相比就是丧失了速度。 SD卡的引脚排序如下图44.1.1所示:     图44.1.1 SD卡引脚排序图 SD卡引脚功能描述如表45.1.2所示:   表45.1.2 SD卡引脚功能表   SD卡只能使用3.3V的IO电平,所以,MCU一定要能够支持3.3V的IO端口输出。注意:在SPI模式下,CS/MOSI/MISO/CLK都需要加10~100K左右的上拉电阻。 SD卡有5个寄存器,如表45.1.3所示: 名称 宽度 描述 CID 128 卡标识寄存器 RCA 16 相对卡地址(Relative card address)寄存器:本地系统中卡的地址,动态变化,在主机初始化的时候确定 *SPI模式中没有 CSD 128 卡描述数据:卡操作条件相关的信息数据 SCR 64 SD配置寄存器:SD卡特定信息数据 OCR 32 操作条件寄存器   表45.1.3 SD卡相关寄存器 关于这些寄存器的详细描述,请参考光盘相关SD卡资料。我们在这里就不描述了。接下来,我们看看SD卡的命令格式,如表45.1.4所示: 字节1 字节2--5 字节6 7 6 5      0 31       0 7       1 0 0 1 command 命令参数 CRC 1   表45.1.4 SD卡命令格式 SD卡的指令由6个字节组成,字节1的最高2位固定为01,低6位为命令号(比如CMD16,为10000即16进制的0X10,完整的CMD16,第一个字节为01010000,即0X10+0X40)。 字节2~5为命令参数,有些命令是没有参数的。 字节6的高七位为CRC值,最低位恒定为1。 SD卡的命令总共有12类,分为Class0~Class11,本章,我们仅介绍几个比较重要的命令,如表45.1.5所示: 命令 参数 回应 描述 CMD0(0X00) NONE R1 复位SD卡 CMD8(0X08) VHS+Check pattern R7 发送接口状态命令 CMD9(0X09) NONE R1 读取卡特定数据寄存器 CMD10(0X0A) NONE R1 读取卡标志数据寄存器 CMD16(0X10) 块大小 R1 设置块大小(字节数) CMD17(0X11) 地址 R1 读取一个块的数据 CMD24(0X18) 地址 R1 写入一个块的数据 CMD41(0X29) NONE R3 发送给主机容量支持信息和激活 卡初始化过程 CMD55(0X37) NONE R1 告诉SD卡,下一个是特定应用命令 CMD58(0X3A) NONE R3 读取OCR寄存器   表45.1.5 SD卡部分命令 上表中,大部分的命令是初始化的时候用的。表中的R1、R3和R7等是SD卡的回应,SD卡和单片机的通信采用发送应答机制,如图45.1.2所示: 图45.1.2 SD卡命令传输过程        每发送一个命令,SD卡都会给出一个应答,以告知主机该命令的执行情况,或者返回主机需要获取的数据。SPI模式下,SD卡针对不同的命令,应答可以使R1~R7,R1的应答,各位描述如表45.1.6所示:     R1响应格式 位 7 6 5 4 3 2 1 0 含义 开始位 始终为0 参数 错误 地址 错误 擦除序列 错误 CRC错误 非法 命令 擦除 复位 闲置 状态 表45.1.6 R1响应各位描述        R2~R7的响应,我们就不介绍了,请的大家参考SD卡2.0协议。接下来,我们看看SD卡初始化过程。因为我们使用的是SPI模式,所以先得让SD卡进入SPI模式。方法如下:在SD卡收到复位命令(CMD0)时,CS为有效电平(低电平)则SPI模式被启用。不过在发送CMD0之前,要发送74个时钟,这是因为SD卡内部有个供电电压上升时间,大概为64个CLK,剩下的10个CLK用于SD卡同步,之后才能开始CMD0的操作,在卡初始化的时候,CLK时钟最大不能超过400Khz!。 接着我们看看SD卡的初始化,SD卡的典型初始化过程如下: 1、初始化与SD卡连接的硬件条件(MCU的SPI配置,IO口配置); 2、上电延时(74个CLK); 3、复位卡(CMD0),进入IDLE状态; 4、发送CMD8,检查是否支持2.0协议; 5、根据不同协议检查SD卡(命令包括:CMD55、CMD41、CMD58和CMD1等); 6、取消片选,发多8个CLK,结束初始化 这样我们就完成了对SD卡的初始化,注意末尾发送的8个CLK是提供SD卡额外的时钟,完成某些操作。通过SD卡初始化,我们可以知道SD卡的类型(V1、V2、V2HC或者MMC),在完成了初始化之后,就可以开始读写数据了。 SD卡读取数据,这里通过CMD17来实现,具体过程如下: 1、发送CMD17; 2、接收卡响应R1; 3、接收数据起始令牌0XFE; 4、接收数据; 5、接收2个字节的CRC,如果不使用CRC,这两个字节在读取后可以丢掉。 6、禁止片选之后,发多8个CLK; 以上就是一个典型的读取SD卡数据过程,SD卡的写于读数据差不多,写数据通过CMD24来实现,具体过程如下: 1、发送CMD24; 2、接收卡响应R1; 3、发送写数据起始令牌0XFE; 4、发送数据; 5、发送2字节的伪CRC; 6、禁止片选之后,发多8个CLK; 以上就是一个典型的写SD卡过程。关于SD卡的介绍,我们就介绍到这里,更详细的介绍请参考光盘SD卡的参考资料(SD卡2.0协议)。 44.2 硬件设计 本章实验功能简介:开机的时候先初始化SD卡,如果SD卡初始化完成,则提示LCD初始化成功。按下KEY0,读取SD卡扇区0的数据,然后通过串口发送到电脑。如果没初始化通过,则在LCD上提示初始化失败。 同样用DS0来指示程序正在运行。 本实验用到的硬件资源有: 1)  指示灯DS0 2)  KEY0按键 3)  串口 4)  TFTLCD模块 5)  SD卡 前面四部分,在之前的实例已经介绍过了,这里我们介绍一下战舰STM32开发板板载的SD卡接口和STM32的连接关系,如图44.2.1所示:   图44.2.1 SD卡接口与STM32连接原理图          我们用跳线帽将P10的SD_DT3、SD_CMD、SD_SCK、SD_DT0分别同P12的SD_CS、SPI2_MOSI、SPI2_SCK、SPI2_MISO连接起来,即实现SD卡的SPI模式连接。硬件连接示意图如图44.2.2所示:     图44.2.2 SD卡SPI方式硬件连接示意图        将图中所示的4处,用跳线帽短接,接口实现SD卡与STM32的SPI连接。最后,你还得自备一个SD卡,将其插入板子下面的SD卡接口。 44.3 软件设计 打开上一章的工程,首先在HARDWARE文件夹下新建一个SD的文件夹。然后新建一个MMC_SD.C和MMC_SD.H的文件保存在SD文件夹下,并将这个文件夹加入头文件包含路径。 打开MMC_SD.C文件,在该文件里面,我们输入与SD卡相关的操作代码,这里由于篇幅限制,我们不贴出所有代码,仅介绍两个最重要的函数,第一个是SD_Initialize函数,该函数源码如下:                                               非常抱歉,由于编辑器篇幅所限,剩下内容,请看附件。
  • 热度 20
    2012-8-22 09:37
    1453 次阅读|
    0 个评论
      W5100E01-AVR是为AVR开发者提供的W5100评估板。本文是W5100E01-AVR的用户手册,希望对大家有所帮助。今天我们先介绍本手册的前半部分内容:   概述 W5100E01-AVR是为AVR开发者提供的W5100评估板。 1.1.包装 当你购买W5100E01-AVR BD时,请确保有以下所有的内容。   1.2. 特性 1.2.1.硬件特性 W5100E01-AVR开发板由两种类型的板构成。      -PM-A1 --MCU:ATmega128, 8MHz --RAM:32KB外部SRAM --ROM:128KB闪存(ATmega128内部闪存) --ICE I/F:JTAG, 提供ISP -W5100E01-AVR --电源:直流电源适配器5V, 2A --串口:两个RS-232串口(默认波特率为57600) --LCD:16 X 2字符LCD --PAL:地址译码器 --W5100:全硬件TCP/IP芯片(嵌入PHY) --MagJack:RD1-125BAG1A (UDE) ,  集成变压器(1:1) Link ACT FDX LEDs 1.2.2.固件特性 评估板的固件由两部分组成。 -管理模式 --网络配置:MAC、源IP地址、G/W IP、S/N、DNS IP配置 --信道配置:W5100为每一个信道测试应用程序设置 --Ping测试:Ping请求测试DNS -应用模式 --Loopback TCP服务器:TCP服务器模式测试应用程序 --Loopback TCP客户:TCP客户模式测试应用程序 --Loopback UDP:UDP测试应用程序 --Web服务:Web服务测试应用程序 --DHCP客户:利用DHCP服务器进行动态网络配置   2. 入门指南 2.1.系统配置 2.1.1. 评估板的设计与配置 为测试评估板的功能以及开发应用,评估板配置如下。第一,评估板使用交叉双绞线电缆(数据通信)和串口电缆(监视)连接到电脑;第二,开关和跳线设置如下。   (1)启用SPI:J3 为了通过SPI模式连接W5100和MCU,引脚2和3要短路。为了禁用SPI模式,引脚1和2要短路。   2.2 电脑程序安装 2.2.1. 开发程序安装 想了解更多信息,请参考“AVR工具指南Vx.x.pdf”。 2.2.1.1. 编译工具链 安装和使用WinAVR,请参考相关手册。 当前评估板固件使用3.4.6版本的AVR GCC编译器,随着版本的升级可以改变编译器。 2.2.1.2. ICE编程 JTAG ISP ICE工具支持对评估板的开发和调试,为使用ISP编程,需要应用”AVRStudio”程序。关于“AVR Studio”的安装和使用,请参考“AVR工具指南Vx.x.pdf”,关于‘ISP GENDER’的使用,请参考“ISP GENDER 用户指南Vx.x.pdf”。 2.2.1.3. ROM文件制作程序 ROM文件制作程序使用简单的‘ROM文件系统’,为评估板的使用提供便利条件。原因是ROM文件制作程序应用于评估板,作为‘ROM文件系统’用于访问网站服务器测试应用程序。想了解更多安装介绍和ROM文件制作程序,请参考“ROM文件制作用户手册Vx.x.pdf”。 2.2.2. 评估板测试电脑程序安装 2.2.2.1. Loopback 测试程序(AX1)安装 Loopback 测试程序(以下简称“AX1”)是一个评估W5100性能的程序,在连接评估板和应用程序之间进行文件和数据包的Loopback测试,例如Loopback TCP 服务器/客户与Loopback UDP。想了解AX1的安装和使用,请参考“ AX1 用户手册Vx.x.pdf”。   2.3 快速启动 在确认了评估板的开发包后,测试评估板的顺序如下所示。 (1)确认测试环境,参见2.1节。 使用双绞线电缆直接连接电脑和评估板。 使用串口电缆直接连接电脑和评估板。 使用5V电源适配器连接评估板。 (2)确认测试的电脑网络配置如下所示。 IP地址:192.168.0.3 默认网关:192.168.0.1 子网掩码:255.255.255.0 (3)在测试电脑上安装AX1,参见2.2.2.1节 (4)执行串口终端程序(例如Hyperterminal)后,属性设置如下。   在完成终端设置后,连接评估板并等待。 (5)打开评估板的开关(SW1) 以下各项设置需要供电。 --接通电源时,检查评估板的LED(D2)是否正常亮着。 --检查LED的D3和D4是否轮流闪烁3次 --检查的评估板的液晶显示器(LCD)输出是否如图 2.3所示,终端程序输出是否如图2.4所示。   (6)使用评估板进行Ping测试。   (7)执行“AX1”程序,参见“AX1用户手册Vx.x.pdf ” (8)利用TCP客户测试“AX1”的操作,参见“ AX1用户手册Vx.x.pdf ” (9)利用任意文件或数据包在“AX1”程序和评估板之间进行测试。     这是本文的前半部分内容,后面的内容我们将会在今后的博文一一介绍,希望对大家有所帮助。欢迎大家的留言讨论。     更多有关W5100的博文请看这里: http://blog.iwiznet.cn/?page_id=329 全硬件TCP/IP嵌入式以太网控制器——W5100E01-AVR http://blog.iwiznet.cn/?p=432 开源硬件-开源思潮到了? http://blog.iwiznet.cn/?p=316 WIZnet员工Richard培训笔记: WIZnet核心技术和产品对比 http://blog.iwiznet.cn/?p=29   也可进入我们的官方网站或博客查看更多。 如果您对WIZnet的产品或是技术感兴趣,请随时与我们联系。 可以直接留言或登录WIZnet官方网站:http://www.iwiznet.cn 公司微博是: http://weibo.com/wiznet2012 公司博客是:http://blog.iwiznet.cn/
  • 热度 19
    2012-8-21 09:46
    884 次阅读|
    0 个评论
      W5100E01-AVR是为AVR开发者提供的W5100评估板。本文是W5100E01-AVR的用户手册,希望对大家有所帮助。今天我们先介绍本手册的前半部分内容:   概述 W5100E01-AVR是为AVR开发者提供的W5100评估板。 1.1.包装 当你购买W5100E01-AVR BD时,请确保有以下所有的内容。   1.2. 特性 1.2.1.硬件特性 W5100E01-AVR开发板由两种类型的板构成。      -PM-A1 --MCU:ATmega128, 8MHz --RAM:32KB外部SRAM --ROM:128KB闪存(ATmega128内部闪存) --ICE I/F:JTAG, 提供ISP -W5100E01-AVR --电源:直流电源适配器5V, 2A --串口:两个RS-232串口(默认波特率为57600) --LCD:16 X 2字符LCD --PAL:地址译码器 --W5100:全硬件TCP/IP芯片(嵌入PHY) --MagJack:RD1-125BAG1A (UDE) ,  集成变压器(1:1) Link ACT FDX LEDs 1.2.2.固件特性 评估板的固件由两部分组成。 -管理模式 --网络配置:MAC、源IP地址、G/W IP、S/N、DNS IP配置 --信道配置:W5100为每一个信道测试应用程序设置 --Ping测试:Ping请求测试DNS -应用模式 --Loopback TCP服务器:TCP服务器模式测试应用程序 --Loopback TCP客户:TCP客户模式测试应用程序 --Loopback UDP:UDP测试应用程序 --Web服务:Web服务测试应用程序 --DHCP客户:利用DHCP服务器进行动态网络配置   2. 入门指南 2.1.系统配置 2.1.1. 评估板的设计与配置 为测试评估板的功能以及开发应用,评估板配置如下。第一,评估板使用交叉双绞线电缆(数据通信)和串口电缆(监视)连接到电脑;第二,开关和跳线设置如下。   (1)启用SPI:J3 为了通过SPI模式连接W5100和MCU,引脚2和3要短路。为了禁用SPI模式,引脚1和2要短路。   2.2 电脑程序安装 2.2.1. 开发程序安装 想了解更多信息,请参考“AVR工具指南Vx.x.pdf”。 2.2.1.1. 编译工具链 安装和使用WinAVR,请参考相关手册。 当前评估板固件使用3.4.6版本的AVR GCC编译器,随着版本的升级可以改变编译器。 2.2.1.2. ICE编程 JTAG ISP ICE工具支持对评估板的开发和调试,为使用ISP编程,需要应用”AVRStudio”程序。关于“AVR Studio”的安装和使用,请参考“AVR工具指南Vx.x.pdf”,关于‘ISP GENDER’的使用,请参考“ISP GENDER 用户指南Vx.x.pdf”。 2.2.1.3. ROM文件制作程序 ROM文件制作程序使用简单的‘ROM文件系统’,为评估板的使用提供便利条件。原因是ROM文件制作程序应用于评估板,作为‘ROM文件系统’用于访问网站服务器测试应用程序。想了解更多安装介绍和ROM文件制作程序,请参考“ROM文件制作用户手册Vx.x.pdf”。 2.2.2. 评估板测试电脑程序安装 2.2.2.1. Loopback 测试程序(AX1)安装 Loopback 测试程序(以下简称“AX1”)是一个评估W5100性能的程序,在连接评估板和应用程序之间进行文件和数据包的Loopback测试,例如Loopback TCP 服务器/客户与Loopback UDP。想了解AX1的安装和使用,请参考“ AX1 用户手册Vx.x.pdf”。   2.3 快速启动 在确认了评估板的开发包后,测试评估板的顺序如下所示。 (1)确认测试环境,参见2.1节。 使用双绞线电缆直接连接电脑和评估板。 使用串口电缆直接连接电脑和评估板。 使用5V电源适配器连接评估板。 (2)确认测试的电脑网络配置如下所示。 IP地址:192.168.0.3 默认网关:192.168.0.1 子网掩码:255.255.255.0 (3)在测试电脑上安装AX1,参见2.2.2.1节 (4)执行串口终端程序(例如Hyperterminal)后,属性设置如下。   在完成终端设置后,连接评估板并等待。 (5)打开评估板的开关(SW1) 以下各项设置需要供电。 --接通电源时,检查评估板的LED(D2)是否正常亮着。 --检查LED的D3和D4是否轮流闪烁3次 --检查的评估板的液晶显示器(LCD)输出是否如图 2.3所示,终端程序输出是否如图2.4所示。   (6)使用评估板进行Ping测试。   (7)执行“AX1”程序,参见“AX1用户手册Vx.x.pdf ” (8)利用TCP客户测试“AX1”的操作,参见“ AX1用户手册Vx.x.pdf ” (9)利用任意文件或数据包在“AX1”程序和评估板之间进行测试。     这是本文的前半部分内容,后面的内容我们将会在今后的博文一一介绍,希望对大家有所帮助。欢迎大家的留言讨论。     更多有关W5100的博文请看这里: http://blog.iwiznet.cn/?page_id=329 全硬件TCP/IP嵌入式以太网控制器——W5100E01-AVR http://blog.iwiznet.cn/?p=432 开源硬件-开源思潮到了? http://blog.iwiznet.cn/?p=316 WIZnet员工Richard培训笔记: WIZnet核心技术和产品对比 http://blog.iwiznet.cn/?p=29   也可进入我们的官方网站或博客查看更多。 如果您对WIZnet的产品或是技术感兴趣,请随时与我们联系。 可以直接留言或登录WIZnet官方网站:http://www.iwiznet.cn 公司微博是: http://weibo.com/wiznet2012 公司博客是:http://blog.iwiznet.cn/