请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:CC3220SF-LAUNCHXL 您好!
我一直在使用 NVS 驱动程序将一些配置数据写入外部闪存(MX25R3235F)。 我能够成功地访问 NVS_INIT、NVS_OPEN、但无法写入。
NVS_WRITE 返回-7 (NVS_STATUS_INV_WRITE)错误。
NVS 和 SPI 配置如下:
/* ================================================ NVS ================================================ */ #include #include // * NVSSPI25X 外部 NVS 闪存区域定义 *// * 提供大小 为*指定最大验证缓冲区大小的写入验证缓冲区 */ static uint8_t verifyBuf[256]; NVSSPI25X_Object nvsSPI25XObjects[1]; static const NVSSPI25X_Attrs = nHW1 /* Board_NVS0 */ { regionBaseOffset = 0x0、 .regionSize = 0x1000、 sectorSize = 0x1000、 verifyBuf = verifyBuf、 verifyBufSize = 256、 /* NVS 打开 SPI */ .spiHandle = NULL、 /* SPI 驱动程序索引*/ spiIndex = Board_SPI0、 spiBitRate = 2000000、 /* GPIO 驱动器引脚索引*/ spiCsnGpioIndex = Board_GPIO0、 .statusPollDelayU = 100 }、 }; #define Board_NVSCOUNT 1 const NVS_Config NVS_CONFIG[Board_NVSCOUNT]={ /* Board_NVS0 */ { .fxnTablePtr =&NVSSPI25X_fxnTable、 .object =_nvsSPI25XObjects[0]、 hwAttrs =&nvsSPI25XHOWAttrs[0]、 }、 }; const uint_least8_t NVS_count = Board_NVSCOUNT; /* ================================================== SPI ======================================================== */ #include #include #include #include #include #include #include #include #define Board_SPICOUNT 2 /* === spiCC32XXDMAObjects === */ SPICC32XXDMA_Object spiCC32XXDMAObjects[Board_SPICOUNT]; uint32_t spiCC32XXSDMAscratchBuf[Board_SPICOUNT]; /* *=== spiCC32XXDMAHWAttrs === */ const SPICC32XXDMA_HWAttrsV1 spiCC32XXDMAHWAttrs[Board_SPICOUNT]={ /* Board_NWP_SPI * /*网络处理器 SPI 总线*/ { baseAddr = LSPI_base、 .intNum = INT_LSPI、 .intPriority =(~0)、 spiPRCM = PRCM_LSPI、 .csControl = SPI_SW_CTRL_CS、 csPolarity = SPI_CS_ACTIVEHIGH、 .pinMode = SPI_4PIN_MODE、 .TurboMode = SPI_Turbo_OFF、 .scratchBufPtr =&spiCC32XXSDMAscratchBuf[0]、 defaultTxBufValue = 0、 .rxChannelIndex = UDMA_CH12_LSPI_RX、 txChannelIndex = UDMA_CH13_LSPI_TX、 .minDmaTransferSize = 100、 .mosipin = SPICC32XXDMA_PIN_NO_CONFIG、 MISO 引脚= SPICC32XXDMA_PIN_NO_CONFIG、 clkPin = SPICC32XXDMA_PIN_NO_CONFIG、 csPin = SPICC32XXDMA_PIN_NO_CONFIG }、 /* GSPI */ { baseAddr = GSPI_base、 .intNum = INT_GSPI、 .intPriority =(~0)、 spiPRCM = PRCM_GSPI、 .csControl = SPI_SW_CTRL_CS、 csPolarity = SPI_CS_ACTIVELOW、 .pinMode = SPI_3PIN_MODE、 .TurboMode = SPI_Turbo_ON、 .scratchBufPtr =&spiCC32XXSDMAscratchBuf[1]、 defaultTxBufValue =~0、 .rxChannelIndex = UDMA_CH6_GSPI_RX、 txChannelIndex = UDMA_CH7_GSPI_TX、 .minDmaTransferSize = 10、 .mosipin = SPICC32XXDMA_PIN_07_MOSI、 MISO 引脚= SPICC32XXDMA_PIN_06_MISO、 clkPin = SPICC32XXDMA_PIN_05_CLK、 csPin = SPICC32XXDMA_PIN_NO_CONFIG }、 }; /* === SPI_CONFIG === */ const SPI_Config SPI_CONFIG[Board_SPICOUNT]={ { .fxnTablePtr =&SPICC32XXDMA_fxnTable、 .object =&spiCC32XXDMAObjects[Board_NWP_SPI]、 hwAttrs =&spiCC32XXDMAHHWAttrs[Board_NWP_SPI] }、 /* Board_SPI0 */ { .fxnTablePtr =&SPICC32XXDMA_fxnTable、 .object =&spiCC32XXDMAObjects[Board_SPI0]、 hwAttrs =&spiCC32XXDMAHHWAttrs[Board_SPI0] }、 }; const uint_least8_t SPI_count = Board_SPICOUNT;
如何解决此问题?