This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TDA3LA:SDIO 接口的缓冲区管理问题

Guru**** 656470 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/851113/ccs-tda3la-buffer-management-problem-with-sdio-interface

器件型号:TDA3LA
主题中讨论的其他器件:TDA2

工具/软件:Code Composer Studio

你(们)好

SDIO 交换数据时出现问题。  

当我从 SD 卡读取数据时、数据会正常运行。 在读取事务之前、我正在等待 MMC_STAT 的 BRR 标志、当它设置为1时、我进行读取、
但是、当我尝试将一些数据写入 SD 卡块时、会出现问题。 当我等待 BWR 时、它不会设置为1。 它始终等于0。

出什么问题了?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    问题之外。

    PSTATE 寄存器 WTA (写传输有效)和 Bwe (缓冲器写使能)中所需的位处于高电平状态。 它们表示缓冲器已准备好传输

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ivan、

    如果我理解正确、您正在测试 SD 存储卡? 如果是这种情况、请注意、在 TDA3x 中、MMC 模块的功能仅限于 SDIO 卡/接口。 不支持 SD/MMC 存储卡。

    此致、

    STAN

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Stan

    你确定吗?

    因为现在我在数据表中看到、TDA3x 支持 MMC/SD/SDIO

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    伊万

    我很确定。 TDA3中的 MMC 模块 从一开始就仅限于 SDIO。 实际上、这是在 TDA2和 DRA75x 等早期 SoC 中称为 SDIO 接口的 MMC4模块。

    MMC1用于 eMMC、而 MMC2专用于 MMC/SD 卡、并不完全受支持。

    您是对的 -数据表显示 SD、MMC 卡将在内部与团队一起检查。 这很可能是文档错误。

    实际上、SDIO 卡使用与 SD 卡相同的协议(如果我错了、请更正我)、因此 SD 卡可能可以正常工作。 需要解决的问题之一是处理 TDA3上缺失的写保护和卡检测引脚(例如通过 GPIO)。 目前、在您的情况下 、软件驱动程序可能会"认为" SD 卡具有写保护功能。

    但是、请注意、由于 TDA3上的 SD 卡未经过测试和验证、TI 将无法进一步为您提供帮助。

    此致、

    STAN

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Stan、

    还可以)但是…… 几天前、我管理了它。 我简化了块写入操作(而不是写保护)。 那么、您如何将其扩展呢?

    根据这些事实、这是非常奇怪的。

    嗯、我将尝试执行写保护操作

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    伊万

    这只是我的支持。 这是因为您正在等待写入操作完成,但这种情况从未发生(您的初始帖子)。 我不能说到底是什么问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Stan

    我将尝试描述我 偶尔如何将数据写入 SD 卡(在我询问此主题上的此问题之前)

    编写过程包括一些步骤(一般情况下):
    (1)准备 MMC_IE 寄存器中的 BWR 位
    ->(2)使用 CMD 线路发送命令
    ->(3)等待 MMC_STAT 寄存器中的 Bwe
    ->(4)发送数据。

    因此、此函数未起作用、但... 当我在步骤(1)和(2)之间设置断点时、它已经起作用。  
    执行此操作后、我在没有断点的情况下重复执行此函数、但它仍然有效。  

    然后、当我重新启动 TDA3器件时、我需要使用断点重复该操作。  

    然后、我决定执行读取功能。 我对其进行了测试、然后我的写入函数开始不正确工作(现在它不工作)

    断点操作如何影响写入函数?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我刚刚尝试执行写保护操作

    因此、正如我在 SD 规格第1部分中看到的、SDHC 和 SDXC 卡都不支持写保护操作。

    为了对这些词进行查询、我刚刚选中了 Write Prot。 操作和 SD 卡不响应这些命令

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    >断点操作如何影响写入函数?

    这通常是因为硬件(SDIO 控制器)需要一段时间来完成特定的功能、但软件过早开始下 一个功能(例如、SW 不轮询寄存器位以进行切换)。 如果您在代码中插入断点、则软件将暂停、在您决定单击以继续执行之前、给硬件留下一个很长的时间范围来完成其任务。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Stan、

    我仍然不明白什么。

    您说过: 不支持 SD/MMC 存储卡。

    但有时写入操作在中断后成功结束、但软件会轮询状态寄存器中所有需要的标志

    错误在哪里...

    除此之外、SDHC 和 SDXC 卡不支持写保护操作

    嗯、我已经搜索了 PDK 驱动程序和 CSL 的一些示例、所以... 大多数情况下、我的软件由这些库和模式中的函数组成。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Stan

    我使用的是评估板(我忘记注意到、它可能很有名)

    但是
    我发现了这个错误!

    如图所示、我需要轮询 MMC_STAT 寄存器中的 BWR 位以将数据写入缓冲器。 但是、在 MMC_IE 寄存器中准备 BWR 位并发送 CMD 后、该位始终为零。

    根据参考手册、在我发送 CMD 后、在 MMC_PSTATE 中 WTA 位和 Bwe 位都变为1

    但 MMC_STAT 中的 BWR 位仍然为0。
    当我从 PDK 驱动程序中学习示例时、我看到软件也轮询 BWR 位 MMC_STAT。

    因此、我决定轮询 MMC_PSTATE 中的 Bwe 位(而不是 MMC_STAT 中的 BWR 位)、它开始工作。 它真的很有效!

    参考手册或/和 PDK 中是否有错误?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ivan、

    很高兴听到您使写操作正常!

    由于控制器被配置为 DMA 模式、因此您看到 BWR 始终为0的原因可能是原因。 请参阅 TRM 中的以下注意事项:

    缓冲区写入准备就绪

    注:如果 DMA 发送模式被启用、该位为
    从不置位、而是 DMA 向主器件发送请求
    生成系统的 DMA 控制器。

    通常、此类外设在 DMA 模式下使用、因此在初始化期间、MMC 驱动程序已将 SDIO 模块配置为 DMA。

    此致、

    STAN

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Stan、

    我刚刚检查了 SDIO 控制器的配置。 因此、SDIO 控制器不处于 DMA 模式。

    可能我会错过一些东西、但我没有在 SDIO 控制器中配置 DMA 模式、SDIO 控制器寄存器中与 DMA 模式相关的所有位都为零。

    您是否遇到过这样的问题? 我问您、因为我以前没有找到它。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ivan、

    这很可能是流程图中的文档错误。 也许由于很少使用轮询方法,没有人注意到。 我将与 TRM 团队合作、了解如何解决此问题。

    谢谢、

    STAN