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.

[参考译文] CC2642 SPI 写入 EEPROM 问题

Guru**** 2482225 points


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

https://e2e.ti.com/support/rf-microwave-group/rf-microwave/f/rf-microwave-forum/748935/cc2642-spi-write-eeprom-problem

您好、教授、

软件:ccs8.2 和 simplelink_cc26x2_sdk_2_30_00_34

在我的设计中、cc2642通过 SPI 总线控制 EEPROM。我使用 spimaster_CC26X2R1_LAUNCHXL_tirtos_ccs 命名的示例来实现它。 但是、无论 transaction.count 是什么、我一次只能向 EEPROM 写入十个数据。 如下图所示、我将 transaction.count 设置为20。 请给我一些建议。

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

    您尝试与哪些 EEPROM 通信(器件型号、制造商)? 当您说您只能写入10个字节时、这是因为您遇到事务错误、还是基于其他一些观察结果?

    我会查看 EEPROM 数据表并问自己一个问题:"写入这20个字节的数据时、我希望得到什么结果"。 请记住、SPI 总线是全双工的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、M-W,
    EEPROM 是 M95512RDW6。 我向 EEPROM 发送20字节的数据、当我读回时、它只能读取10个正确的数据、而另外10个数据为0xFF。 在由 spiCC26X2DMAHWAttrs 命名的数组中、我找到.minDmaTransferSize=10。 但我将参数设置为20、情况仍然如此。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Sunny、

    您正在与器件通信什么? 您是否已仔细检查发送到器件的指令和地址是否与您尝试执行的操作正确? 在上面的代码片段中、您只显示 TX、而不是大多数情况下预期的 TX/RX 操作。

    关于"minDmaTransferSize"、这与您可以传输的最大字节数无关。 此变量标记驱动程序将从使用"轮询"传输模式移动到使用 DMA 的点。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、M-W、
    通过设置大于就绪发送数据大小的 minDmaTransferSize 值可以解决此问题。 我做了一个实验、将128字节的数据写入 EEPROM 并将 minDmaTransferSize 值设置为200、这是成功的。 但是、当我修改不超过128字节的 minDmaTransferSize 值时。 出现问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您如何实现芯片选择、是否使用硬件或软件控制的 CS?

    两者之间的主要区别(假设您使用软件控制的 CS)是时序、如果在使用 DMA 时不起作用、则可能存在时序问题、即每个字节之间增加的延迟足以使其正常工作。

    如果您使用的是硬件控制 CS (即在 spiCC26X2DMAHWAttrs 表中分配 CS 引脚)、则这两种模式之间的行为将非常不同、因为轮询将在每个字节之间切换 CS。

    我建议您在这两种情况下对 SPI 线路进行范围划分、并查看轮询和 DMA 之间以及 EEPROM 如何应答之间是否存在明显差异。 如果您可以提供两种情形的跟踪、那将会非常好。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、M-W、
    我使用 SW 来控制 CS.In the spiCC26X2DMAHWAttrs table I assign CS pin as PIN_Unassigned。 我不知道 DMA 和 SPI 总线的软件和硬件之间有何不同。您是否有任何说明文档? 我可以尝试并提供这两种情况的跟踪。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Sunny、

    让我们看看您是否可以生成这些迹线、我们可以查看它们。 使用 SW CS 时的差异不应是字节之间的时序之外的任何其他差异。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、M-W、  

      我知道 SPI_TRANSFT()何时返回值。

    当我在 spiCC26X2DMAHWAttrs 表中分配 CS 引脚时(使用 HW CS)、我无法读取 EEPROM 数据。如图所示、它使用 SW CS。 我重新定义了 HW CS 上的引脚。

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

    我希望在这种情况下、当您具有 HW CS 并使用轮询模式时(无论您发送的帧数是否小于 minDmaTransferSize 帧数)、CS 都会在每个帧之间切换。 使用 SW 时、我想您应该在整个传输过程中将信号保持在低电平。

    如果您要使用 HW 和 DMA (将 minDmaTransferSize 降低为1)、结果是什么? 在这种情况下、CS 应在整个事务期间保持低电平。

    PS、这些逻辑布线在这里很好、因为它们会显示 SW 和 HW CS 之间的差异。