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.

[参考译文] LAUNCHXL-F28377S:与 DMA 的 SPI 通信具有波动值

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/588517/launchxl-f28377s-spi-communication-with-dma-have-fluctuate-values

器件型号:LAUNCHXL-F28377S

大家好、

我尝试使用 LaunchPad 与 SPI 和 DMA 进行主从通信。 但我希望发送的值有问题。

问题:

n´t 我在 CodeComposerStudio 中将 Master µC 的 sdata_array[i]值更改为20 (对于 sdata_array[0])和1 (对于 sdata_array[1])、RDATA_array 不能正常工作。 它用 RDATA_array 中的[1]值来调用[0]、或者该值是n´t 正确的。 我不n´t 这是为什么。 因此、我希望有人有任何想法。

n´t 我用 oszilliskop 观察信号、我就看不到真正糟糕的信号。

也许有人知道 我犯了什么错误。 它是 Programm 吗?! 是物理发展/建筑

开发:

主设备-> F28377s LaunchXL (通过 USB 为笔记本电脑供电)

从设备-> F28377s LaunchXL (通过 USB 为另一台 PC 供电)

通信正确、我将两个 LaunchXL 的 GND 连接在一起!

还将 MOSI 与 MOSI 连接、将 MISO 与 MISO 连接、并将 STE 与 CLK 与 CLK 引脚连接在一起。 (不带电阻器或其他任何东西)

编程从机:

空洞项目文件夹位于.zip 文件中。

程序主设备:

只有 main.c 文件位于.zip 文件中。 要使用、只更改从工程文件夹中的 main.c 文件。

系统:

PC 与另一台 PC 通信:
编译器版本:TI v17.3.0.STS
CCS 版本:7.0.0.00043


笔记本电脑:
编译器版本:TI v17.3.0.STS
CCS 版本:6.1.3.00033

非常感谢您的参与。

此致、

Stefan

e2e.ti.com/.../SPI_2D00_Programm_2D00_Slave_2D00_and_2D00_Master.zip

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

    我将会研究您的问题。 自发布以来、您是否有任何其他详细信息可供分享?

    只是为了确认、问题是从器件正在按顺序接收数据? 您能否提供特定问题的一些屏幕截图、以确保我们理解这些问题?

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

    您好、Kris、

    感谢您的支持。

    以下是我的测试应用:

    n´t 以调试方式从主设备(笔记本电脑)和从设备(PC)启动程序、并且我没有更改我的值。
     从主设备和从设备的 RDATA_ARRAY 中的值是正确的、静态的、并且是稳定的。

    2.我获取 oszilliscop 并将一个通道链接到 STE 引脚(使能引脚)以进行触发。 另一个通道首先链接到 MOSI (图片)、然后链接到 MISO (图片)、然后链接到 CLK (图片)。 将 oszi 链接到 CLK 后、RDATA_array 中的值开始更改为 false 值。 信号稳定且在 oszi 中看起来良好、但 RDATA_array 中的值已更改。 如果我在 MOSI 中再次连接 oszi、则值再次正确且为静态/稳定值。

    3.现在我将调试模式中的值从0更改为20。 这些值正在跳动、不正确! 它们从主设备和从设备跳到 RDATA_ARRAY! 因此、在这个状态下、我用我的 oszi 在 MOSI、MISO 和 CLK 中拍摄了一张照片。 将其链接到 CLK 后、值切换到静态/ 稳定且正确的值!! 示波器中的信号是稳定的、看起来很好。

    4.从机的值已更改->未发生任何情况(更改两次以上!)

    5.改变了 Master 中的值->什么都不会发生(改变超过两次!)

    6。n´t 将 oszi 连接到 CLK -> RDATA_array 值跳转、并且0 Ω 正确!

    7.现在我将我的 oszin´t 到 MOSI -> RDATA_array 门槛是正确的

    8.现在连接到 CodeComposerStudio 中的 MISO ->值是静态的并且正确、但在 RDATA_ARRAY 中的情况不正确! RDATA_ARRAGE[0]中的内容应位于[1]中、[1]位于[0]中... 从主从!

    测试完成后、我再次感到困惑。 我的n´t 应用程序似乎对该测试来说还可以。 但我的 oszi 处的信号已经是静态的、没问题。 n´t 我不知道 CodeComposerStudio 中的 µC im 调试模式为什么n´t 显示正确的值! 最神秘的是 RDATA_ARRAY 中的镜像结果。 我的意思是、信号与 befor 相同... 我不能n´t 它。


    我希望您能告诉我一些关于我错误测试的信息。 -> ZIP 文件: e2e.ti.com/.../pictures.zip

    提前非常感谢!

    祝你一切顺利

    Stefan

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

    以确保我理解该问题-

    未连接探头时、程序工作正常。 一旦将探测器连接到数据线路,数据就会被错误读取。 这是对问题的准确描述吗?

    - SPI 通信的频率是多少?
    您是否了解了时钟极性和相位设置,以确保它们配置正确?
    -您是否有任何可以尝试内联的通孔电阻器?

    此致、
    Kris
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Kris、
    ´s 不正确。 如果没有来自 oszilliscope 的探针、程序就会变得疯狂。 我现在再次测试了它。 我从没有 oszilliskop 的主器件和从器件中启动程序。 起初、RDATA_array 被镜像([0]位于[1]中、[1]位于[0]中)。 如果我从主器件将 sdata_array[0]值从0设置为20、则 RDATA_array 也会镜像到 CodeComposerStudio 中。 所以问题仍然存在! 但是、使用 oszilliscope 探头、我可以影响 codecomposerstudio 的结果。 如果我连接一个探头、它可以使 CodeComposerStudio 中的值保持稳定、并且/或者使值在 RDATA_ARRAY 中按正确的顺序排列。 总结:尽管信号在 oszilliscope 下保持稳定、但 CodeComposerStudio 调试方法中的程序有时会在 RDATA_array 中显示正确的结果、有时在某些确定的值上显示 false 或镜像的值。

    回答您的问题:
    - SPI 通信的频率是多少?
    SPI 时钟为2MHz (sysclock = 200MHz;LSPCLKDIV =/1;--> LSPCLK = 200MHz;SPI_BIT_RATE = 0x63 --> SPICLKA = 2MHz)
    传输速度为2kHz (每0.5ms 传输一次)。 Timer0从 DMA 启动 CH6和 CH5。

    -您是否了解过时钟极性和相位设置? 它们是否正确?
    主器件和从器件具有相同的设置:
    CLKPOLARITY = 0且 CLK_PHASE = 0

    -您是否有任何可以尝试内联的通孔电阻器?
    在我的测试中、我使用无电阻器的从器件连接了主器件。 在您发布帖子后、我尝试将470R 电阻器内联。 如果我将一个放置到 SPICLK 中、它会将信号平滑到很高的水平、并且 CodeComposerStudio 中的结果是n´t 稳定且正确的。 如果我只有 MISO 和 MOSI 中的电阻器、则存在与 befor 相同的问题。 它更改/镜像了 RDATA_ARRAY 中的值。 (来自主设备和从属设备!)


    总结:
    # Programmn´t 使用来自 Master sdata_array 的一些值。 在其他值下、程序工作... (IT´s *疯狂*)
    #要么镜像主从设备的 RDATA_ARRAY、要么 RDATA_ARRAY 结果为n´t 正确。
    #如果我将示波器与我的测试接线连接起来、我有时会影响问题或产生问题之一。

    ´s 这就是为什么我会问:"我的具有 DMA 的程序是否有问题? 或者我的测试接线是否完全错误? 或者 SPI 的频率是否为高电平?"
    也许您有一些想法。

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

    我们首先需要做的是尝试清除您的设置。 有很多外部导线会给引脚带来大量额外负载和噪声。

    您似乎使用母对公跳线、这就是需要试验电路板的原因。 您是否有任何母对母跳线可用于从一个 Launchpad 直接连接到另一个 LaunchPad? 这会将导线长度缩短一半、并可能解决此问题。 如果您没有母对母跳线、也可以使用图片中的鳄鱼夹将跳线直接夹到另一个板上的引脚上。

    此致、
    Kris
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Kris、
    我有母对母跳线。 我将 Lauchnpad 连接在一起并再次进行测试:
    1.程序启动后、顺序正确的正确值位于主从设备的 RDATA_ARRAY 中。 (全部正确)
    2.我将调试方法中的 sdata_array 值从 Master -> sdata_array[0]从0更改为20。 现在、主从器件和从器件的 RDATA_array 中的值为n´t Ω 正确并跳转。 (它们是n´t 静态的)
    3.我将调试方法中的 sdata_array 值从 Master ->sdata_array[0]改回0、将 sdata_arry[1]从1更改为20000。 现在、这些值有时会从主从设备镜像到 RDATA_ARRAY 中。 交换机在 RDATA_ARRAY 中的情况。
    4.我将调试方法中的 sdata_array 值从 Master -> sdata_array[1]更改为1。 现在再次设置启动条件。 主从设备的 RDATA_ARRAY 中的值正确。 有n´t Ω 跳转并且被n´t Ω 镜像。

    您´s 我的测试接线仍然有问题吗?

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

    我将尝试运行您的代码来调试该问题。 当我复制硬件设置并使代码运行时、这可能会稍微延迟。

    此致、
    Kris