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/EK-TM4C1294XL:EK-TM4C1294xl:SPI Rx FIFO

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/572015/ccs-ek-tm4c1294xl-ek-tm4c1294xl-spi-rx-fifo

器件型号:EK-TM4C1294XL

工具/软件:Code Composer Studio

连接并配置 EK-TM4C1294xl 上的 SPI 以与从器件通信。 从机返回数据。 RX FIFO 表示接收到数据。 问题:没有数据是通过语句从 FIFO 中读取的

SSIDataGet (SSI2_base、&pui32DataRx[ui32Index]);

变量窗口

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

    您好!

     首先、您是否尝试附加一些屏幕截图图像? 不可见。

     您在 pui32DataRx 上读取了哪些数据? 预期数据是什么? 您处于中断模式还是轮询模式? 您是否在调用 SSIDataGet ()之前说 RXRIS 位已置位?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我想发送一些调试器屏幕截图。 我应该使用哪种映像文件类型以及在论坛页面中的位置。 此编辑框不接受剪切和粘贴 Windows 剪切工具。

    这就是我得到的结果:
    在 SPI 传输之前(我在示波器上监控它)、
    寄存器 SSI_SR、位 SSI_SR_RNE 和 SSI_SR_RFF = 0
    在 SPI 单字节传输(示波器显示 MISO -从 xmission)之后、
    SSI_SR_RNE=1且 SSI_SR_RFF = 0
    以下装订
    SSIDataGet (SSI2_base、&pDataRx);
    返回(在表达式窗口中监视)
    pDataRx=0

    代码(基于技术讲座中的示例完成外设设置):
    //配置 SSI2上的 SPI 端口
    SSIConfigSetExpClk (SSI2_base、ui32SysClkFreq、
    SSI_FRF_MOTO_MODE_1、SSI_MODE_MASTER、1000000、8);//

    //初始化 LTC2894内存以进行读取(注意:不允许 SSIBusy (SSI2_base))
    SSIDataPut (SSI2_base、0x03);
    SSIDataPut (SSI2_base、0x00);//MSB 地址 xferd
    SSIDataPut (SSI2_base、0xf0);//LSB 地址 xferd

    //只要要读取的字节数就保持 CS 有效
    SSIDataPut (SSI2_base、0x00);//要读取的一个字节
    //等待虚拟数据传输
    while (SSIBusy (SSI2_base)){};
    //读取 RxFIFO
    SSIDataGet (SSI2_base、&pDataRx);//&pui32DataRx[ui32Index]);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bide、

    当您回复时、您将在右下角看到"使用丰富的格式"、如下所示。 单击它并通过插入/编辑介质附加屏幕截图。  

    pDataRx 是指向数据数组的指针。 您说的是数组的第一个元素是0还是所有元素都是零? 由于 SSI 是双工的、当您向外传输4个数据(您有4个 SSIDataPut()调用)时、您应该在接收 FIFO 中接收4个数据。 在示波器上、您是否看到从器件在 RX 引脚上返回正确的数据?

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

    好的、问题解决了! 我不清楚双工操作的机制。 现在、我发现了为什么我读 FIFO 的语句有问题。 注意:pDataR实际上 是一个单值变量,而不是数组。 我用一个阵列替换了它、该阵列接收到从 FIFO 读取的 N 个结果。 N=# RX 字节。

    供参考:SSIDataPut ()到 Slave 的前3个字节 xmtd 实际上是设置数据;因此,Rx 线路在3个字节中保持为0。 从机 xmtd 是一个单字节0x55--用于 SSIDataPut()发送的最后一个字节。 由于采用双工机制、我不希望 Rx FIFO 中的前3个0。

    ORD-MOSI (主设备)

    GRN--MISO (从设备)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Blde、
    很高兴您的问题得到解决。 正如我所解释的、您将在接收 FIFO 中接收四个数据、这是正确的。 如您所述、前3个数据将不重要、您可以将它们视为从器件返回的虚拟数据。 只有第四个数据是实际返回的数据。

    如果您的问题得到解答、您能否单击"验证答案"按钮关闭该主题? 谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    重新打开此主题的步骤是什么? 稍后、我将使用 DMA 进行 SPI 通信、可能需要继续此对话框。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Blde、

    我认为您关于 SPI FIFO 的问题已经得到解答、如果没有其他问题、请您结束该主题。 您始终可以打开一个新主题以讨论新主题、即 DMA 相关主题。 如果您希望保持此线程处于打开状态、也可以。