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.

[参考译文] CCS/CC2640:较低的 CC2640 SPI 时钟

Guru**** 2578945 points
Other Parts Discussed in Thread: CC2640, ADS1292

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/572182/ccs-cc2640-lower-cc2640-spi-clock

器件型号:CC2640
主题中讨论的其他器件: ADS1292

工具/软件:Code Composer Studio

您好!  

不熟悉 CC2640和 Sensor Controller Studio。 通过 SPI 总线从 ADS1292读取数据。  

我们需要将 SPI 时钟降低至低于512KHz。 不知道怎么做。  

我在 TI 论坛中搜索了一段时间、注意到很少讨论 SPI 时钟速率、但没有找到将其降低到512KHz 以下的明确解决方案。

感谢你的帮助。

David Sun

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 David:
    我相信您不需要降低时钟。 请参阅以下两个帖子:
    e2e.ti.com/.../1657723
    e2e.ti.com/.../1792301
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您可以将比特率更改为低于4M (slave)/12M (master)的任何值。

    当您使用 TI-RTOS 附带的 SPI 驱动程序时、您可以通过在初始化步骤中更改比特率字段来轻松设置比特率

    * PIN_Handle pinHandle;
    * SPI_Handle handle;
    * SPI_Params 参数;
    * SPI_Transaction 事务;
    * uint8_t txBuf[]="Heartbeat ";//传输缓冲
    区* uint8_t rxBuf[9]; //接收缓冲
    区* PIN_ID MisoPinId;
    * uint32_t standbyDurationMs = 100;
    *
    //初始化 SPI 并指定非默认参数
    * SPI_Params_init (&params);
    * params.bitrate = 1000000;//使用您想要的任何内容,只要它在规格范围
    内* params.frameFormat = SPI_POL1_PHA1;
    * params.mode = SPI_MASTER;
    *
    //配置事务
    * transaction.count = sizeof (txBuf);
    * transaction.txBuf = txBuf;
    * transaction.rxBuf = rxBuf; 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Christin、
    他指的是 Sensor Controller Studio;)。
    但是、如果您选择使用 TI-RTOS SPI 驱动程序而不是 David、这是一个有效的问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好、Erik

    对于第一个线程不会应用于外壳、我们不在电路板上实施外部晶体。 我们必须使用内部512K 时钟。  

    1792301的第二个线程对于我来说有点复杂、无法通读、可能会再次重复我的问题。 我使用的是具有内部时钟512K 的 ADS1292。  

    MCU CC2640。 当我们使用 SPI 与 ADS1292进行通信时、我们注意到时钟高于 ADS1292数据表要求、内部时钟仅支持高达1MHz 的 SPI 时钟。

    如果您在/1792301中提到的线程说明了如何使其在内部512K 时钟情况下工作。 然后、我将坐下来、花一些时间逐行阅读该链接。  

    谢谢、

    David Sun

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

    尊敬的 David:
    ADS1292上的通用 SPI 速率限制为最大20MHz:
    tSCLK - SCLK 周期50 66.6ns

    数据表中还有其他注意事项和规则、您必须仔细研究这些事项和规则才能使其正常工作。 例如、在寄存器读取或写入期间、SPI 接口可运行的速度(SCLK 只能是 fCLK 速度的两倍、因此在 Sensor Controller Studio 中使用1.1MHz 的平衡选项)。 如果您找到一些有用的信息、请阅读我在上面发布的链接的主题帖。

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

    你(们)好、Erik

    一个线程中。 我复制了这里、以便于参考。 我们使用的是 ads1292的内部时钟。 因此、如果我理解正确、最大 PCI 时钟为512kHz。 但 SPI 的传感器控制器最小时钟为1.1Mhz。  是否可以使用传感器控制器来驱动 ADS 1292 SPI 时钟?  

    “是”或“否”,请回答。

    David

    您好、Simon、
    您能显示波形吗?
    您是否将 ads1292配置 为使用2MHz 的外部时钟? 我认为 ads1292上的内部时钟 不支持 SPI 时钟超过512kHz:

    "在寄存器读取和写入期间、SCLK 的速度只能是 fCLK 的两倍。 要实现更快的 SPI 接口、请使用 fCLK = 2.048MHz 并将 CLK_DIV 寄存器位(在 LOFF_STAT 寄存器中)设置为"1"。

    www.ti.com/.../ads1292.pdf

    此致、Erik

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 David:
    我没有测试过它、因此我不知道它是否起作用。 但您可以尝试从 Sensor Controller Studio 安装路径复制和修改 SPI 过程。 在此处查找 SPI 程序:
    C:\Program Files (x86)\Texas Instruments\Sensor Controller Studio\proc_defs
    并制作您在此处放置的副本:
    %USERPROFILE%\Documents\Texas Instruments\Sensor Controller Studio\proc_defs

    然后、您可以通过在汇编中的战略位置添加 NOP 来修改 SPI 程序、从而降低比特率。 对于平衡选项、原始频率基于大约1.1MHz。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好、Erik
    非常感谢您提供详细的答案。 我不希望您立即为我提供逐行代码。 我只是想确认这个解决方案可以正常工作、或者可以确定工作方向、以便我可以深入研究。 如果有人已经证明这不起作用、这将浪费时间。 我将在这里尝试您的建议。 感谢你的帮助。

    David Sun