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.

[参考译文] TMS320F28388D:C2000 移植

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1018123/tms320f28388d-c2000-transplant

器件型号:TMS320F28388D
主题中讨论的其他器件:C2000WARETMDSCNCD28388D

正在执行的操作:
将28377D SPI SD 例程端口连接到28388D 以供使用。

遇到以下四种类型的错误:
如何解决这些问题?

谢谢!

Vince

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

    Vince、

    您能否提供有关错误的更多详细信息?   您正在尝试从28377D 迁移到28388D 的测试是什么?  您是如何迁移项目的?  28377D 项目和28388D 上使用了哪些 C2000Ware 版本?  项目是否来自 C2000Ware 示例?   

    Joseph

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

    非常感谢您的回复。

    详情如下:

    [引用 userid="70806" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1018123/tms320f28388d-c2000-transplant/3762709 #3762709"]您能否提供有关错误的更多详细信息?[/quot]

    e2e.ti.com/.../Detailed-error-message.txt

    [引用 userid="70806" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1018123/tms320f28388d-c2000-transplant/3762709的测试是什么?3762709"]您尝试从28377D 迁移到28388D [/quot]

    测试是 SD 卡的读取和写入驱动程序例程。
    该例程如下:

    e2e.ti.com/.../YANXU_5F00_SD_5F00_SPI.rar

    [引用 userid="70806" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1018123/tms320f28388d-c2000-transplant/3762709 #3762709"]你是如何迁移项目的?[/quot]

    我将项目下的 ff.c 文件复制到了新项目中。
    然后、将项目的主函数部分复制到新项目中的主函数。
    然后、复制项目下 main.c 的头文件。
    将头文件28377S 更改为#include "F28x_Project.h"。

    [引用 userid="70806" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1018123/tms320f28388d-c2000-transplant/3762709 #3762709"]28377D 项目和28388D 使用了哪些 C2000Ware 版本?[/quot]

    28377D 例程是指两个源。
    第一个是 C2000 ware
    路径为:C:\ti\c2000\C2000Ware_3_04_00_00\device_support\f2837xd\examples\cpu1\sd_card
    第二个是从 Internet 下载的开发的 SD 读写例程。该例程如下:

    e2e.ti.com/.../lab46_5F00_SD_5F00_SPI.rar
    28388D 示例是指 C2000 ware。
    例程源:
    C:\ti\c2000Ware_3_04_00_00\driverlib\f2838x\examples\C28x\SPI

    根据28388D 例程、添加了28377D SD 卡例程。
    添加的例程如下所示:

    e2e.ti.com/.../RHB_5F00_SD_5F00_PRO.rar

    期待您的回复。
    谢谢!

    Vince

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

    稍后、我重新移植了一个例程(将28377D SD 程序复制到 SPI_ex6_EEPROM.c)。
    该例程如下:

    e2e.ti.com/.../spi_5F00_ex6_5F00_eeprom.rar

    错误仍然存在。 错误如下所示:

    e2e.ti.com/.../5736.error.txt

    总之、有两种类型的错误:
    错误#10234-D:未解析的符号仍然存在
    错误#10010:链接期间遇到错误;

    期待您的回复!

    Vince

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

    尊敬的 Vince:

    当您在 同一 CCS 工程中组合 bitfield 和 driverlib 头文件时、这是一个已知问题。 MCAN 位字段结构和 driverlib 宏使用的名称相同、这会导致这些编译错误。

    如果您不同时使用位字段标头和 driverlib 标头、我建议您从#includes 中删除其中一个标头。

    或者、在 driverlib 头文件->之前包含 bidifted.headers

    #include "F28x_project.h"
    #include "driverlib.h"

    有一个用于重命名位字段结构的 TT、以便不会发生冲突。

    此致、

    Veena

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

    我发现,在我移植之前,为了使用 InitPieVectTable();

    向工程添加了 f2838x_pievect.c 文件。

    然后它引起了一系列问题,后来发现如果你真的使用 InitPieVectTable(),你不需要添加 f2838x_pievect.c 文件。 然后、我删除一侧的 f2838x_pievect.c 文件。

    工程如下:

    e2e.ti.com/.../7848.spi_5F00_ex6_5F00_eeprom.rar

    有一些新问题、我在此要问、谢谢。

    期待您的回复

    谢谢你

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

    未定义图片中的错误、disk_initialize 和一系列问题。
    然后、找到 stdio_sd.h 文件、将该文件复制到 SPI_ex6_EEPROM 项目、并对其进行编译。
    这样、就解决了一系列问题、例如未定义的 disk_initialize。 但存在新的错误问题。
    如下所示:
    102"UINT8"已在当前范围内声明。
    #20标识符"_IO"未定义
    66期待一个“;”
    如何应对这些情况?

    该错误的详细信息如下:

    e2e.ti.com/.../_B065FA5E87652C6787656368_-_2800_2_2900_.txt

    尝试修改并找到大量信息后,上述问题仍然存在。
    期待您的回复
    谢谢你

    Vince

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

    尊敬的 Vince:

    如果您要组合 bitfield 和 driverlib 代码、请在 CCS 项目中添加"_dual_headers"作为预定义符号。

    您是否在项目中同时使用 driverlib 和 bifeld 代码? 如果没有、我强烈建议不要混合使用这些接头、

    InitPieVectTable 函数被定义为 pievect.c 文件。 如果要使用此函数、则需要包含此文件。

    此致、

    Veena

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

    大家好、关于 bifeld 代码、我不确定它是否用于项目中。

    什么是 bifeld 代码?

    可以肯定的是、使用了#include "driverlib.h"。

    期待您的回复。

    谢谢

    Vince

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

    尊敬的 Vince:

    位字段文件包括 device_support/headers 和下的文件 _ device_support/common 中的.c 文件。

    这些寄存器使用位字段结构访问外设寄存器。

    此致、

    Veena

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

    您好、Veena Kamath

    我正在将 SD 卡读写互联网上的28377D 代码移植到 SPI_ex6_EEPROM 项目中。

    移植代码如下:(虽然只剩下几个警告、但 SD_SPI_Transmission .c 中 SPI_xmit_BYTE ()中的 while 循环卡在运行过程中)

    e2e.ti.com/.../4848.spi_5F00_ex6_5F00_eeprom.rar

    此外、我的移植目前只是将缺失的.c 和.h 文件复制到项目中。

    一些寄存器和引脚的配置尚未修改。

    一方面、我想问如何处理这些警告? (我检查了该信息、并说程序的存储位置未在 CMD 文件中定义。)

    另一方面,我想问如何修改这种移植的寄存器和引脚的配置? (原理图设计如下:)

    经过测试的平台是从 TI 官方网站购买的28388D 评估板:

    TMDSCNCD28388D
    使用的软件为:ccs10.1

    我认为这是为了移植计划。
    我的能力已不足以继续移植工作。

    期待获得公司的帮助。

    期待您的回复

    谢谢你

    Vince

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

    您好!

    如果您使用的是位域头文件、则需要添加链接器命令文件 F2837xD_Headers_BIOS_CPU1.cmd 以正确映射外设寄存器结构。 这将解决警告问题。

    要使用不同的 GPIO 引脚、您需要更新为所需引脚配置 MUX 和 GMUX 寄存器的代码。 多路复用器值可在数据表中找到。

    由于您也在使用 driverlib、因此您可以使用函数 GPIO_setPinConfig 来配置引脚。 请参阅原始 driverlib EEPROM 示例、了解如何配置 SPI 引脚。

    此致、

    Veena

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

    你(们)好

    将 f2838x_headers_BIOS_CPU1.cmd 文件添加到工程中、警告消失。
    仅保留以下警告:


    存在一个新问题。 当程序单步运行时、它无法从 while 循环中退出。
    换言之、未获得空闲响应。

    导致这种现象的原因是什么?

    期待收到您的回复。

    谢谢

    Vince

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

    我很荣幸能得到你的帮助。
    非常感谢!

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

    尊敬的 Vince:

    响应变量是否在 ISR 中更新? 在这种情况下、请确保变量声明为 volatile。

    此致、

    Veena

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

    您好,

    响应变量的变化如下:
    从0更改为65280

    更改后、它无法退出 while 循环。

    [引用 userid="128297" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1018123/tms320f28388d-c2000-transplant/3773471 #3773471"]在这种情况下,请确保变量声明为 volatile。

    现在、响应在程序中定义为 uint16_t。

    现在、程序中的响应被定义为 uint16_t 响应。
    您是说、更改为易失性 uint16_t 响应。

    期待您的回复!
    谢谢

    Vince

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

    您好、Veena Kamath

    目前、程序向 SD 卡发送0xFF00、SD 卡始终无法返回0x00或0x01。
    只能返回0xFF。

    在思考和搜索信息后、发现了以下问题:
    在上述函数中、发送的 dummy_data 仅为两个字节。

    但是、在搜索信息后、发现如果您希望 SD 卡返回一个字节命令、则需要向 SD 卡发送一个6字节命令。

    最初的 dummy_data 被定义为0xFF00;
    我的想法是在 SD 卡的初始化阶段将 dummy_data 定义为6字节命令并将其发送出去。 命令定义如下:
    #define dummy_data 0x7700000000FF;

    这种思维是否有效?

    期待您的回复!
    谢谢!

    Vince

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

    您好!

    如何向控制 SD 卡的寄存器发送6字节命令?

    期待您的回复!
    谢谢

    Vince

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

    尊敬的 Vince:

    您需要以3个16位传输的形式发送它们。

    此致、

    Veena