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.

[参考译文] TMS570LC4357:TMDX570LC43HDK 中的 SD 卡驱动程序和定制板。

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1033728/tms570lc4357-sd-card-driver-in-tmdx570lc43hdk-and-with-custom-board

器件型号:TMS570LC4357
主题中讨论的其他器件:HALCOGENTMS570LS3137

大家好、

在定制板中配置 SPICS1而不是 SPICS0时、我需要帮助、是否要使用 PC3寄存器?

选择和取消选择的函数是、对于 CS[0]、芯片选择为 PC3 = 0x01  

在本例中,我是否需要对  CS[1]- SD_mibspiREG->PC3使用 PC3 = 0x02  

我不使用该 SPI 使能引脚"SPI2ENA"。

请确认。  

提前感谢。  

桑托什

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

    大家好、

    我正在 处理 SD 卡的"TMS570LC43x_HDK_SDCard_mibspiDMA"项目。  

    在 HalCoGen 中、需要为 MIBSPI2和 DMA BTC 配置什么设置。

    在此配置中使用了哪些 MIBSPI2传输组、在我的情况下、我需要将 CS_0更改为 CS_1芯片选择。  

    在以下配置中、第一个3传输组使用 CS_0芯片选择0。

    代码中使用的是哪个传输组全部3更改为 CS_0?

    如果我需要将 VCLK1从75MHz 更改为80MHz、自动预分频将发生变化。 在本例中,我们是否需要修改 API set_max_speed? FMT0和 FMT1 2<<8?

    请确认在代码数据格式0、1或2中使用的数据格式都在配置中更改。

    我是否需要修改代码的任何部分以删除 SPIENA SPI 使能引脚的实现、因为我使用了 SPICS_1、所以无法使用 SPIENA、它在 MCU 的同一引脚中?

    提前感谢。  

    桑托什

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="478029" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1033728/tms570lc4357-sd-card-driver-in-tmdx570lc43hdk-and-with-custom-board ]]在我的案例中,我是否需要为  CS[1]使用 PC3 = 0x02 -- SD_mibspiREG->PC3 

    在 SD 示例代码中、我们使用 SPI_NCS[x]引脚作为 GIO。  

    1.将 SPI_NCS[1]配置为 GIO 引脚:PC0 &= 0xFD;(b11111101)-->位1清零

    2.将 SPI_NCS[1]配置为输出:PC1 |= 0x02; //输出

    3.置位或清零 PC3寄存器的位1以使片选信号生效或失效

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

    您好、QJ Wang、

    对于 SPI_CS[1]的 SDCARD、此设置是否正确  

    1.将 SPI_NCS[1]配置为 GIO 引脚:PC0 &= 0xFD;(b11111101)-->位1清零

    2.将 SPI_NCS[1]配置为输出:PC1 |= 0x02; //输出

    DIR 被选中表示输出。

    3.置位或清零 PC3寄存器的位1以使片选信号生效或失效

    在此 SDCard spiDMA 示例中、它使用外部(IS42S16400F-7BL) SDRAM 来实现 DMA、而 SPI SDCard 连接板的定制板中不存在该 SDRAM。

    我注意到 EMIF 驱动程序已配置为用于外部 SDRAM。   

    我只需要一个代码即可将内部 DMA 用于 SDCard 的 SPI 连接。  

    您是否有任何其他示例使用具有 DMA 或不具有 DMA 的 SPI 来实现 SDCard。

    提前感谢。  

    桑托什

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

    您好、Santosh、

    您不需要使用 EMIF 存储器。 根据一个客户的请求、我修改了代码以使用 EMIF 存储器而不是 MCY 内部 SRAM。 我将把它改回使用 MCU 内部 SRAM。

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

    您好、Santosh、

    您可以通过更改链接器 cmd 文件中的指令来使用 SRAM、而不是 SDRAM:

    变化

      SD_RDATA_SECTION:{}> SDRAM

    更改为

      SD_RDATA_SECTION:{}> RAM

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

    如果您不想使用 DMA、请在  sdc-HDK-Hercules .c 中取消定义 MIBSPI_DMA_MODE:

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

    您好、QJ Wang、

    如何仅在 源文件夹中的 hL_sys_link.cmd 文件中将外部 SDRAM 更改为内部 SRAM。  

    我是否还需要在代码中的任何位置更改它?

    取消定义 MIBSPI_DMA_MODE 以删除 DMA

    在我的定制板中、我们未使用连接的 MIBSPI2 ENA 和 MIBSPI2 SCS[0]。 相反、我们使用  MIBSPI2 SCS[1]仅用于芯片选择。   

    我是否需要更改配置器中的任何内容  

    引脚复用:  

    输入引脚复用:

    我是否需要将前3个传输组0、1和2从 CS_0芯片选择更改为 CS_1

    行号2325 (按 ff.c)

    FRESULT f_open (
    fil *fp、/*指向空白文件对象*/的指针
    const TCAR *path、/*指向文件名的指针*/
    字节模式/*访问模式和文件打开模式标志*/
    )

    RES = chk_mounted (&path、&dj.fs、(byte)(mode &~fa_read));行号2325、位于 ff.c 中

    姓名:Res
    默认值:FR_NOT 准备就绪

    使用 SPI2和 CS_1端口而不是 CS_0检查上述 HalCoGen 和针对 SD 卡所做的代码更改并启用。

    SCI 输出:

    仍然是  

    请检查我所做的配置和编码更改、并告知我反馈。  

    提前感谢。

    桑托什

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

    您好、QJ Wang、

    您是否有使用常规 SPI 而不是 MIBSPI 的 SDCard 代码,在此我可以将 SPICS0更改为 SPICS1,而不使用 SPIENA 引脚。  

    谢谢  

    桑托什

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

    您好、Santhosh、

    附件是使用不带 DMA 的 SPI2的示例。 此示例用于 TMS570LC43x HDK。

    TMS570LC43x_SDCard_Demo.zip:

    e2e.ti.com/.../TMS570LC43x_5F00_SDCard_5F00_Demo.zip

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

    您好、QJ Wang、

    我已经在 HDK 板中使用 SPI 尝试过您的代码、但我收到了一个错误代码、即用于 ls 和 cat 命令的 FR_NOT _READY。  

    在此代码中,我们是否需要 SPI ENA - SPI 使能引脚?

    请告诉我此代码中会出现什么问题。 我没有更改任何代码。  

    提前感谢。

    桑托什

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

    您好、QJ Wang、

    TMS570LC43x_SDCard_Demo.zip:

    此构建在 TMS570LC43x HDK 电路板本身中存在问题、无法正常工作。  

    您能不能检查一下。 因为"TMS570LC43x_HDK_SDCard_mibspiDMA"构建在同一电路板中工作正常。

    在我的定制板中、它与 SPI2_CS1相连、SPI2 ENA 与 SD 卡未相连。 SPI2。  

    让我知道在这种情况下、我的问题是什么。

    提前感谢。

    桑托什

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

    您好、QJ Wang、

     TMS570LC43x_SDCard_Demo.zip:演示代码中的配置。

    SPI2数据格式是否可以为1000kHz?

    SPI2端口。

    PINMUX

    请检查配置。

    提前感谢

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

    未使用 SPIENA。 演示代码使用 SPI2和 SPI2_CS0。

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

    您好、QJ Wang、

    1.在 SD 卡中写入时、我遇到溢出问题、有时需要50ms 至200ms。

    通常情况下、写入缓冲区需要7ms 至10ms。 但在3秒周期内、写入 SD 卡的时间为50ms  

    有时、它的运行时间为174.6ms、总时间为200ms。

    关闭命令中的 SD 卡磁盘写入代码有什么问题。

    磁盘写入功能位于关闭功能内。  

    提前感谢。  

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

    您好、QJ Wang、

    上面的波形来自使用项目"TMS570LC43x_SDCard_Demo"和正常 SPI2的定制板。

    因此、我也尝试 使用 TMS570LC43x_HDK_SDCard_mibspiDMA - MIBSPI2处理 MIBSPI  

    在 HDK 中、它工作正常、但在我们的定制板中、我需要为 CS_1而不是 CS_0配置代码。

    我来到了"TMS570LS3137:读取 SD 卡"论坛

    SD 卡示例使用 MibSPI2、下面是 MibSPI 传输组的配置:

    TG0用于传输命令、而 TG1用于从文件传输数据。

    我看到了您的评论、在 SD 卡的 disk_write 和 disk_read 函数中从未看到过 TG1。  

    在 HDK 中、如果 (SEND_cmd (CMD0、0)=1) 为 true、则在 DISK_INVIND 函数内、 SEND_cmd 函数的返回值为1。  

    但是、如果(send_cmd (CMD0、0)= 1) 为 false、则从 send_cmd 函数返回的值为0xFF。 我找不到问题。  

    请帮助我解决此问题。  

    提前感谢。

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

    在我的示例中、缓存被禁用。 此外、还应在 Transfer Groups Config GUI 中使用 CS1。