全志D1开发(五)SD驱动之SD协议简介

gewenbin
gewenbin
gewenbin
188
文章
15
评论
2022年5月3日11:05:47 评论 703

1. 总线拓扑

SD卡定义了两种总线来进行通信,SD总线和SPI总线,一般SD总线用的较多,本次我们以SD总线为例进行讲解驱动的编写,SD在设计上可以挂接多个SD设备,如下所示。

全志D1开发(五)SD驱动之SD协议简介

虽然设计上同一条SD总线上可以挂接多个设备,但是在实际应用种,为了传输速度以及其他因素的考虑,一条总线一般只会接一个SD设备。SD总线一般有6条信号线组成:

  • CLK:时钟信号,HOST控制器提供,一般分为3种时钟频率,400kHz用于初始化阶段,25MHz用于正常速度传输,50MHz用于高速数据传输。
  • D0~3:数据信号,初始化阶段只通过D0来传输数据,别的阶段可以设置使用D0~D3来传输数据。
  • CMD:命令信号,SD协议中HOST控制器可以发送命令给设备,设备可以发送回应给HOST控制器,这些命令和回应就是通过CMD线来传递的。

2. 总线协议

SD总线的通信有三个基本要素:

  • 命令(Command):命令由主控制器发送到设备,命令在CMD线上进行传输。
  • 响应(Response):响应由设备发给主控制器,用于对命令的回答,同样是在CMD线上进行传输。
  • 数据(Data):数据可以由主控制器发给设备,也可以由设备发给主控制器,通过DATA线传输。

由控制器发送的命令有需要响应的,也有不需要响应的,如下所示:

全志D1开发(五)SD驱动之SD协议简介

有些命令还需要携带数据,如下所示:

全志D1开发(五)SD驱动之SD协议简介

本次教程不会对SD卡通信具体的流程做深入的讲解,比如初始化的时候需要发送那些命令,传输数据的时候又需要发送那些命令,这些网上都有非常多详细的讲解了,大家可以在调试的时候遇到具体问题时查阅相关资料了解。

本教程更多的聚焦于如何快速的搭建一个SD卡驱动,通过一个简单的SD卡驱动来学习SylixOS SD协议栈是如何和一个具体的控制器产生联系的,从而快速的了解编写SylixOS SD驱动需要使用哪些基础的内核数据结构和对应的接口。

gewenbin
  • 本文由 发表于 2022年5月3日11:05:47
  • 转载请务必保留本文链接:http://www.databusworld.cn/10677.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: