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.

MSP432P401R LaunchPad 实测CC3120MOD 最大通信速率只有3Mbps, 请问如何提高?

Other Parts Discussed in Thread: CC3120

您好!

    我使用MSP432P401R的LAUNCHPAD , 通过这个例程C:\ti\simplelink_sdk_wifi_plugin_2_40_00_22\examples\rtos\MSP_EXP432P401R\demos\network_terminal\tirtos , 去评估CC3120MOD 的最大通信速率。

    经过实测最大带宽在2.5Mbps左右。通过示波器测量发现SPI的CLK时钟只有3MHz,进入程序调试后发现在SPIMSP432DMA_open()函数调用后限制了通信速率到3Mbps。

    由于本人对MSP432的DMA设置以及TIRTOS不是特别熟悉,请问如何修改例程能够提高CC3120的通信速率?

  • 您是想改变两者之间的SPI通信速率?

    您可以尝试改变SPI的时钟,如下

    MAP_CS_initClockSignal(CS_SMCLK,CS_H FXTCLK_SELECT,CS_CLOCK_DIVIDER_3); // 16MHz

     

  • 首先十分感谢回复!

    是的,我想要提高SPI的通信速率。
    我使用的例程中没有调用你说的函数,是通过SPI_open()进一步调用的SPIMSP432DMA_open()这个函数。
    我在调试时发现调用SPIMSP432DMA_open()函数之后SPI速率就被限制到了3M。

    其中还调用了一个函数Power_setConstraint(PowerMSP432_DISALLOW_PERF_CHANGES);
    不知是否跟这个限制有关?

    如果方便的话,麻烦看下程序如何修改相关的限制,十分感谢!
  • 在SPIMSP432DMA_open中调用了

      PowerMSP432_getFreqs(Power_getPerformanceLevel(), &powerFreqs);

    而在MSP_EXP432P401R.c中有如下定义

     *  =============================== Power ===============================
     */
    const PowerMSP432_ConfigV1 PowerMSP432_config = {
        .policyInitFxn = &PowerMSP432_initPolicy,
        .policyFxn = &PowerMSP432_sleepPolicy,
        .initialPerfLevel = 2,
        .enablePolicy = true,
        .enablePerf = true,
        .enableParking = true
    };

    默认情况下,我们使用2级

    *  @code
    *    Level    MCLK (MHz)    HSMCLK (MHz)    SMCLK (MHz)    ACLK (Hz)
    *    -----    ----------    ------------    -----------    ---------
    *      0         12              3              3           32768
    *      1         24              6              6           32768
    *      2         48             24             12           32768
    *      3         48             48             24           32768
    *  @endcode

    所有这些配置都将DC-DC调节器用作默认设置,因此,如果在VSW和VCORE引脚之间没有推荐的外部组件(如电感器),则可能会遇到一些问题。当禁用enablePerf时,设备将使用默认时钟,LDO和DCO @ 3MHz(SMCLK / MCLK来自DCO)。

    请在您的MSP_EXP432P401R.c中尝试添加以下代码

    *  =============================== Power ===============================
     */
    #include <ti/devices/msp432p4xx/driverlib/cs.h>
    #include <ti/devices/msp432p4xx/driverlib/pcm.h>
    
    PowerMSP432_PerfLevel myPerfLevels[] =
    {
     {
      .activeState = PCM_AM_LDO_VCORE1,
      .VCORE = 1,
      .clockSource = CS_DCOCLK_SELECT,
      .DCORESEL = CS_DCO_FREQUENCY_48,
      .DIVM = CS_CLOCK_DIVIDER_1,
      .DIVHS = CS_CLOCK_DIVIDER_2,
      .DIVS = CS_CLOCK_DIVIDER_4,
      .flashWaitStates = 1,
      .enableFlashBuffer = true,
      .MCLK = 48000000,
      .HSMCLK = 24000000,
      .SMCLK = 12000000,
      .ACLK = 32768
     },
    };
    
    const PowerMSP432_ConfigV1 PowerMSP432_config = {
        .policyInitFxn = &PowerMSP432_initPolicy,
        .policyFxn = &PowerMSP432_sleepPolicy,
        .initialPerfLevel = 4,
        .enablePolicy = true,
        .enablePerf = true,
        .enableParking = true,
        .customPerfLevels = myPerfLevels,
        .numCustom = sizeof(myPerfLevels) / sizeof(PowerMSP432_PerfLevel)
    };
  • 十分感谢指导!

    不过我按照您的做法添加代码后,程序好像运行异常了,不能正常建立AP。

    另外,我修改了spiBitRate为6M(原来是3M,之前通信速率上不去应该也是由于这个限制)后,通信速率能达到500KB以上了,基本满足我们的应用需求。

    修改位置:

    MSP_EXP432P401R.c文件中的

    const SIMPLELINKWIFI_HWAttrsV1 wifiSimplelinkHWAttrs =
    {
        .spiIndex = MSP_EXP432P401R_SPIB0,
        .hostIRQPin = MSP_EXP432P401R_HOST_IRQ,
        .nHIBPin = MSP_EXP432P401R_nHIB_pin,
        .csPin = MSP_EXP432P401R_CS_pin,
        .maxDMASize = 1024,
        .spiBitRate = 6000000  //////原 3000000
    };

    继续更改12M以后仍然出现通信异常,可能是主频和SMCLK设置的匹配问题导致的。

    再次感谢!


  • 很抱歉,由于对CC3120 wifi部分不太熟悉,所以无法就“不能正常建立AP”给出建议。

    若是有类似的WiFi问题,您可以将WiFi部分描述后发到无线连接的wifi版块

    很高兴之前能帮到您
  • 你好,还有个问题麻烦请教一下:

    我用CC3120 作为AP建立了一个TCP server, 笔记本电脑这边作为 client连接之后能够正常通信收发数据。

    但是client主动断开TCP连接之后,server并不知道,所以client再次请求连接的时候就连接不上了。

    我查了CC3120的资料,还没发现有哪个函数能够查询网络连接状态。

    谢谢!

  • 这个文件建议您去WIFI模块发帖,会有对应的工程师为您解答