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.

[参考译文] RTOS/TM4C1294NCPDT:SD 卡板连接

Guru**** 2446130 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/632791/rtos-tm4c1294ncpdt-sd-card-board-connection

器件型号:TM4C1294NCPDT
Thread 中讨论的其他器件:SYSBIOS

工具/软件:TI-RTOS

大家好!

我有一个 LaunchPad、我正在尝试使用 robotshop 的 SD 卡分线板来实现 FatFS。  我一直在使用资源库中的示例 fatsd、但没有使用!  我认为我的问题是接线问题、不一定是编码问题。  我将附上一些照片、说明我是如何进行此设置的。  我遇到的错误位于代码的以下部分:

//这来自主项目文件
SDSPI_Params_init (sdspiParams);
sdspiHandle = SDSPI_open (Board_SDSPI0、drive_NUM、&sdspiParams);
if (sdspiHandle == NULL){
System_abort ("启动 SD 卡时出错\n");
}
否则{
system_printf ("已安装驱动器%u "、drive_NUM);
}
/*尝试打开源文件*/
//下一行是我遇到问题的地方。
src = fopen (inputfile、"r");
如果(!src){
system_printf ("创建新文件\"%s\..."、inputfile); 

这将导致误差:

 TI.SYSBIOS.family.ARM.m3/Hwi:第1095行:E_hardFault:Forced
TI.SYSBIOS.family.ARM.m3/Hwi:第1172行:E_BUSFault:IMPRECISERR:延迟总线故障、确切的地址未知、地址:e000ed38
在 PC = 0x00003dee 的后台线程中发生异常。
内核0:ThreadType_Task 中发生异常。
任务名称:{unknown-instance-name}、句柄:0x20003b98。
任务堆栈基地址:0x20000360。
任务堆栈大小:0x1000。
R0 = 0x000000f9 R8 = 0x00009f59
R1 = 0x000001f3 R9 = 0x00000001
R2 = 0x00000002 R10 = 0xffffffff
R3 = 0x00007cc5 R11 = 0xffffffff
R4 = 0x00000000 R12 = 0x00000000
R5 = 0x20004334 SP (R13)= 0x200012a8
R6 = 0x00000002 LR (R14)= 0x00005c8f
R7 = 0x20004280 PC (R15)= 0x00003dee
PSR = 0x21002800
ICSR = 0x00423803
MMFSR = 0x00
BFSR = 0x04
UFSR = 0x0000
HFSR = 0x40000000
DFSR = 0x0000000A
MMAR = 0xe000ed34
BFAR = 0xe000ed38
AFSR = 0x00000000
因为我删除了代码中的所有 system_abort 行、尝试诊断其不起作用的原因。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否会提供 EK-TM4C129XL 中的哪些信号连接到 G、DO、CLK、DI、CS 和+中的每一个信号的列表? 很难计算引脚数并在图片之间翻转。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当然、Bob、

    G 红线连接到接地引脚
    请使用紫色线连接到引脚 PD0
    连接到引脚 PD3的 CLK 白线
    DI 黑色电线连接到引脚 PD1
    连接到引脚 PC7的 CS 绿线
    + 黄色导线连接至3.3V
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此外、制造商提供的 DI 和 DO 引脚似乎已翻转。 当我反转这两个引脚时、如果我包含一个 disk_initialize (0)、我会得到一个错误;它返回0x01。 当它们处于当前位置时、返回0x00。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    对不起,大家!

    src = fopen (inputfile、"r");
    如果(!src){
    system_printf ("创建新文件\"%s\..."、inputfile);
    
    /*打开文件进行读取和写入*/
    src = fopen (inputfile、"w+");
    如果(!src){
    System_printf ("错误:\"%s\"无法创建。\n"
    "请查看入门指南"
    "如果需要额外的跳线。\n"、
    InputFile);
    // System_abort ("Aborting...\n");
    }
    //这实际上是程序崩溃的地方!
    fwrite (textarray、1、strlen (textarray)、src);
    fflush (src);
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Stephen:
    我根据 TIRTOS FatFS 示例检查了您的接线配置、一切看起来都正确。 我还咨询了另一位(更好)专家、他确认 SD 卡无需预格式化。

    它是具有3V/5V 开关的此卡吗?
    www.robotshop.com/.../micro-sd-card-breakout-module.html
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我告诉 Bob 错误的信息! 它不会格式化 SD 卡。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、这是我正在使用的板。 我知道 fopen 代码中的某个位置有一个空指针、但我不记得确切的位置。 我将单步执行代码、并发布最终为空的变量。

    感谢 Bob。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已确保我放入的 SD 卡格式化为 FatFS32。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不知道这是否有助于:

    声明 const char inputfile[]="fat:0:input.txt";const char outputfile[]="fat:0:output.txt";如果我将值更改为"input.txt"和"output.txt"、代码运行顺畅、只是实际上不会将文件写入 SD 卡。 此外、一旦我完成此操作、它将从创建文件更改为使用现有文件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在该配置中、如果在没有 SD 卡的情况下运行该代码、则代码仍然可以正常运行。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    免责声明:我在这一领域(还可以-很多领域)中"不合格"。   (但收银机响了响-频率也足够...)

    最常-在"多个"此类板(或设备... 本例中的其他 SD 卡)证明使用/价值。   我们是否可以假设您已经"测试/验证"了此特定 SD 卡(通过其他方式)-并且它已经执行了?

    公司/我过去曾注意到、"较新、容量更高的 SD 卡"-与此类小型 MCU ("此处"和(其他) ARM MCU 供应商提供的卡)一起使用时、可能"价格不合适"-这不会对该供应商造成"冲击"。

    是否可以尝试使用容量较低的 SD 卡-并报告结果?

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

    除了通过 LaunchPad 之外、我还没有以任何其他身份测试过此电路板。 我有一个辅助 SD 板、但它不一定会提供您要查找的信息。

    我目前正在使用4 GB SDHC 卡。 我将看到我们是否有容量较低的卡、看看这是否能达到目的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢-谢谢。

    经常-那些"专注专业知识"的人忽视和/或减价(kiss Direct/Inspired)更广泛的"事实调查!"的价值

    "困难或挑战"是由"更高容量"(甚至类型) SD 卡强制实施的、已得到认可/报告、我认为有必要在此提及(部分)...

    (作为一个"孩子"、我已经(经过测试/验证)"照片存储器"(目前还没有那么多)、但 IIRC -"HC"卡(或过去曾有过)会受到质疑!)

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

    我尝试了2 GB SD 卡、这是能够写入的。  当我尝试读回文件时、仍然存在一个问题、我将进一步研究在哪里得到此错误:

    无法识别地址(0x20003948)的 CIO 缓冲器中的无效 CIO 命令(0)。 请检查器件和程序存储器映射。

    这种情况下、我猜测这个代码块是因为在我结束程序之前、错误一直被写入:

    while (true){
    /*从输出文件读取*/
    字节 Read = fread (cpy_buff、1、cpy_buff、dst);
    if (bytesRead = 0){
    中断;//错误或 EOF */
    }
    cpy_buff [bytesRead]='\0';
    /*写入输出*/
    System_printf ("%s"、cpy_buff);
    system_flush();
    } 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    再次感谢-很高兴看到这里的"如此快速响应"。 (不会)您似乎正在"获得成功"-由于"亲吻"(不做假设)方法! (遗憾的是这里禁止亲吻...当然-没有任何解释/理由!)

    我在我的初始帖子中添加了-如果内存使用"HC"卡(增加)"难度"。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是一个有趣的地方。 我们有一个32 GB SDHC I、它可以在系统中工作。 我认为弹出问题是因为它删除了它的格式。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    与往常一样-"有疑问时"-扩大"样本大小"。   (纯亲吻)

    感谢您的"解决方案"奖-不胜感激。

    我仍然会:"寻找更多(即多个)更低的容量、最基本的" SD 卡"采购并测试"这些"。   (即更进一步、kiss)

    如果这些人"工作"、那么您(合理地)有足够的武装来发现"先进的 SD 卡在哪里和何时(甚至可能是为什么)发生故障"、并可能开发"真正的解决方案"。