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.

[参考译文] CC2642R:如何通过 OAD 功能从 CC2642R 外部闪存读取数据/向其中写入数据?

Guru**** 2510095 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1209862/cc2642r-how-to-read-write-data-from-to-cc2642r-external-flash-with-oad-function

器件型号:CC2642R
"Thread:SysConfig"中讨论的其他器件

大家好!

我已将 nvsexternal 样本添加到 simple_peripheral_oad_offchip_CC26X2R1_LAUNCHXL_tirtos_ccs 项目中。

它似乎不起作用。 代码卡在 BIOS_start ();

有什么 教程吗?

此致、

Lulu

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

    尊敬的 Lulu:

    您使用的是 Launchpad 还是定制电路板? 您正在使用哪个 SDK 版本?

    -kel

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

    尊敬的 Markel:

    我使用的是 定制电路板。

    SDK 为 simplelink_cc13x2_26x2_SDK_5_20_00_52

    Lulu

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

    您好!

    这个问题让我想起一年前我们的讨论。 您能否确认一下它是否有帮助?

    https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1078468/cc2642r-how-to-read-write-data-from-to-cc2642r-internal-flash-with-oad-function

    此致、

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

    尊敬的 Clement:

    我想 从/向其读取/写入数据 外部闪存。

    这个问题与一年前不同。

    我试图遵循 nvsexternal.c 示例, 代码卡在 BIOS_start();。

    Lulu

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

    尊敬的 Lulu:

    如果未针对定制板正确设置 SysConfig、可能会导致其发生此情况  停留在何处  BIOS_start()。 您是否在 SysConfig 中为定制板设置了正确的 SPI 引脚? 您还需要在 BIM 项目中设置正确的 SPI 引脚。

    -kel

    帖子已编辑。 。 。

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

    尊敬的  Markel:

    自定义电路板 SPI 引脚设置 如下所示。

    MISO:DIO8.
    MOSI:DIO9.
    SCLK:DIO10
    CS:DIO11.

    外部闪存

    大小:16M 字节

    扇区大小:4K 字节

    TI_DRIVERS_CONFIG.c

    static uint8_t verifyBuf[64];
    
    NVSSPI25X_Object nvsSPI25XObjects[1];
    
    static const NVSSPI25X_HWAttrs nvsSPI25XHWAttrs[1] = {
        /* CONFIG_NVSEXTERNAL */
        {
            .regionBaseOffset = 0x0,
            .regionSize = 0x1000000,
            .sectorSize = 0x1000,
            .verifyBuf = verifyBuf,
            .verifyBufSize = 64,
            /* NVS opens SPI */
            .spiHandle = NULL,
            /* SPI driver index */
            .spiIndex = CONFIG_SPI_0,
            .spiBitRate = 4000000,
            /* GPIO driver pin index */
            .spiCsnGpioIndex = CONFIG_GPIO_0,
            .statusPollDelayUs = 100
        },
    };
    
    #define CONFIG_NVS_COUNT 2
    
    const NVS_Config NVS_config[CONFIG_NVS_COUNT] = {
        /* CONFIG_NVSINTERNAL */
        {
            .fxnTablePtr = &NVSCC26XX_fxnTable,
            .object = &nvsCC26XXObjects[0],
            .hwAttrs = &nvsCC26XXHWAttrs[0],
        },
        /* CONFIG_NVSEXTERNAL */
        {
            .fxnTablePtr = &NVSSPI25X_fxnTable,
            .object = &nvsSPI25XObjects[0],
            .hwAttrs = &nvsSPI25XHWAttrs[0],
        },
    };
    
    const uint_least8_t CONFIG_NVSINTERNAL_CONST = CONFIG_NVSINTERNAL;
    const uint_least8_t CONFIG_NVSEXTERNAL_CONST = CONFIG_NVSEXTERNAL;
    const uint_least8_t NVS_count = CONFIG_NVS_COUNT;
    
    
    
    /*
     *  =============================== PIN ===============================
     */
    #include <ti/drivers/PIN.h>
    #include <ti/drivers/pin/PINCC26XX.h>
    
    #define CONFIG_PIN_COUNT 15
    
    const PIN_Config BoardGpioInitTable[CONFIG_PIN_COUNT + 1] = {
        /* Parent Signal: CONFIG_DISPLAY_UART TX, (DIO3) */
        CONFIG_PIN_UART_TX | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MED,
        /* Parent Signal: CONFIG_DISPLAY_UART RX, (DIO2) */
        CONFIG_PIN_UART_RX | PIN_INPUT_EN | PIN_PULLDOWN | PIN_IRQ_DIS,
        /* Parent Signal: CONFIG_ADC_0 ADC Pin, (DIO23) */
        CONFIG_PIN_8 | PIN_INPUT_EN | PIN_NOPULL | PIN_IRQ_DIS,
        /* Parent Signal: CONFIG_GPIO_BTN1 GPIO Pin, (DIO18) */
        CONFIG_PIN_BTN1 | PIN_INPUT_EN | PIN_PULLUP | PIN_IRQ_DIS,
        /* Parent Signal: CONFIG_GPIO_BTN2 GPIO Pin, (DIO19) */
        CONFIG_PIN_BTN2 | PIN_INPUT_EN | PIN_PULLUP | PIN_IRQ_DIS,
        /* Parent Signal: CONFIG_GPIO_RLED GPIO Pin, (DIO14) */
        CONFIG_PIN_RLED | PIN_INPUT_EN | PIN_NOPULL | PIN_IRQ_DIS,
        /* Parent Signal: CONFIG_GPIO_GLED GPIO Pin, (DIO15) */
        CONFIG_PIN_GLED | PIN_INPUT_EN | PIN_NOPULL | PIN_IRQ_DIS,
        /* Parent Signal: ADS1114_RDY GPIO Pin, (DIO1) */
        CONFIG_PIN_4 | PIN_INPUT_EN | PIN_PULLUP | PIN_IRQ_DIS,
        /* Parent Signal: CHARGER_IC GPIO Pin, (DIO6) */
        CONFIG_PIN_5 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_OPENDRAIN | PIN_DRVSTR_MED,
        /* Parent Signal: CONFIG_I2C_0 SDA, (DIO5) */
        CONFIG_PIN_6 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
        /* Parent Signal: CONFIG_I2C_0 SCL, (DIO4) */
        CONFIG_PIN_7 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
        /* Parent Signal: CONFIG_GPIO_0 GPIO Pin, (DIO11) */
        CONFIG_PIN_0 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH | PIN_PUSHPULL | PIN_DRVSTR_MED,
        /* Parent Signal: CONFIG_SPI_0 SCLK, (DIO10) */
        CONFIG_PIN_1 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MED,
        /* Parent Signal: CONFIG_SPI_0 MISO, (DIO8) */
        CONFIG_PIN_2 | PIN_INPUT_EN | PIN_NOPULL | PIN_IRQ_DIS,
        /* Parent Signal: CONFIG_SPI_0 MOSI, (DIO9) */
        CONFIG_PIN_3 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MED,
    
        PIN_TERMINATE
    };
    
    const PINCC26XX_HWAttrs PINCC26XX_hwAttrs = {
        .intPriority = (~0),
        .swiPriority = 0
    };
    
    
    
    

    请帮我确认、谢谢。

    Lulu

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

    您好!

    对于简单外设片外负载应用、请确保设置正确的 SPI CS 引脚。 默认情况下、该设置为 DIO_20。 在 flash_interface.h 上、在以下定义中设置正确的值。

    /*!
     * Page size of external flash
     */
    #define EFL_PAGE_SIZE                       0x1000
    
    /*!
     * Total size of external flash
     */
    #define EFL_FLASH_SIZE                      0x100000
    

    在 BIM 片外负载项目 bsp.h 上设置正确的 SPI 引脚

    #define BSP_IOID_FLASH_CS       IOID_20
    #define BSP_SPI_MOSI            IOID_9
    #define BSP_SPI_MISO            IOID_8
    #define BSP_SPI_CLK_FLASH       IOID_10

    -kel

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

    尊敬的  Markel:

    网址为  flash_interface.h

    #define EFL_PAGE_SIZE                       0x1000
    
    #define EFL_FLASH_SIZE                      0x100000
    #else
    #define EFL_FLASH_SIZE                      0x8000000
    

    at BIM 片外 OAD 项目 bsp.h

    #define BSP_IOID_FLASH_CS       IOID_11
    #define BSP_SPI_MOSI            IOID_9
    #define BSP_SPI_MISO            IOID_8
    #define BSP_SPI_CLK_FLASH       IOID_10

    at simple_peripheral_oad_offchip.c

    Profile_SetParameter(PROFILE_RAWDATA,PROFILE_RAWDATA_LEN, send_data);
    NVS_write(nvsHandle, 0, (void *) send_data, sizeof(PROFILE_RAWDATA_LEN),NVS_WRITE_ERASE | NVS_WRITE_POST_VERIFY);

    Lulu

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

    尊敬的 Lulu:

    它在 BIOS_start ()之前挂起吗? 调试 main ()步骤并查看其挂起的位置。

    -kel

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

    尊敬的  Markel:

    在 Task_structure (&spTask、SimplePeripheral_taskFxn、&taskParams、NULL)之后;

    代码卡在  BIOS_start ()处

    Lulu

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

    您好!

    Task_structure()可能导致挂起。 原始的简单外设片外负载示例程序与 LaunchPad 搭配使用。 您进行的任何特定更改都可能导致此问题? 您可以将代码与原始代码进行比较。

    代码需要经过 main ()、然后转到这里的  SimplePeripheral_taskFxn ()。

    -kel

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

    您好!

    我使用了 flash_interface_ext_rtos_NVS.c 来解决我的问题。

    谢谢。此致、

    Lulu