查看: 1323|回复: 1

[分享] LPC55S6x家族技术亮点剖析——SD卡接口支持双设备

[复制链接]
  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3299

    主题

    6546

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32024
    最后登录
    2024-4-25
    发表于 2020-3-12 09:46:46 | 显示全部楼层 |阅读模式
    LPC55S6x家族技术亮点剖析——SD卡接口支持双设备

    SD卡接口,大家一定不陌生,在我们日常电子便携设备中,广泛使用SD存储卡,由此接口衍生出的SDIO接口应用亦常见,比如几乎无处不在的WIFI模块(当然,其常用接口还有SPI)。


    恩智浦推出的多个LPC系列都能支持包含SDIO的SD卡接口,而其中新近推出的LPC55S6x及其同族胞弟LPC55S2x和LPC552x(以下仅以LPC55S6x为代表来阐述),升级了对此接口的支持。


    其中,有一个不起眼的亮点,不知大家注意到否,就是支持双设备。这意味着可以接入,比如,双SD卡,或者一个SD卡+一个WIFI模块,等等。


    这里就通过一篇小文章来揭示它,为有意走上双设备应用道路的读者提供灯塔指引。


    在LPC55S6x用户手册里SDMMC卡接口章节中,开篇即简明扼要的指出,此接口支持通过同一SD卡接口接入双设备(SD0和SD1)。


    有读者或许此时疑惑了,同一SDMMC外设接口如何“分身”访问双设备呢?且看下面一一分解……


    同一SD卡接口


    我们先从SD卡接口的系统框架来总体认识一下这同一SD卡接口,与其他系列一样,LPC55S6x的SD模块包含两大块:


    总线接口单元,简称BIU,主要负责内部事务,通过内部AHB总线与CPU通信,配置SD模块寄存器,交换数据,等等。


    卡接口单元,简称CIU,主要负责外部事宜,处理卡协议和外部设备通信。


    以下就是LPC55S6x用户手册给出的SD模块内部框图:
    1.png
    这就是所谓的同一SD模块,丝毫看不出对双设备的支持。所谓支持双设备,又从何说起呢?继续细看下去……


    双设备接入


    我们知道,处理一件相对复杂棘手的事,最好的办法就是从简单入手。既然支持双设备,自然从物理上能接入双设备,那就从此最简单直接的外部引脚来看。直接呈上SDMMC模块引脚描述图表:
    2.png
    显然,是有两套对应引脚以SD0和SD1区分着。SD卡接口的标准常用引脚(时钟、卡检测、卡命令,卡数据)都有两套 —— 关于双设备支持,终于初显端倪了。
    两个设备至少从物理上可以同时接入了。
    然而,我们知道,这不足以支持完整的双设备的访问。必然且只能深入模块内部了……


    双设备支持的内部细节


    细节是魔鬼!细看果然是有部分寄存器是分别对应于SD0和SD1两个设备的,它们是:


    用于电源使能的寄存器(PWREN)


    用于时钟使能的寄存器(CLKENA)


    用于卡插入检测的寄存器(CDETECT)


    用于切换卡类型:支持1-bit, 4-bit 还是 8-bit模式(CTYPE)


    还有一个相当关键的涉及到双设备读写访问的寄存器位域,即CMD寄存器的位20-16。当发送命令时,这个位域必须配置为0或者1来指明是访问设备SD0还是SD1。


    —— 哦,相信看到这里,读者应是恍然大悟,双设备访问的真相大白了。兴奋之余,还是要呈上此位域的样子,以让自己的眼睛确信。况且,也是身处科技发展到了有图有真相的年代:
    3.png
    此时此刻,我想说,这是双设备访问支持的命门机关,应该不为过吧。
    至此,LPC55S6x SD卡接口对双设备的支持即剖析完成,so森破(simple)!OK,灯塔建好了,前途一片光明,,,“有参考代码吗?” 比较“贼”的读者往往此时会这样追问。是的,没有参考代码实例,犹如虽有灯塔指引,却没有一条修好的道路,令人遗憾。虽然,SDK软件包并未提供这样的实例,我们另外提供了一则应用笔记,附上一个双SD卡访问实例参考代码。只能帮到这了,,,稍等,下面还有一个温馨提醒。




    双设备支持的局限性


    细心的读者或许意识到了这个双设备机制是有局限性的。局限性正是来自对双设备的访问是共享同一SD卡接口,只是小部分控制独立分开——如本文以上所剖析。


    不难理解,对双设备的通信是不能同时并行的,须在完成一个设备的一次完整通信后,才能开始另一个设备的通信。否则,将可能导致数据错乱,甚至逻辑混乱。
    这正是,同一SD卡接口,面对两个设备,苦于分身乏术,只能轮流处理。各位读者心里需有此数,方可在应用上尽量避免掉“坑”。



    作者:宁能     文章出处:恩智浦MCU加油站

    签到签到
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-10 22:38
  • 签到天数: 1335 天

    [LV.10]以坛为家III

    88

    主题

    4292

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    9049
    最后登录
    2024-4-13
    发表于 2020-3-12 10:28:44 | 显示全部楼层
    SDIO接口还是非常适合高速转存至SD卡。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-25 23:18 , Processed in 0.107584 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表