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.

[参考译文] CC3220SF-LAUNCHXL:CC3220SF-LAUNCHXL

Guru**** 2589275 points


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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/770722/cc3220sf-launchxl-cc3220sf-launchxl

器件型号:CC3220SF-LAUNCHXL

您好!

我有一个外设、需要在向其写入命令后更改 SPI 时钟频率、下图中也是如此。  

是否有一种使用 TI 库实现此目的的简单方法?

谢谢、

Kishore。

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

    为什么不通过 SPI 发送八个虚拟字节?

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

    我需要发送两条命令、首先是数据、然后只是频率不同的时钟、这两条命令都需要在不改变 CS 信号的情况下发生。
    从上图中、我需要发送精确的命令11000010 (0xC2)、然后不将 CS 更改为低电平、我需要在接下来的65个周期内更改时钟频率。


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

    实际频率需要有所不同? 你确定吗? 因为最简单的方法是将频率设置为参考时钟、并且使用相同的频率发送第一个命令0xC2。

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

    您好 Kishore、

    要切换 SPI 时钟速度、您需要先关闭 SPI 接口、然后使用新的时钟速率重新打开 SPI 接口。 这可以通过更改 SPI 开放参数中的.bitrate 来实现。

    由于您提到切换期间不得将 CS 信号取消置位、因此确保 CS 信号成为软件控制的 GPIO 的最简单方法。 为此、请使用软件控制的 CS 将 SPI 外设设置为三线模式。 SPI CS 设置在 spiCC3220SDMAHWAttrs 结构中的 CC3200SF_LAUNCHXL.c 中完成。 请使用以下设置:

    {
    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_OFF、
    scratchBufPtr =&spiCC3220SDMAscratchBuf[CC3220SF_LAUNCHXL_SPI1]、
    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
    } 

    然后、在 同一文件的 gpioPinConfigs 结构中配置 GPIO。 如果您希望在 PIN8上保持 CS、则将 GPIO17配置为输出。 这样,您就可以使用 GPIO_write()在代码中需要时将 CS 置为有效。

    请告诉我您是否需要进一步澄清或对该主题有进一步的问题。

    此致、

    Michael

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

    谢谢您的建议、我将尝试一下。
    我也有疑问、我将使用4引脚模式进行之前的 SPI 写入/读取。 此更改是否会影响先前的写入/读取?
    我是否需要为每次 SPI 写入更改 CS 引脚?

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

    3引脚设置在编译时设置的结构中完成。 因此、此更改将影响所有 SPI 功能。 需要时、您需要手动切换 CS GPIO。 这并不一定意味着您需要为传输中的每个 SPI 字切换 CS 引脚。 一些外设能够连续处理多字传输的 CS 置位。 您必须查看外设的数据表以了解其预期结果。

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

    我对其他 SPI 操作进行了 CS 更改、其工作方式与之前相同。
    根据您的建议、我可以在不更改 CS 引脚的情况下更改时钟频率。
    我需要连续的时钟周期65个周期,我在调用 SPI_TRANSFT()函数之前尝试增加 transaction.count 变量。
    但是、我得到的相应时钟的最大数量是32。

    我是否有任何方法可以在没有空闲时间的情况下获得连续时钟周期。

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

    没有办法让 SPI 控制器在没有小延迟的情况下发送超过32个连续时钟。 这是因为支持的 SPI 字的最大大小为32位、之后、SPI 控制器将需要准备好下一个32位字进行传输。

    此时、您可能需要使用 PWM 信号来发送所需的连续时钟。 查看 pwmled2示例、了解如何使用 PWM 外设。

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

    您好、Michael、

    1)我使用引脚5 (GPIO_14)作为 SPI 时钟,能否在此引脚上生成 PWM 波形。

    如果我可以在同一条线路上使用 PWM、请建议我怎么做。

    2) 2)另一种方法是、我将所有4个引脚用作 GPIO、而不是使用 SPI 库。 我能够写入和读取数据、主要 是我可以在写入0xC2命令后改变时钟、问题是 GPIO 切换不一致、我不符合计时要求、每个周期需要32us。 有时我得到32us、有时我得到31.8us。

    请查看以下快照以获取相同的快照

    代码中的延迟在切换之间是相同的。 不过、我还是看到了时间差异。

    是因为 GPIO_toggle 函数添加了延迟。 如果是、您可以建议我使用其他方法吗?

    谢谢、

    Kishore。

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

    鉴于具有的外设使用 SPI 时钟信号作为校准的参考时钟、我认为您不希望在软件中使用 GPIO 切换、因为您很可能无法在器件的容差范围内获取时序。 我建议设置 PWM。

    遗憾的是、引脚5无法配置为 PWM 引脚。 您将需要使用另一个支持配置为 PWM 的引脚。 如果您查看 TRM 的表16-7:
    www.ti.com/.../swru465.pdf
    您将看到每个引脚的各种多路复用功能。 例如、引脚1可配置为 PWM 输出。

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