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.

[参考译文] MSP432E401Y:使用定制板安装检测 SD 卡

Guru**** 2542150 points
Other Parts Discussed in Thread: SYSCONFIG, MSP432E401Y, SEGGER

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1029933/msp432e401y-detect-sd-card-is-mounted-using-custom-board

器件型号:MSP432E401Y
主题中讨论的其他部件:SysConfigTM4C1294NCPDTSEGGER

尊敬的 TI 社区:

我不使用 BoosterPack、并在 SysConfig 中为 SD SPI 接口从 SSI2中选择了三个引脚。 我有一个不属于 SSI2接口的 CS 引脚。 MSP432E401Y Launchpad 的非 simplelink 示例可通过自定义引脚配置为我提供支持。 它也无法对 SD 卡执行 R/W 操作。

我在链接的帖子中应用了修改、但没有幸运地得到非空的句柄。


有什么关于如何克服这一问题的提示吗?

谢谢、


乌特 sav

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

    1.是否要使用 SPI 与 SD 卡通信?

    2.您能否捕捉 SSI 引脚上的波形以查看是否有任何输出。

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

    我有一个旧的 Tiva C SDK 项目(tm4c1294ncppdt)、在 SEGGER 调试器的帮助下、我成功地将其上载到电路板上。 它的工作原理是 msp432和 tm4c1294ncppdt 是相同的处理器。

    我目前没有任何设备来捕获波浪。 Tiva C SDK 中的 ti.mw.fatfs.FatFS 工作正常、因此我可以确认 SPI 总线工作正常。 我能够 R/W 转 SD 卡。 区别在于、pinconfigs 需要通过 Tiva C 中的代码来指定、而在 MSP432中、pinconfigs 必须通过 SysConfig 来指定。

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

    /*
     *  ======== SDSPITiva_open ========
     *  Function to mount the FatFs filesystem and register the SDSPITiva disk
     *  I/O functions with SYS/BIOS' FatFS module.
     *
     *  This function also configures some basic GPIO settings needed for the
     *  software chip select with the SDCard.
     *
     *  @param  handle      SDSPI handle
     *  @param  drv         Drive Number
     *  @param  params      SDSPI parameters
     */
    SDSPI_Handle SDSPITiva_open(SDSPI_Handle handle,
                                unsigned char drv,
                                SDSPI_Params *params)
    {
        DRESULT                   dresult;
        FRESULT                   fresult;
        unsigned int              key;
        Types_FreqHz              freq;
        SDSPITiva_Object         *object = handle->object;
        SDSPITiva_HWAttrs const  *hwAttrs = handle->hwAttrs;;
        TCHAR                     path[3];
    
        /* Determine if the device was already opened */
        key = Hwi_disable();
        if (object->driveNumber != DRIVE_NOT_MOUNTED) {
            Hwi_restore(key);
            return (NULL);
        }
        /* Mark as being used */
        object->driveNumber = drv;
        Hwi_restore(key);
    
        /* Determine time scaling for ms timeouts */
        Timestamp_getFreq(&freq);
        mSScalingFactor = freq.lo / 1000;
        Assert_isTrue(mSScalingFactor != 0, NULL);
    
        /* Store desired bitRate */
        object->bitRate = params->bitRate;
    
        GPIODirModeSet(hwAttrs->portSCK,  hwAttrs->pinSCK,  GPIO_DIR_MODE_HW);
        GPIODirModeSet(hwAttrs->portMISO, hwAttrs->pinMISO, GPIO_DIR_MODE_HW);
        GPIODirModeSet(hwAttrs->portMOSI, hwAttrs->pinMOSI, GPIO_DIR_MODE_HW);
    
        /* Pin used for Chip Select */
        GPIOPinTypeGPIOOutput(hwAttrs->portCS, hwAttrs->pinCS);
    
        /* Raise the chip select pin */
        GPIOPinWrite(hwAttrs->portCS, hwAttrs->pinCS, hwAttrs->pinCS);
    
        /*
         * Configure the SPI bus to 400 kHz as required per SD specs. This frequency
         * will be adjusted later once the SD card has been successfully initialized
         */
        BIOS_getCpuFreq(&freq);
        SSIConfigSetExpClk(hwAttrs->baseAddr, freq.lo, SSI_FRF_MOTO_MODE_0,
                           SSI_MODE_MASTER, 400000, 8);
    
        Log_print2(Diags_USER1, "SDSPI:(%p) CPU freq: %d; SDSPI freq to 400000 kHz",
                   hwAttrs->baseAddr, freq.lo);
    
        SSIEnable(hwAttrs->baseAddr);
    
        /* Register the new disk_*() functions */
        dresult = disk_register(object->driveNumber,
                                SDSPITiva_diskInitialize,
                                SDSPITiva_diskStatus,
                                SDSPITiva_diskRead,
                                SDSPITiva_diskWrite,
                                SDSPITiva_diskIOctrl);
    
        /* Check for drive errors */
        if (dresult != RES_OK) {
            Log_error1("SDSPI:(%p) disk functions not registered",
                        hwAttrs->baseAddr);
    
            SDSPITiva_close(handle);
            return (NULL);
        }
    
        /*
         * Register the filesystem with FatFs. This operation does not access the
         * SDCard yet.
         */
        path[0] = '0' + object->driveNumber;
        path[1] = ':';
        path[2] = '\0';
    
        fresult = f_mount(&(object->filesystem), path, 0);
        if (fresult != FR_OK) {
            Log_error2("SDSPI:(%p) drive %d not mounted",
                        hwAttrs->baseAddr, object->driveNumber);
    
            SDSPITiva_close(handle);
            return (NULL);
        }
    
        /* Store the new SDSPI handle for this FatFs drive number */
        sdspiHandles[drv] = handle;
    
        Log_print1(Diags_USER1, "SDSPI:(%p) opened", hwAttrs->baseAddr);
    
        return (handle);
    }


    这是 Tiva C 句柄实现。 它实际上会访问引脚。 我在 Simplelink SDK FatFS 句柄中没有看到它

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

    MSP432属于 simplelink 平台、这意味着 MSP432使用不同的 Tiva 代码样式。

    如果您没有示波器来测试波形、能否将 MISO 和 MOSI 连接在一起。 然后您可以在应用程序上检查它。

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

    因为我们处于锁定状态、所以恐怕要等一会儿、如果有东西短路、我没有备用板。

    我对 SD 卡进行了格式化并运行了 Tiva C 项目、在该项目中、我使其生成了一个名为 input.txt 的文件、其中包含一些文本。 代码运行后、它会在其中包含该文件、因此可以确认 SPI 总线工作正常。

    在我在 simplelink 示例中的链接帖子中应用修改后、它会尝试立即而不是稍后安装 SD 卡、但不成功。 我怀疑它与驱动程序如何使用 SPI 接口有关。


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

    根据您的解释、您的 SD 卡工作正常。 问题应该出在 MSP432器件上、主要是软件。

    由于您无法监控 SPI 数据、这真是一个坏消息。 您无法证明 MCU 的运行方式与您想要的一样。 很抱歉、在您比较发送的内容和要发送的内容之前、我无法为您提供更多帮助。

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

    您好、伊斯迅、

    我很抱歉、非常感谢您花时间来了解这一点。 我一定会在完成此操作后进行更新。

    我没有找到任何有关定制板的帖子。 您是否知道有人使用定制板实现了这一点、或者您是否可以将我指引给 TI 团队的某个人(TI 软件制造商)?

    最后、我将尝试通过 Tiva C SD 卡模块移植到 simplelink 并进行尝试。

    谢谢、

    乌特 sav

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

    没有任何幸运。 问题出在'fresult = f_mount (&(obj->filesystem)、path、1);'

     /*
                         * @orig: Register the filesystem with FatFs. This operation does
                         * not access the SDCard yet.
                         * @new: Mounts and accesses SD card immediately
                         */
                        sdFatFSHandles[obj->driveNum] = handle;
    
                        fresult = f_mount(&(obj->filesystem), path, 1);
    
                        if (fresult != FR_OK) {
                            DebugP_log1("SDFatFS: Drive %d not mounted",
                                        obj->driveNum);
                            sdFatFSHandles[obj->driveNum] = NULL;
                            SDFatFS_close(handle);
                            handle = NULL;
                        }else {
    
                            /*
                             * Store the new sdfatfs handle for the input drive
                             * number
                             */
                            DebugP_log0("SDFatFS: opened");
                        }

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

    f_mount 中会怎么样?

    抱歉、对于 MSP432E 系列、我们仅提供有限的支持。 我们是支持它的最后一个人。

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

    我对 Tiva C 和 MSP432进行了比较。 我认为 f_mount 在我开始调查时可能不是问题。 调用 SDSPI_Initialize 时、SDSPI.c 实现在 MSP432 SDK 中失败。 它无法将卡置于空闲模式。

    更新1:无法使用任何命令获得正确的响应。 即使空闲状态代码被注释掉、它也无法通过 CMD8获得正确的响应来确定卡类型。 CMD0 CMD8都通过 Tiva C SDK、返回编号0x01作为响应。

    更新2: 状态变量始终为 SD_STATUS_SUCCESS、表示命令已成功发送。 rxBuf (除 MSP432 SDK 的 CMD8 (0x04)之外、所有命令的响应始终为0x07

    更新3:我设法将 Tiva C SPI API 移植到 MSP432 SDK 中、并使用它来代替 MSP432 SPI API。 在 MSP432 SDK 中运行 Tiva C API 时、无法安装 SD 卡。 如果 f_mount()设置为立即挂载,则会崩溃,并且无法通过延迟挂载来挂载 SD 卡。 我尝试仅使用来自 Tiva C 的发送和接收 SPI 函数、其中包括 SSIGet。 它在 MSP432中挂起。 SSIDataGetNonBlocking 也不会返回正确的响应。

    更新4:对于 MSP432、Tiva C 中的 Fatfs 版本为 R0.11a 和 R0.13A。 移植这些文件没有帮助。 无法将 MSP432中的静态库 fatfs.a 替换为 Tiva C 等效项、因为 Tiva C SDK 中没有用于 fatfs 的.A 文件。 下面的调用堆栈显示 f_mount 会指向 MSP432 SPI 驱动程序并尝试发送 CMD0。
    我将在能够上传波形后、在单独的帖子中链接该波形。



    TODO:在我能够让@í a Eason 审阅时立即发送 SPI 接口的波形。
     
    使用 Tiva C API 的 MSP432、无法检测 SD 卡是否已安装:

    SDSPI_Handle SDSPITiva_open(SDSPI_Handle handle,
                                unsigned char drv,
                                SDSPI_Params *params)
    {
    
    
        DRESULT                   dresult;
        FRESULT                   fresult;
        unsigned int              key;
        Types_FreqHz              freq;
        SDSPITiva_Object         *object = handle->object;
        SDSPITiva_HWAttrs* const hwAttrs = handle->hwAttrs;
        TCHAR                     path[3];
    
        /* Determine if the device was already opened */
        key = Hwi_disable();
        if (object->driveNumber != DRIVE_NOT_MOUNTED) {
            Hwi_restore(key);
            return (NULL); // Returns here when using Tiva C in MSP432 SDK
        }


    用于 向 SDCard 发送命令的 MSP432 SPI。 响应 rxBuf 永远不正确:

    static uint8_t sendCmd(SPI_Handle handle, uint8_t cmd, uint32_t arg)
    {
        uint8_t      i;
        uint8_t      rxBuf;
        uint8_t      txBuf[6];
        int_fast16_t status;
    
        if ((cmd != CMD0) && !waitUntilReady(handle)) {
            return (0xFF);
        }
    
        /* Setup SPI transaction */
        txBuf[0] = cmd;                  /* Command */
        txBuf[1] = (uint8_t)(arg >> 24); /* Argument[31..24] */
        txBuf[2] = (uint8_t)(arg >> 16); /* Argument[23..16] */
        txBuf[3] = (uint8_t)(arg >> 8);  /* Argument[15..8] */
        txBuf[4] = (uint8_t) arg;        /* Argument[7..0] */
    
        if (cmd == CMD0) {
            /* CRC for CMD0(0) */
            txBuf[5] = 0x95;
        }
        else if (cmd == CMD8) {
            /* CRC for CMD8(0x1AA) */
            txBuf[5] = 0x87;
        }
        else {
            /* Default CRC should be at least 0x01 */
            txBuf[5] = 0x01;
        }
    
        if (spiTransfer(handle, NULL, &txBuf, 6) != SD_STATUS_SUCCESS) {
            return (0xFF);
        }
    
        /* Prepare to receive SD card response (send 0xFF) */
        txBuf[0] = 0xFF;
    
        /*
         * CMD 12 has R1b response which transfers an additional
         * "busy" byte
         */
        if ((cmd == CMD12) &&
            (spiTransfer(handle, &rxBuf, &txBuf, 1) != SD_STATUS_SUCCESS)) {
                return (0xFF);
        }
    
        /* Wait for a valid response; 10 attempts */
        i = 10;
        do {
            status = spiTransfer(handle, &rxBuf, &txBuf, 1);
        } while ((status == SD_STATUS_SUCCESS) && (rxBuf & 0x80) && (--i));
    
        /* Return with the response value */
        return (rxBuf);
    }


    MSP432 SPI API SD 卡无法转换到空闲模式
    int_fast16_t SDSPI_initialize(SD_Handle handle)
    {
        SD_CardType          cardType = SD_NOCARD;
        uint8_t              i;
        uint8_t              ocr[4];
        uint8_t              txDummy[10] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
                                           0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
        int_fast16_t         status;
        uint32_t             currentTime;
        uint32_t             startTime;
        uint32_t             timeout;
        SPI_Params           spiParams;
        SDSPI_Object        *object = handle->object;
        SDSPI_HWAttrs const *hwAttrs = handle->hwAttrs;
    
        SemaphoreP_pend(object->lockSem, SemaphoreP_WAIT_FOREVER);
    
        /*
         * The CS line should not be asserted when attempting to put the
         * SD card into SPI mode.
         */
        deassertCS(hwAttrs);
    
        /*
         * To put the SD card in SPI mode we must keep the TX line high while
         * toggling the clock line several times. To do this we transmit 0xFF
         * 10 times. Do not assert CS during this time
         */
        status = spiTransfer(object->spiHandle, NULL, &txDummy, 10);
        if (status != SD_STATUS_SUCCESS) {
            SemaphoreP_post(object->lockSem);
            return (status);
        }
    
        /* Now select the SD Card's chip select to send CMD0 command */
        assertCS(hwAttrs);
    
        /*
         * Send CMD0 to put the SD card in idle mode. Depending on the previous
         * state of the SD card, this may take up to a couple hundred milliseconds.
         * Rather than delay between attempts, we try up to 255 attempts.
         * Failure is returned if the card does not respond will a valid byte
         * within 255 attempts. When the card will respond with 0x1 when its
         * in idle mode.
         */
        for (i = 255, status = 0xFF; i > 0 && status != 0x1; i--) {
            status = sendCmd(object->spiHandle, CMD0, 0); // Fails to send
        }
    
        /* If the card never transitioned into idle mode */
        if (status != 0x1) {
            deassertCS(hwAttrs);
            SemaphoreP_post(object->lockSem);
            return (SD_STATUS_ERROR); // Returns here
        }
        
        // More Code below but taken out for this TI Forum Post
        ....
    }

    第一个 f_open 是尝试打开文件以进行写入的位置、如果文件不存在则创建该文件。

    Call Stack


    Tiva C 项目成功运行:

    DSTATUS SDSPITiva_diskInitialize(BYTE drv)
    {
        uint8_t                    n;
        uint8_t                    ocr[4];
        SDSPITiva_CardType         cardType;
        Types_FreqHz               freq;
        uint32_t                   timestampTimeout;
        uint32_t                   timestampStart;
        uint32_t                   timestampCurrent;
        SDSPITiva_Object          *object = sdspiHandles[drv]->object;
        SDSPITiva_HWAttrs const   *hwAttrs = sdspiHandles[drv]->hwAttrs;
    
        /* No card in the socket */
        if (object->diskState & STA_NODISK) {
            Log_error1("SDSPI:(%p) disk initialization failed: No disk",
                        hwAttrs->baseAddr);
    
            return (object->diskState);
        }
    
        /* Initialize the SD Card for SPI mode */
        send_initial_clock_train(hwAttrs);
    
        /* Select the SD Card's chip select */
        takeSPIBus(hwAttrs);
        cardType = SDSPITiva_NOCARD;
    
        /* Send the CMD0 to put the SD Card in "Idle" state */
        if (send_cmd(hwAttrs, CMD0, 0) == 1) {// Succeeds here
    
            /*
             * Determine what SD Card version we are dealing with
             * Depending on which SD Card version, we need to send different SD
             * commands to the SD Card, which will have different response fields.
             */
            
            // Succeeds here but fails in MSP432 SDSPI SDK
            if (send_cmd(hwAttrs, CMD8, 0x1AA) == 1) { 
                /* SDC Ver2+ */
                for (n = 0; n < 4; n++) {
                    ocr[n] = rxSPI(hwAttrs);
                }
    

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

    您好 、Utsav Trivedi、

     你有什么进展吗? 您是否找到了读取 SPI 数据的方法?

    伊斯天

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

    锁定已扩展、因此发送波形的时间将会很长。 我设法获得了 Launchpad。 我将使用此 试验电路板设置。 SPI 总线是免费的、因此无关紧要。

    更新:YouTube 链接中的试验电路板设置与 Launchpad 配合使用。 定制板和 Launchpad 之间的一个关键区别是32KHz 晶振。 不确定是否在驱动程序中使用此功能。 RTC (晶体)在 launchpad 中调用、但对于定制板、我使用秒数模块的软件时钟。

    在 fatsd 示例中注释这一行没有效果。

    /* Initialize real-time clock */
    clock_settime(CLOCK_REALTIME, &ts);

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

    您好、伊斯天、我成功地得到了一个示波器、下面是我的结果。 我在此发送了 CMD0。 MSP432 Launchpad 与本指南中的图像匹配、网址为 :http://www.rjhcoding.com/avrc-sd-interface-1.php

    我注意到的另一个关键区别是、Tiva C SDK 一次发送一个字节、而 Simplelink SDK 一次性发送全部字节。 我尝试使用 Simplelink 驱动程序执行此操作、但运气不好。 很明显在 Simplelink SDK 中没有正确发送 CMD0、但我无法理解原因。

    在硬件方面、定制板具有用于 SPI 接口的3.3V 外部上拉电阻、而 Launchpad 是内部的。 引脚1 (NC1)为3.3V,引脚8 (RSV)为 GND。 我认为这可能是问题所在、因为在 SPI 的 syscfg 中无法将上拉电阻设置为 none 或外部。

    更新了:我使用了 driverlib API GPIOPadConfigSet()将其设置为漏极开路、但运气不好。 我无法判断这是用于外部上拉还是内部上拉。

    希望我能从这个问题中获得一些见解。 我是否应该尝试移除外部上拉电阻器?

    定制板:

    # MOSI
    MOSI

    #MISO

    MISO

    # CS



    MSP432 Launchpad:

    # MOSI
    MOSI

    # MISO

    MISO

    # CS

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

    您好、Trivedi、

    如 您所说、MSP432的波形与 本指南中的图像相同。 尽管它与 Tiva 的波形不同。 我认为应该可以。

    2.查看您的定制板、SPI 波形不好。 设置时间太长。 您能否再次检查这是否是问题? 它可能是由外部电阻器引起的。 连线比较好、有些设置时间不错。 有些不是。

    通常情况下、SPI 与 I2C 不同、不需要添加上拉电阻器。

    伊斯天

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

    您好、伊斯迅、

    外部上拉电阻不是 Tiva C 项目的问题、在这个项目中、每次发送一个字节。 这也使我更难采集波形。

    我将在 Tiva C launchpad 上尝试此操作、因为我可以在没有外部上拉的情况下复制此操作。 当我获得 Launchpad 时、您会收到最新消息。

    谢谢、

    乌特 sav


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

    您好 Utsav、

    您可以看到、在这些时间点、CLK 和 MOSI 都有条纹。 Tiva 上的行为是否相同?

    伊斯天

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

    您好、伊斯迅、

    我一次看不到 Tiva 驱动程序的整个波形、因为每次发送一个字节。 但对于每个字节、我没有观察到这一点。

    我有一个 Tiva C launchpad、并观察到如果我不使用外部上拉电阻器、它可以与 Simplelink SDK 配合使用。 借助 Tiva C SDK、它可以使用和不使用外部上拉电阻器。

    是否有办法使 Simplelink SDK 适用于 SPI SD 卡的外部上拉电阻器? 我观察到 MSP432 Launchpad 也是如此。 它无法通过外部上拉电阻器写入 SD 卡。

    总之、如果存在外部上拉电阻器、simplelink SD 卡驱动器将无法正常工作。 Tiva C SD 卡驱动程序对此没有问题。

    谢谢、

    乌特 sav

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

    您好 Utsav、

    我认为它与硬件(MSP432本身)相关、与软件没有关系。 很难告诉您为什么会发生这种情况。

    我不确定是否可以在没有外部电阻器的情况下使其正常工作?  

    伊斯天

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

    您好、伊斯迅、

    MSP432 Launchpad 本身仅在没有外部上拉的情况下工作。 如果您有设置、您可以使用一些电阻器进行尝试。

    此致、

    乌特 sav。

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

    您好 Utsav、

    很抱歉,我刚从一个长假期回来。 MSP432无法与 SD 卡通信的问题与外部上拉电阻有关。 但对于 Tiva MCU、这不是问题。 我想你已经找到了一种方法来爱上它。  

    如果您想检查为什么 MSP432无法使用上拉电阻器。 我认为您需要仔细检查:

    为什么要放置上拉电阻器? 或任何其他参考设计中的任何其他参考设计?

    2. 您添加了什么电阻值以及在哪个信号上? 电阻值太小?

    伊斯天

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

    您好、伊斯迅、

    1.这是我公司很久以前做出的设计决定。 我个人不会说,除非有一个大电流问题。 我为两个不同外设共享同一 SPI 总线的定制板。 有一个额外的 CS 引脚。

    2.在我的定制板上使用10k 电阻器、在 launchpad 上使用8.2k 电阻器、这是我在家里使用的最高电阻器。

    非常感谢您投入宝贵的时间。 我想将其标记为已解决、也许您可以记下此问题、稍后再查看。 我请求公司改为应用硬件修改。

    谢谢、

    乌特 sav