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.

[参考译文] LP-MSPM0L1306:SPI 通信 SDK 示例

Guru**** 2442090 points
Other Parts Discussed in Thread: MSPM0G3507, MSPM0L1306

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1248723/lp-mspm0l1306-spi-communication-sdk-example

器件型号:LP-MSPM0L1306
主题中讨论的其他器件:MSPM0G3507MSPM0L1306

您好!

我想在 MSPM0L1306 (控制器)和 MSPM0G3507 (外设)之间使用 SPI 寄存器格式示例。 我使用 SDK 1.10

我通过连接的跳线正确地连接了引脚。

首先、我让 SPI 外设寄存器格式在 G3507上运行。 我使用 CCS 12.4。

然后让 SPI 控制器寄存器格式在 L1306上运行。 我使用 CCS 12.3、因为我不能让两个调试在同一个 CCS 上运行。

但读取和写入都不起作用。  这样做的原因是什么?

提前感谢、此致

TIL

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

    您好、

    不确定、但您是否有任何方法来查找信号(逻辑探头、示波器)?

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

    Pico 似乎完全符合预期、没有问题。 但是 POCI 却在做一些奇怪的事情。  

    第一个回复是正确的、但以下回复发送的数据从未在该软件中定义。 第二次回复的地址应为0x15 0x16、第三次回复的地址应为0x0C。

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

    您好、

    这种行为似乎表明 G3507 (外设)正在将前几个字节正确加载到其 SPI TXBUF 中、但以下字节不正确。

    这些示例来自 SDK、因此您是否修改了原始示例代码、或者这种行为是否没有进行任何修改? 如果您确实进行了修改、但代码足够小、您可以将 G3507外设代码发布出来吗?我来看看。

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

    您好、Dennis、

    我只做了以下更改:

    我在控制器板的代码中的 while (1)中添加了连续读取命令。

    但即使是 while 循环之前的命令也无法获得正确的结果

    /*如果写入和读取成功,切换 LED */
    while (1){
    DL_GPIO_togglePins (GPIO_LEDS_PORT、GPIO_LEDS_USER_LED_1_PIN);
    delay_cycles (16000000);
    SPI_Controller_readReg (CMD_READ_TYPE_2、TYPE_2_LENGTH);
    CopyArray (gRxBuffer、gCmdReadType2Buffer、TYPE_2_LENGTH);

    /*
    *向外围设备发送读取类型1命令。
    *将接收到的数据复制到 gCmdReadType1Buffer。
    */
    SPI_Controller_readReg (CMD_READ_TYPE_1、TYPE_1_LENGTH);
    CopyArray (gRxBuffer、gCmdReadType1Buffer、TYPE_1_LENGTH);

    /*
    *向外围设备发送读取类型0命令。
    *将接收到的数据复制到 gCmdReadType0Buffer。
    */
    SPI_Controller_readReg (CMD_READ_TYPE_0、TYPE_0_LENGTH);
    CopyArray (gRxBuffer、gCmdReadType0Buffer、TYPE_0_LENGTH);

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

    这是 while 环路之前的完整 SPI 通信。 请注意、通道02是 MISO、通道3是 MOSI

    在 while 循环内部、仅  发送第一个命令、然后控制器等待中断、不执行任何操作。

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

    更新:增加两次读取之间的时钟周期数时、这些值会正确发送

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

    您好、

    好的、这听起来像是增加控制器执行读取操作之间的延迟、就是为外设提供额外的时间、以便使用正确的值填充其 TX 缓冲区。

    这是你唯一的问题吗?

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

    您好、Dennis、

    是的、现在通信按预期运行

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

    非常棒!  很高兴听到您能够继续前进。