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/MSP430F6736:SD 卡初始化序列

Guru**** 2578945 points
Other Parts Discussed in Thread: MSP430F6736, MSP430FR5994, MSP-EXP430FR5994, MSP430F5529

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/609146/ccs-msp430f6736-sd-card-initialising-sequence

器件型号:MSP430F6736
主题中讨论的其他器件: MSP-EXP430F5529MSP430FR5994MSP-EXP430FR5994MSP430F5529MSP430WARE

工具/软件:Code Composer Studio

您好!

我一直在从事一个项目、该项目将数据从微控制器写入 SD 卡。 我使用的微控制器是 MSP430f6736。 我在此项目中使用了3个不同的 SD 卡(32GB、8GB、256MB)。 这是为了验证我的命令。 我正在尝试发送 CMD0 (GO_IDLE_STATE)命令、但 响应 为0x07 (大部分)、0x03、0x05。 32GB 和256MB 提供 0x07 (大部分)、0x03响应,而8GB 提供 0x07 (大部分)、0x05。 有时我会得到其他回答、但这些主要是发生的。 将这些响应计算在内  

处于空闲状态

-擦除复位

非法命令

 我应该得到的响应是0x01。 我无法理解"擦除复位"是什么意思? 我发送以下命令作为命令0x40、0x00、0x00、0x00、0x00、 0x95作为 CMD0命令。 我使用32kHz 时钟作为 SCLK。 我也很困惑我是如何获得非法命令的。  

代码设置如下(如果需要、我可以将代码发送到您的电子邮件地址);  

*初始化 SPI 和 GPIO 引脚及其起始变量值。

*将 CS 和 MOSI 设置为高电平

*检查插卡检测针脚是否插入插卡->如果未插入则继续->循环直至插入。

*发送74个虚拟值(0xff)  

*将 CS 设置为低电平(然后延迟5个周期)  

*发送 CMD0命令  

*将 CS 设置为高电平并返回 RxBUF

我已经阅读了一些文章、其中说我们需要发送虚拟值(SCLK)并倾听、直到您获得正确的值。 当我这么做时、我不会一直得到除0xFF 以外的任何东西。 但是、当我重复上述序列时、我会得到值0x07、0x03、0x05 Time to Time、并且 RxBUF 会更改它的值。  

这里可能会出现什么误差? 什么是擦除复位、为什么会出现非法命令错误? 我的 SCLK 为38kHz。 这是问题吗?

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

    通常、SD 卡的访问速率高于38kHz。 我将查看您的 SD 卡的数据表、了解它支持 SPI 访问的最低频率。 此外、根据 SD 卡的大小、初始化 SD 卡可能需要很长时间。 话虽如此、我知道我们有两个将 SD 卡用于 MSP430的示例。 请参阅 MSP-EXP430FR5994 (MSP430FR5994 LaunchPad)的开箱即用体验和 MSP-EXP430F5529 (MSP430F5529实验板)的用户体验项目。 MSP-EXP430F5529示例将更接近您所使用的器件。 这两个项目都可以在 TI Resource Explorer -> Software -> MSP430Ware -> Development Tools 中找到。 TI Resource Explorer 位于 CCS 中或 dev.ti.com。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    除空闲状态位外、我通常忽略响应中的所有位。 我还重复 CMD0、直到该位被置位或在多次尝试后失败。

    SPI 时钟频率的下限为直流。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 David:

    移植上面的 MSP430F5529 SD 卡示例将是您的最佳选择。 话虽如此、您可能需要提高 SPI 时钟速度、并以该速率传输 SD 卡的数据输入/输出、这将需要一段时间。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jace:

    我在这一周内正在处理代码、最终能够修复代码。 问题在于时钟极性、我必须设置在原始代码中未设置的 UCCKPL。 除此之外、代码没有重大变化。

    感谢 David 和 Jace 的支持。  

    谢谢、

    乌德什