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.

[参考译文] MSP430F5252:SDSPI 只能与几个 μ µSD 卡配合使用。

Guru**** 2502205 points
Other Parts Discussed in Thread: MSP430F5252

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/924451/msp430f5252-sdspi-works-with-only-a-few-sd-cards

器件型号:MSP430F5252

您好!

我目前正在尝试弄清楚我的 SD 接口有什么问题,我无法理解是什么问题:

我使用 micro SD 插槽和 SDSPI 驱动程序(与 TI RTOS tirtos_msp43x_2_20_00_06配合使用)。

我成功读取了 n ü µSD 上的文件、因此这是可以的。

事情是、有些 SD 卡可以工作、有些则不工作。 即使我购买了两款相同的产品、一款工作、另一款则不工作。 我尝试降低比特率、但它也不起作用...

当驱动程序将 CMD0发送到 SD 卡(//*发送 CMD0以将 SD 卡置于"空闲"状态*/)时,它似乎会失败,在某些 SD 卡上,它会通过,而在其他 SD 卡上,它不会"停止"

这里的问题是什么?

我真的需要找到一种使用 SDSPI 的稳定方法、因为在测试的7个卡中、只有2个有效、下面是列表

Kingston 8GB SDHC Class 4:好的

集成4GB SDHC Class 10:好的

积分4GB SDHC Class 10:不可用

集成8GB SDHC Class 10:NOK x 2.

(品牌) 32Gb SDHC Class10 : NOK x 2.

非常感谢您的帮助、谢谢!

Clement

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

    如果早期发生故障、则可能是您的硬件出现问题。 例如缺少上拉电阻器。

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

    尊敬的 David:

    您谈论的是哪些上拉电阻器? 哪些信号需要上拉电阻器?

    Clement

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

    绝对最小值是中的串行数据。 (MISO)。 CS、时钟和 MOSI 连接到应始终驱动的 MSP430输出。

    对 CMD0的响应应清除 MSB (将其视为起始位)并将 lsb 设置为指示空闲状态。 其他位可能会有所不同。

    在初始化阶段、SD 卡可以使用开漏驱动器、也可以不使用开漏驱动器(时钟速度限制的原因)。

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

    我单击"已错误解决..."

    我使用内部上拉电阻器(P4REN |= BIT2、P4OUT |= BIT2)设置 MISO、但它看起来没有变化、仍然不起作用。

    内部上拉电阻是否足够? 我是否需要外部电源?

    Clement

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

    SD 卡应向 CMD0发送 R1响应。 你得到什么?

    选择 SPI 等特殊功能可能会禁用内部上拉电阻器。 您必须查阅数据表以查看其内容。

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

    您好!

    我尝试在 MISO 引脚上放置一个外部上拉电阻器、但没有任何变化。

    实际上、我没有从 SD 卡获得任何依赖 CMD0的响应、我在 SDSPI 驱动程序中得到超时、就好像 SD 根本没有获得 CMD0一样。

    对于一些 SD 卡、SDSPIUSCIBIC.c 文件中的 WAIT_READY 返回0xFF、但在其他卡上、它返回0x00、MISO 引脚上有上拉电阻或没有上拉电阻。

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

    您好 Clement、

    您的问题是否已解决? 您是否仍然需要我们的支持

    此致

    Johnson

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

    看起来该代码恰好发送一次 CMD0。 我始终编写 SD 代码以多次重试该命令。 它只能使用一张卡、但某些卡比其他卡更符合规格。

    如果由于上拉电阻器而根本没有连接卡、0xFF 就是您应该得到的结果。 如果您得到的值为零、则表示卡正在响应、但尚未达到空闲状态。 CMD0是进入空闲状态的命令、因此可以按顺序重试。

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

    实际上、事情是即使在发送 CMD0之前它也会失败。 函数 WAIT_READY (hwAttrs)返回0。

    因此它在 txSPI (hwAttrs、cmd)行之前失败...

    哪些因素会阻止卡进入就绪状态? 在这种状态下需要做什么?

    感谢你们的帮助!

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

    您好、Johnson、

    我的问题还没有解决、我误按了"解决"按钮、找不到方法取消它...

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

    我从未这样等待过。 我必须挖掘规格并搜索一个位、但看起来 SD 卡将 DAT0保持低电平的唯一时间是在将数据写入存储器时。 但在这段时间内、它仍会接受命令、因此在发送每个命令之前包括该测试是错误的。

    我不知道为什么 SD 卡会在这种情况下启动。

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

    您好、再说一次、

    等待在德州仪器提供的 SDSPI 驱动程序中完成。 请参阅下面有关 DAT0为低电平的信息。

    所以我检查了信号、看看在这个级别上是否有任何问题、泰希似乎是可以的、有点过冲、但没有什么太糟糕的。 SD 卡的电平为(大约) 3.3V、但我在 MSP430F5252上使用的接口为1.8V、因此我需要改变电平才能使其正常工作。

    可能是这种电平变化导致的、您会发现随附的产品这一部分的原理图

    我在 μ µSD MISO/6.6C 引脚(μ µSD 的 DAT0)上监控了信号、在某些 SD 上、当我将 SD 卡拉入和拉出时、我看到信号从0变为1、但有时它不会切换并保持在0…… 这是否意味着 SD 将 DAT0拉至低电平、或者 SD 不会发出任何噪声、也不会开启或发生其他情况?

    谢谢!

    Clement

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

    DAT0开始开漏。 这意味着电平转换器的 SD 卡侧必须有一个上拉电阻器。

    即使在 TI 库中、在执行每个命令之前检查忙也是一个错误。

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

    好的、就是这样。 我在电平位移器的另一侧上拉、它适用于我的所有 SD。

    非常感谢 David 的帮助!

    出于好奇,如果您想知道其中一些在没有上拉电阻器的情况下工作的原因?

    Clement

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

    为了更好地理解、请参阅:  

    30C3:SD 存储卡的探索和开发

    本讲座演示了一种反向工程方法、以及将代码加载到 SD 存储卡内的微控制器中的方法。

    https://www.youtube.com/watch?v=ruEn7TE4YMM