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.

[参考译文] MSPM0G3507-Q1:SPI 通信无法读取 RXDATA 寄存器

Guru**** 2391825 points
Other Parts Discussed in Thread: MSPM0G3507-Q1, ADS8688, MSPM0G3507

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1493469/mspm0g3507-q1-the-spi-communication-cannot-read-the-rxdata-register

器件型号:MSPM0G3507-Q1
主题中讨论的其他器件: ADS8688MSPM0G3507

工具/软件:

我当前正在使用 MSPM0G3507-Q1芯片的 SPI 功能;下面是我的功能简介、我将 MSPM0G3507-Q1设置为主机、将 ADS8688设置为从器件、主机发送命令代码(0x00000000、0xA0000000)、数据从从从从器件收集并返回到主机。 这是我预期的过程、但在使用期间、我无法接收机器返回的数据(确切地说、我在程序中设置了接收中断、并在中断中添加了断点验证、进入中断是正常的、但我无法读取 RxData 寄存器中的数据、检测到 RXFIFO 的状态、无法读取 RXDATA 寄存器中的数据。 它显示为非空)。 我使用了从机器中的示波器 PICO、POCI、CLK、CS 引脚来显示波形是否正确。 原因是什么? 如何应对?
下面是我的程序代码和示波器图片的一部分

//Initial configuration of SPI
void SPI0_INIT()
{
    //设置时钟源和分频
    mySPI0->CLKSEL.bit.SYSCLK_SEL=1;
    mySPI0->CLKDIV.bit.RATIO=0;

    mySPI0->CTL0.bit.CSSEL=1;    //CS线的选择
    mySPI0->CTL0.bit.DSS=0xF;    //数据尺寸
    mySPI0->CTL0.bit.SPH=1;      //极性相位
    mySPI0->CTL0.bit.SPO=0;
    mySPI0->CTL0.bit.FRF=1;      //传输帧格式,
    mySPI0->CTL1.bit.PES=0;      //偶数奇偶校验模式
    mySPI0->CTL1.bit.CP=1;       //控制器或外设模式选择
    mySPI0->CTL1.bit.PTEN=0;     //发送奇偶校验
    mySPI0->CTL1.bit.PREN=0;     //接收奇偶校验
    mySPI0->CTL1.bit.MSB=1;      //传输的开始端,高位优先

    //串行时钟分频器:用于产生SPI的发送和接收比特率
    mySPI0->CLKCTL.bit.SCR=0xE;

    //设置RX和TX FIFO中断阈值级别
    mySPI0->IFLS.bit.RXIFLSEL=0x2;
    mySPI0->IFLS.bit.TXIFLSEL=0x2;

    //使能接收中断
    //mySPI0->C_IMASK.reg=0xFF;
    //mySPI0->C_IMASK.bit.TXEMPTY=1;
    mySPI0->C_IMASK.bit.IDLE=1;
    mySPI0->C_IMASK.bit.RX=1;
    //mySPI0->C_IMASK.bit.RXFULL=1;
    //mySPI0->C_IMASK.bit.DMA_DONE_RX=1;

    //使能
    mySPI0->CTL1.bit.ENABLE=1;
}


//Interrupt part
switch (mySPI0->C_IIDX.bit.STAT)
    {
        case 0x4:                                    //接收中断
        {
            ALLFC.P01.FC[10]++;//mySPI0->C_IMASK.reg;
            SPI.RxCount--;
            SPI.RxDataW[SPI.RxCount]=mySPI0->RXDATA;
            if(SPI.RxCount==0)
            {
                ALLFC.P01.FC[11]++;
                SPI.TimeOut=0;
                SPI_RX();
            }
            break;
        }
        
        
        
//Sending part
void    SPI_TX32(Uint32 _Data)              //SPI发送函数
{
    if(SPI.Busy) return;
    SPI.TxD32=_Data;
    SPI.TxCount=2;
    SPI.RxCount=2;

    mySPI0->TXDATA = SPI.TxDataW[1];
    mySPI0->TXDATA = SPI.TxDataW[0];
    SPI.Busy=5;
}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Unknown 说:
    主机发送命令代码(0x00000000、0xA0000000)

    这更有必要。

    我在上一篇文章中想知道为什么发送的数据全为0、这是因为此命令。

    第一步、请先浏览以下介绍内容:

       https://blog.csdn.net/Naisu_kun/article/details/118102844

       https://blog.csdn.net/as480133937/article/details/105764119

      SPI 是 全双工通信总线、这意味着当您发送数据时、将收到无效数据。

    第二步、请完成 ADS 配置步骤。

      确保我已经正确配置了 ADS 器件、然后可以通过 向它发送命令来启动 ADS 转换。

      您可以在这里获取 ADS 器件的说明: https://www.ti.com/lit/ds/symlink/ads8688.pdf

      8.4.1.1数字引脚说明

       8.4.1.2数据采集示例是我们需要控制 ADS 器件的 SPI 通信序列。

      您需要按照 8.4.1.2数据采集示例中的步骤控制 MSPM0的 SPI。

    区域1用于向 ADS 发送命令、您也可以从 Rx 接收一些无用的数据。

    此外、在区域2中、要从 ADS 读取数据、您需要发送一些无用的数据(如0xFF 或0x00)来启用 SCK、这样时钟就处于运行状态、以便 ADS 有机会发回数据。

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

    Mark:下面是另一个 E2E 主题、其中包含此命令的一些有用范围图。

    Unknown 说:
    ]我将 MSPM0G3507-Q1设置为主机、将 ADS8688设置为从器件、主机发送命令代码(0x00000000、0xA0000000)

    e2e.ti.com/.../mspm0g3507-q1-the-spi-communication-cannot-read-the-rxdata-register

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

    我当前的情况是从器件可以发送数据、在另一篇文章中、示波器的 POCI 引脚波形证明了这一点(数据正确)、我现在可以触发 SPI 接收中断、但无法在 RXDATA 寄存器中读取数据

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    区域1用于向 ADS 发送命令、您还可以从 Rx 收到一些无用的数据。

    是否清除区域1中提到的无用数据?

    另一个方面是、您通过 SPI 向 ADS 发送了多少个字节?

        由于命令为 0x00000000、0xA0000000、至少您需要发送8个字节的命令。

        您想从 ADS 读回2*32位吗?

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

    1:这种无用的数据是什么意思? (对于 ADS8688、技术手册中已经解释了函数代码0x00000000、它如何无用数据?)

    2:我通过 SPI 发送32位数据到 ADS (我没有启用 PACKEN ),我想从 ADS 读取2*16位

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1:这个无用的数据是什么意思? (对于 ADS8688、技术手册中已经解释了函数代码0x00000000、它如何无用数据?)

    无效的数据或无用的数据,这部分数据是无用的,数据没有任何影响。

    2:我通过 SPI 向 ADS 发送了一个32位数据(我没有启用 PACKEN ),我想从 ADS 读取2*16位数据

    您能告诉我这个软件步骤吗?

    因此、在硬件上、从发送到接收完成、您完全只发送32位数据?

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

    软件步骤:我将计时器事件设置为每1ms 发送一次数据(上述代码的发送函数)、还将 SPI 接收中断设置为接收数据(接收上述代码的中断)。 接收到数据后、数据存储在 spi.rxdataw 数组中。 在 main 函数的循环中、处理 spi.rxdataw 数组。 这是一个完整的过程

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件步骤:我将计时器事件设置为每1ms 发送一次数据(上述代码的发送函数)、还将 SPI 接收中断设置为接收数据(接收上述代码的中断)。 接收到数据后、数据存储在 spi.rxdataw 数组中。 在 main 函数的循环中、处理 spi.rxdataw 数组。 这是一个完整的流程

    似乎您仅发送32位命令、但如果您需要读回某些内容、则需要发送更多内容才能启用时钟。

    我通过 SPI 向 ADS 发送了一个32位数据(我未启用 PACKEN)、我想从 ADS
    读取2*16位数据

    根据这一要求、您需要发送一个32位来发送命令、并从 M0到 ADS 再发送2*16位0x00或0xFF、以启用时钟、读回数据。

    全双工通信总线

    请浏览这些内容。

    [引用 userid="571933" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1493469/mspm0g3507-q1-the-spi-communication-cannot-read-the-rxdata-register/5736575 #57365775"]

    第一步、请先浏览以下介绍内容:

       https://blog.csdn.net/Naisu_kun/article/details/118102844

       https://blog.csdn.net/as480133937/article/details/105764119

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

    根据在另一个 POST 中收集的示波器波形图像、我的发送过程是发送0xA0000000一次、然后发送0x00000000八次。 在另一种类型的芯片上验证 SPI 通信代码的逻辑流程、然后移植到 MSPM0G3507。 当我的 RXFIFO 检查时、显示不为空、但也可以触发中断、指示数据已返回、这种推理不是问题。 但它无法在 RXDATA 寄存器中读取、这就是问题所在

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

    请尝试设置一个大型 Rx 缓冲区。

    从发送 0xA0000000到完成8次0x00000000、将有来自 SPI 的36字节 Rx 数据。

    请检查这些 Rx 数据。

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

    1:I 将 FIFO 阈值设置为1/2、存储2个16位条目、

    2:我当前的问题是无法在软件端接收 RXDATA 寄存器的数据、只能在示波器上查看。 这正是我来到这个论坛要解决的问题、如何获得 RXDATA (RXFIFO 不为空状态)的数据

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

    对于当前情况、我建议您按照自述文件说明尝试来自 MSPM0 SDK 的 SPI 演示代码。

    设置一个可以成功运行 SPI 读/写测试的测试环境。

    然后、我们可以尝试逐步转到您的客户代码和客户 PCB 板。

    我已经完成了您的 SPI 源代码、似乎没问题。

    此外、您可以通过 TI 的 FAE 向我发送您的 CCS 项目、我可以帮助我进行审核、但这可能需要几天的时间。

    1:我将 FIFO 阈值设置为1/2、存储2个16位条目、

    这将只接收区域1的无用数据。  发送命令 0xA0000000时接收的数据。

    但我仍然不知道如何控制 ADS、这取决于 ADS 的数据表、例如

    需要将多少字节作为命令发送到 ADS、需要从 ADS 接收多少字节。

    但从上面的图中可以看出:

    命令似乎为16位、接收的数据取决于 ADS 器件编号。

    从发送到读取完成、Valib 数据应为17位至32位。

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

    如何将 CCS 工程发送给您

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

    我收到了您的项目、需要花几天时间进行审核。

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

     SPI.RxCount 需要设置 TX_COUNT + Rx_COUNT。

     SPI.RxCount[TX_COUNT]处将有有效数据。

    对于  mySPI0->TXDATA、它是最大16位宽的寄存器、您不能向它写入32位。

    请参阅 MSPM0 SDK 演示代码以了解 SPI 功能句柄:

    C:\ti\mspm0_sdk_2_04_00_06\examples\nortos\LP_MSPM0G3507\driverlib\spi_controller_multibyte_fifo_poll

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

    关于该值的1:电阻器是 SPI.RxCount 值、其设置为 TX_COUNT + Rx_COUNT 的加号

    You  SPI.RxCount 需要设置 TX_COUNT + Rx_count。

    2:我知道 mySPI0->TXDATA 是其位宽的寄存器。 发送后、我将一个32位数据分成16个高位和16个低位。

    对于  mySPI0->TXDATA、它是一个最大16位宽的寄存器、您不能向它写入32位。

    在第三点3:、您是指使用 for 循环在中断后读取和接收数据

    [引述 userid="571933" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1493469/mspm0g3507-q1-the-spi-communication-cannot-read-the-rxdata-register/5741855 #5741855"]

    请参阅 MSPM0 SDK 演示代码以了解 SPI 功能句柄:

    C:\ti\mspm0_sdk_2_04_00_06\examples\nortos\LP_MSPM0G3507\driverlib\spi_controller_multibyte_fifo_pol

    [/报价]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    关于这一点、是 spi.RxCount 的值设置为 tx_count + rx_count
    的加号

    是的

    2:我知道 mySPI0->TXDATA 是位宽的寄存器。 发送时、我将一个32位数据拆分为16个高位和16个低位。

    是、TX32功能正确。

    在第三点、您是指使用 for 循环在中断之后读取和接收数据吗

    不、只是一个供您参考的代码、但我再次检查您的代码、 SPI_TX32的 send 函数是正确的。

    您需要做的是、您需要处理区域1的数据、并根据您想要从 ADS 读回的数据数量向 TX 发送更多数据。

    因此、Rx 计数和 TX 计数需要遵循以下顺序:

    此外、对于接收函数、您还需要调用  SPI_TX32来接收数据。

    但是、您只调用 SPI_TX32 (SpiTxData);一次来发送命令、我没有找到任何其他 SPI send 函数。

    这是关键点、SPI 需要发送一些内容、输出 SCLK、让 ADS 利用时钟信号将 ADC 数据发送回。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引述 userid="571933" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1493469/mspm0g3507-q1-the-spi-communication-cannot-read-the-rxdata-register/5744167 #5744167"]

    您需要做的是、您需要处理区域1的数据、并根据您想要从 ADS 读回的数据数量向 TX 发送更多数据。

    因此、Rx 计数和 TX 计数需要遵循以下顺序

    [/报价]

    此时、我的从器件目前只有一个 ADS8688采集芯片、我上传的示波器图片相当于区域1中的0xA000;在区域2 (从位17到位32)中、发送0x0000;我只需要从器件读取一段内容;

    [引述 userid="571933" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1493469/mspm0g3507-q1-the-spi-communication-cannot-read-the-rxdata-register/5744167 #5744167"]

    此外、对于接收函数、您还需要调用  SPI_TX32来接收数据。

    但是、您只调用 SPI_TX32 (SpiTxData);一次来发送命令、我没有找到任何其他 SPI send 函数。

    这是关键点、SPI 需要发送一些内容、输出 SCLK、让 ADS 利用时钟信号将 ADC 数据发送回

    [/报价]

    接收函数、需要继续调用 SPI_TX32函数来处理?? 逻辑是什么? 我使用此函数来发送、确保不调用 ah。 我的发送功能由1ms 的计时器触发。 至于您稍后所说的 SPI 必须发送一些东西到输出 SCLK、我想说的是、请查看我的示波器波形。 SCLK 始终有波形。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此时、我的从设备当前只有一个 ADS8688采集芯片、我上传的示波器图片相当于区域1中的0xA000;在区域2 (从位17到位32)中、报价被发送;我只需要从设备读取一段内容;[/0x0000]

    是的、该区域中会收到一些字节、这些器件是无用的、您需要从 SPI Rx (FIFO)中将它们读出。

    此外、下一个接收到的数据是有效的。

    接收函数、需要继续调用 SPI_TX32函数来处理?? 逻辑是什么? 我使用此函数来发送、确保不调用 ah。 我的发送功能由1ms 的计时器触发。 至于您稍后所说的 SPI 必须发送一些东西到输出 SCLK、我想说的是、请查看我的示波器波形。 我的 SCLK 始终有一个波形。

    嗯、是的、始终有 SCK。 时间标度为1ms、每1ms 读取一次 ADS 数据、对吗?

    接收函数、需要继续调用 SPI_TX32函数来处理?? 逻辑是什么?

    实际上、是的、发送命令后、M0需要将0x00发送到启用的 SCLK。

    由于您的示波器捕获时间标度为1毫秒、我看不到详细信息、您能否向我显示您的单个 Tx - Rx 波形序列?

    需要确认有效数据带有哪组16位 SCLK。

    我的 SCLK 始终有一个波形。

    您是否知道哪一组 Rx 数据有效? 如何在软件中确认?

    在我看来、您需要在发送命令时处理 Rx 数据。

    此外、当您想要接收 ADS 数据时、您需要处理 Tx 数据以启用 SCLK。

    [/quote]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引述 userid="571933" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1493469/mspm0g3507-q1-the-spi-communication-cannot-read-the-rxdata-register/5746293 #57462293"]

    是的、该区域中会收到一些字节、这些器件是无用的、您需要从 SPI Rx (FIFO)中将它们读出。

    此外、下一个接收到的数据是有效的。

    [/报价]

    在 SPI 中、FIFO 默认启用、无法关闭。 它只能设置其阈值、根据数据表、无论何种读取方法基于 RXDATA 寄存器、用户都不能在 SPI、FIFO 中操作数据。

    emmmm,是的,总是有 SCK。 时间标度为1ms、每1ms 读取一次 ADS 数据、对吗?

    它每1ms 发送一次、并且时钟线每1ms 出现一次、但只会在 CS 线路低电平下有效读取

    [引述 userid="571933" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1493469/mspm0g3507-q1-the-spi-communication-cannot-read-the-rxdata-register/5746293 #57462293"]

    实际上、是的、发送命令后、M0需要将0x00发送到启用的 SCLK。

    由于您的示波器捕获时间标度为1毫秒、我看不到详细信息、您能否向我显示您的单个 Tx - Rx 波形序列?

    需要确认有效数据带有哪组16位 SCLK。

    [/报价]

    波形数据如下所示

    [引述 userid="571933" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1493469/mspm0g3507-q1-the-spi-communication-cannot-read-the-rxdata-register/5746293 #57462293"]

    您是否知道哪一组 Rx 数据有效? 如何在软件中确认?

    在我看来、您需要在发送命令时处理 Rx 数据。

    此外、当您想要接收 ADS 数据时、您需要处理 Tx 数据以启用 SCLK

    [/报价]

    我无法在软件中收到它、这是我当前的问题。 但根据 POCI 和 SCLK 波形、最后16位是我要接收的数据、发送命令以处理 RX 数据、这部分就是我一直发送0x00000000的内容

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我无法在软件中收到它、这是我当前的问题。 但根据 POCI 和 SCLK 波形、最后16位是我要接收的数据、发送命令以处理 RX 数据、这部分是我一直发送0x00000000的内容

    是的、我也看到了这一点。

    由于发送了命令、因此需要从 SPI FIFO 读取数据。

    您发送命令后将收到2个字节、此器件是区域、无用、它是0x0000。

    然后、您需要从 SPI FIFO 接收另外两个字节、这部分是区域2、从 ADS 接收的数据。

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

    下一个操作或处理是什么? (现在可以知道、当 MSPM0G3507芯片与 SPI 通信时、用户无法直接操作 SPI-FIFO。 没有相应的接口、它们只能操作 RXDATA 寄存器。 对于 FIFO 操作、仅使用状态位来检测其中是否有数据。)

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

    RXDATA 是 FIFO 访问接口。

    下一步的操作或处理是什么?

    您发送命令后将收到2个字节、此器件是区域、无用、它是0x0000。

    然后、您需要从 SPI FIFO 接收另外两个字节、这部分是区域2、从 ADS 接收的数据。

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

    您能否更具体地说明我应该在代码中执行的操作、或者我应该在现有代码中更改哪些内容

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

    如何操作 rxdata 寄存器以读取 ADS 收集区域2中的数据

    [引述 userid="571933" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1493469/mspm0g3507-q1-the-spi-communication-cannot-read-the-rxdata-register/5746622 #5746622"]

    您发送命令后将收到2个字节、此器件是区域、无用、它是0x0000。

    然后、您需要从 SPI FIFO 接收另外两个字节、这部分是区域2、从 ADS 接收的数据

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

    如何读取区域2中的数据

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如何读取区域2
    You  spi.RxCount 需要设置 TX_COUNT + Rx_count。

    Rx 数据的第一个 TX_COUNT 长度来自区域1、Rx 数据的下一个 RX_COUNT 长度来自区域2、SDO。

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

    根据我要接收的数据量、我的 RxCount 值根据您的方法设置为4、但我的测试数组 test_arr1从未有任何数据

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

    我在0x4中断内添加了测试点、在32个时钟周期内输入了两次中断、我的 SPI.RxDataW 类型为16位(2个字节)、如预期的那样、在 SPI.RxDataW[1]中是区域1的数据、在 SPI.RxDataW[0]中是区域2的数据、但结果是数据内容始终为0、这与示波器不一致。 根据您的介绍、SPI.RxDataW[0]是您引用的其他2个字节、因为 SPI.RxCount 的值随着每次中断而减小1。

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

    这很奇怪、应该会收到数据并且已经进入您的中断。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    I 在0x4中断内添加了测试点、在32个时钟周期内输入了两次中断、我的 SPI.RxDataW 类型为16位(2个字节)、正如预期的那样、在 SPI.RxDataW[1]中是区域1的数据、但结果与区域0不一致。 根据您的介绍、SPI.RxDataW[0]是您引用的其他2个字节、因为 SPI.RxCount 的值随着每个中断[/quot]减小1

    是的、很奇怪。 上述问题描述是我到目前为止尚未解决的问题、但示波器波形和代码逻辑都没有检查错误。 接收中断也通过时钟波形触发。 请尽快与您的工程团队沟通以解决问题。 以前,我申请了你的工程师来我的网站来解决问题,但这是不成功的

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

    对于该问题、请尝试使用 MSPM0 SDK 中的 SPI 演示、以设置与 ADS 器件的简单通信。

    MSPM0 SDK 中的 SPI 演示经过全面测试。

    另一个技巧是在其他项目或平台上执行这个 SPI 软件测试。

    这两条建议都用于确认是否是软件问题。

    ------------------------

    在硬件侧、 请确认信号线是否已连接。

    或尝试将 POCI 设置为 GPIO 输出并观察同一测试点是否有电压切换。