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.
正在执行的操作:
将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"。
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
错误仍然存在。 错误如下所示:
总之、有两种类型的错误:
错误#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