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.

[参考译文] TMS320F28379D:LAUNCHXL-F28379D 上的 ADS8694 SPI 代码

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/719946/tms320f28379d-ads8694-spi-code-on-launchxl-f28379d

器件型号:TMS320F28379D
主题中讨论的其他器件: ADS8694C2000WARE

尊敬的人们:

请、如果有人能就此向我提供建议、那将会很好:

我尝试 通过由 TMS320F28379D Launchpad 控制的 SPI 与 ADS8694 4通道18位 ADC 进行通信。

软件是 example_2837xD_SPI_dma.c (C2000Ware_1_00_05_00)的改编版本

使用回送设置、一切都运行良好。 但在"现实生活"中、我得到的只是 SDO 线路上的一个、这无关紧要、我发送到 ADC 的内容。

所有信号都按预期工作、我唯一更改的是 SPI 不同线路的引脚。

我使用以下配置:

空 InitSpi (空)

   SpiaRegs.SPICCR.bit.SPISWRESET = 0;
   SpiaRegs.SPICCR.bit.CLKPOLARITY = 0;
   SpiaRegs.SPICCR.bit.SPICHAR =(16-1);
   SpiaRegs.SPICCR.bit.SPILBK = 0;

   SpiaRegs.SPICTL.bit.MASTER_SLAVE = 1;
   SpiaRegs.SPICTL.bit.TALK = 1;
   SpiaRegs.SPICTL.bit.CLK_PHASE = 0;
   SpiaRegs.SPICTL.bit.SPIINTENA=0;

   SpiaRegs.SPIBRR.bit.SPI_BIT_RATE = SPIA_BRR;

   SpiaRegs.SPIPRI.bit.FREE = 1;

   SpiaRegs.SPICCR.bit.SPISWRESET = 1;

空 InitSpiaGpio()

  EALLOW;
   GpioCtrlRegs.GPBPUD.bit.GPIO58 = 0;          //启用 GPIO58上的上拉电阻器(SPISIMOA)
   GpioCtrlRegs.GPBPUD.bit.GPIO59 = 0;          //启用 GPIO59上的上拉电阻器(SPISOMIA)
   GpioCtrlRegs.GPBPUD.bit.GPIO60 = 0;          //启用 GPIO60上拉(SPICLKA)
   GpioCtrlRegs.GPBPUD.bit.GPIO61 = 0;          //启用 GPIO61上的上拉电阻器(SPISTEA)
   GpioCtrlRegs.GPDPUD.bit.GPIO111 = 0;        //启用 GPIO111上的上拉电阻(RST)
   
   GpioCtrlRegs.GPBQSEL2.bit.GPIO58 = 3;        //异步输入 GPIO58 (SPISIMOA)  
   GpioCtrlRegs.GPBQSEL2.bit.GPIO59 = 3;        //异步输入 GPIO59 (SPISOMIA)
   GpioCtrlRegs.GPBQSEL2.bit.GPIO60 = 3;        //异步输入 GPIO60 (SPICLKA)
   GpioCtrlRegs.GPBQSEL2.bit.GPIO61 = 3;        //异步输入 GPIO61 (SPISTEA)

   GpioCtrlRegs.GPBGMUX2.bit.GPIO58 = 3;        //将 GPIO58配置为 SPISIMOA
   GpioCtrlRegs.GPBGMUX2.bit.GPIO59 = 3;        //将 GPIO59配置为 SPISOMIA
   GpioCtrlRegs.GPBGMUX2.bit.GPIO60 = 3;        //将 GPIO60配置为 SPICLKA
   GpioCtrlRegs.GPBGMUX2.bit.GPIO61 = 3;        //将 GPIO61配置为 SPISTEA

   GpioCtrlRegs.GPBMUX2.bit.GPIO58 = 3;        //将 GPIO58配置为 SPISIMOA
   GpioCtrlRegs.GPBMUX2.bit.GPIO59 = 3;        //将 GPIO59配置为 SPISOMIA
   GpioCtrlRegs.GPBMUX2.bit.GPIO60 = 3;        //将 GPIO60配置为 SPICLKA
   GpioCtrlRegs.GPBMUX2.bit.GPIO61 = 3;        //将 GPIO61配置为 SPISTEA
   
   GpioCtrlRegs.GPDGMUX1.bit.GPIO111 = 0;   // GPIO111 = GPIO111 -用于 ADS8694的硬件复位引脚
   GpioCtrlRegs.GPDMUX1.bit.GPIO111 = 0;     // GPIO111 = GPIO111
   GpioCtrlRegs.GPDDIR.bit.GPIO111 = 1;        //将 GPIO111配置为输出
   GpioDataRegs.GPDSET.BIPO111 = 1;      //将 GPIO111设置为高电平!!!! 以激活 ADS8694
   EDIS;

我的 DMA 设置为:

#define BURST            7               
#define 传输     4.                 
#define FIFO_LVL       8.                  

我将发送如下数据:

uint16 sdata0[36]={1、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0}; //这是命令示例。

我的 RDATA[]数组在环回方式上看起来确实像 sdata[]数组,但如果我设置 SpiaRegs.SPICCR.bit.SPILBK = 0,RDATA 看起来像{ 65535,65535,65535等......}        

除了已经绝望之外,我还做了什么错?

谨致问候、

Gustavo      

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

    我认为 GPIO 多路复用器设置看起来正确。

    如果您使用示波器查看任何 SPI 引脚、您是否会看到它们上的任何活动? 如果您将多路复用器设置切换为"0"并将方向设置为"1"、然后通过在"Expressions"窗口中操作 GPDAT 寄存器来切换 GPIO、该怎么办? 如果您可以看到引脚切换、则至少会验证您具有正确的 LaunchPad 引脚。

    您可能还需要在代码运行后检查 Expressions 窗口中 SpiaRegs 的内容;这将验证所有内容是否按预期配置。

    特别是 SPI、我无法为您提供更多帮助;希望 SPI 专家周一的某个时间能与您联系。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Devin、您好、感谢您的回答。
    我刚刚发现没有任何引脚正常工作。 所有东西都死了!

    原因是、我使用为高速模式保留的引脚。
    尽管 在 TMS320F2837xD_TechnicalReference_spruhm8f 的7.7 GPIO 和外设复用 PAG 842中被称为
    这些引脚也可用于正常速度。

    不需要说的是,您需要配置 SpiaRegs.SPICCR.bit.HS_MODE = 0;如果您不使用高速模式,也需要配置 SpiaRegs.SPICCR.bit.HS_MODE,以使其工作。

    示例使用其他引脚、因此不需要此设置。 也许最好在手册中更新这些信息...

    无论如何、我现在有一些引脚在工作。 其他不是。 也许有一天我会发现原因。 ;)

    在等待 SPI 专家时、我会更进一步。 如果我能够使其正常工作、我将在这里发布它。
    再次感谢!

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

    SPI 初始化代码设置看起来正确。 没有问题。

    正如 Devin 所建议的、您是否能够使 GPIO58-61用作 GPIO 输出引脚? 您的消息听起来好像您找到了一些成功。 但是、这并不清楚。

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

    Manoj、您好、感谢您的快速响应。

    我一直在为它而挣扎,悲伤地。

    我不知道、如果 ADC 工作正常(没有任何反应)、我决定进行一种蛮力程序来尝试通信、从而避免大多数 SPI 功能以及 FIFO 和 DMA 全系。

    到目前为止、当我使用回送模式时、它可以正常工作、并且我会得到正确的位。

    但 ADC 没有反应。 我已经使用2个扩散芯片对此进行了测试。

    您能在 TI 找到谁能帮助我处理这个特定的 ADC (ADS8694 4通道18位)吗? 我的原型板已经制作完成,如果我不能与芯片通信,一切都将重新设计:(

    我找不到电路板中的错误。 我使用了两个不同的板来测试芯片。 它们按照数据表中的建议进行连接、所有信号都在那里...

    我附上我正在使用的两个相关文件。 它们适合 C2000Ware_1_00_05_00的示例 SPI 回送

    太多泰国人了!

    Gustavo

    e2e.ti.com/.../0410.TEST_5F00_BruteForceSpi.c

    e2e.ti.com/.../7217.Spi_5F00_of_5F00_BruteForceSpi.c

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

    很抱歉、您没有回答我的问题。 您能否先回答我上一篇文章中提出的问题?

    此致、
    曼诺伊
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对不起、Manoj、我以为我已经这么做了。
    是的、我使引脚正常工作。 他们所做的是他们所想做的。
    我已经开始写信给您、然后我忘记了我没有完成它、并开始了一条新消息...

    这是:

    是的、在配置 SpiaRegs.SPICCR.bit.HS_MODE = 0之后;事情开始工作。
    然而,对我来说,这仍然是一项不明确的任务。

    不知怎么说、我不会通过 SPICHAR、NUM_SPETERS、TXFFIL、DMA_TRANSION_SIZE 和 DMA_BURST_SIZE 的组合来获得它

    DMA_BURST_SIZE 8.
    DMA_TRANSION_SIZE 0//(MEM_buffer_size/FIFO_LVL)-1](MEM_buffer 为:sdata[9]
    TXFFIL 9.

    字大小为4位
    所以
    SpiaRegs.SPICCR.bit.SPICHAR = 4;

    如果我按照 TMS320F2837xD_TechnicalReference (spruhm8f)中的信息操作、则此操作应该起作用
    我将数据左对齐发送。 但我不会返回我发送的内容。 传入数据的大小是传出数据的两倍。 让我简化一下:

    发送1、接收2
    发送3、接收6
    已发送4个、已接收8个
    等等
    奇怪。

    我已经测试了多种组合、但没有什么帮助。

    这是我第一次使用 SPI。 我自己开发一个相当复杂的项目、必须从头开始学习很多东西。 因此、我认为我需要简化问题、这就是我决定先下来测试与 ADC 的基本通信的原因。

    如果我不是很糟糕、ADC 应该具有一些反馈所需的位。
    确实是这样

    这表明、我的第一个问题不是 SPI 和 DMA、而是 ADC 本身。

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

    我在必须做的事情上有点迷路了。 我应该关闭此主题吗?

    您是否使用 ADS8694来解决此问题?

    此致、
    曼诺伊
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Manoj、
    我只需设法使 ADC 正常工作!
    像往常一样、这是我的故障、发送了错误的配置命令。
    现在、我可以开始测试 SPI。

    我要说,我们关闭了这一胎面。
    非常感谢您的关注。 在这里提问总是很愉快、回答很快、很有能力。
    大家都非常耐心...

    此致、
    Gustavo