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.

[参考译文] MSP430F5329连接到4Gb SDHC 卡

Guru**** 2500875 points
Other Parts Discussed in Thread: MSP430F5329

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

https://e2e.ti.com/support/clock-timing-group/clock-and-timing/f/clock-timing-forum/709669/msp430f5329-is-interfaced-to-4gb-sdhc-card

主题中讨论的其他器件:MSP430F5329MSP-EXP430F5529

大家好、

连接到 msp430F5329 MCU 的 SDHC 4GB (4类)卡。

我的 SPI 速度低于400Khz。

发送 CMD0后从 SD 卡获取响应0x01。

2. 在发送 CMD8后从 SD 卡获取响应0x05、这意味着我的 SD 卡是版本1、而不是版本2。

3.发送 ACMD41 (0x55+0x69)后从 SD 卡获取响应0x01。(如果我使用16MHz SPI 时钟频率进行测试、则获取响应0x00)。

CLEAR_CS_SDCARD;

sd_sendcmd (GO_IDLE_STATE、0、0x95);//软件复位和理想 cmd
//现在等待就绪响应
if (mmcGetResponse (go_idle_State)!= 0x01)
返回 MMC_INIT_ERROR;
CLEAR_CS_SDCARD;
spiB1Tx (DUMYBYTE);
if (RESPONSE=0x01)


CLEAR_CS_SDCARD;
spiB1Tx (DUMYBYTE);
sd_sendcmd (send_if_cond、0x1AA、0x87);//使用旧 SD 卡
//如果新 SD 卡要使用 CMD8、arg:0x1AA、CRC:0x87
Response=mmcGetResponse (send_if_cond);

执行{
// CLEAR_CS_SDCARD;
spiB1Tx (DUMYBYTE);
sd_sendcmd (app_CMD、0x0、0x65);//使用旧 SD 卡
//如果新 SD 卡要使用 CMD8、arg:0x1AA、CRC:0x87
Response=mmcGetResponse (APP_CMD);

// SET_CS_SDCARD;
spiB1Tx (DUMYBYTE);
spiB1Tx (DUMYBYTE);
// CLEAR_CS_SDCARD;
sd_sendcmd (app_send_op_cond、0x40000000、0xFF);// ACMD41 SCH=1
RESPONSE=mmcGetResponse (0x69);
// SET_CS_SDCARD;
watchdogReset();
} while (RESPONSE!=0x00);

如果 SPI 时钟为16MHz,则获取响应0x00,而 CMD1也获取响应,但不获取 CMD16的响应。 请帮助我解决问题。

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

    我相信您的问题与您驱动 SPI 时钟的速度有关。 有关更多信息、请参阅以下应用手册。 具体而言、请参阅第4.2节计算最大 SPI 通信速度。 (http://www.ti.com/lit/slaa734)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jace H:

    感谢您快速重播。

    根据 MSP430F539 SPI 时序均衡为  fUCxCLK = 1/2tLO/HI、其中 tLO/HI≥max (tVALID、MO (USCI)+ Tsu、SI (从器件)、Tsu、MI (USCI)+ tVALID、SO (从器件))。

     

    根据数据表、fucxclk = MAX (20+5ns)、(55+76ns)。

                           MAX (25、131、1nsec)、 1/2 (131、nsec)=3.8Mhz 是我的 SPI 数据传输速度  

    我的 SPI 初始化是  

    空 initspiB1 (空)

    P4SEL |= BIT1+BIT2+BIT3;// P3.3、4选项选择
    UCB1CTL1 |= UCSWRST;//**将状态机置于复位状态**
    UCB1CTL0 |= UCMST+UCSYNC+UCCKPH+UCMSB;// 3引脚、8位 SPI 主器件
    UCB1CTL1 |= UCSSEL_2;// SMCLK
    UCB1BR0 = 40;//  
    UCB1BR1 =0;//
    UCB1CTL1 &=~UCSWRST;//**初始化 USCI 状态机**

    我的 SPI 时钟运行频率为400kHz。 添加了我的 SPI 时钟速度图像。

    我的疑问是、我希望在初始化中提供数据传输速度。

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

    我对您在这里的初始问题感到困惑。 从最初的帖子中、似乎您以两种不同的速度运行 SPICLK。 工作正常的~400kHz 导通速度、而一个频率为16MHz 的速度不是。 不是这样吗?

    如果情况并非如此、我建议您浏览我所提到的应用手册的其他 SPI 部分、以帮助缩小问题范围。 此外、看看上面的捕获、如果顶部是您的时钟、则会非常嘈杂。 如果是这种情况、那么我将研究您是否也有可能在您的电路板上遇到串扰。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Mahdhu、

    上面提到的应用手册是否有助于解决您的问题? 如果很快没有回复、我将假定您已解决问题并关闭此主题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Jace H:

    很抱歉、延迟重播、
    我的问题已经解决、但问题不是 SPI 时钟、使用 MSP-EXP430F5529_UE_Demo_Software 后、我的问题就得到了解决。