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/TM4C1294NCPDT:AMC7820、SPI

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/609990/ccs-tm4c1294ncpdt-amc7820-spi

器件型号:TM4C1294NCPDT
主题中讨论的其他器件:AMC7820

工具/软件:Code Composer Studio

您好!

我们尝试通过 SSI (SPI)将 AMC 7820与 TM4C1294XL (EVK)连接起来。 在从 AMC 读取寄存器值时、我们将获得随机值。  TM4C1294XL 上的 SPI 是否有任何可用的示例代码,特别是与 AMC 7820进行串行通信?

此致、

Shyam

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

    您是否:

    • 然后、选择了编码 MCU 的 SPI 格式、以匹配从属 SPI 器件的格式?     (SPI 规定"从器件是" BOSS "- MCU 必须符合从器件的格式。   虽然"意外"这类从器件(几乎始终如此)没有 MCU 所享受的"格式设置灵活性"。
    • 监测 MCU 的输出 SPI (时钟和数据)信号?
    • 已查看这些信号-以确保它们符合您的意图?

    以上是 SPI 系统的标准方法、即信号分析/故障排除。

    必须限制(假设的) MCU 板与用于存放 SPI 从器件的板之间的间隔-最好始终以低数据速率"开始"。

    从板的接地端必须"绑定"到 EVK 的接地 端-从板必须得到充分的供电。

    "kiss"会指示您使用小型低容量 EEPROM 来"开始 SPI 工作"!    (而不是更复杂的 IC -因此更容易增强您的信心和理解。)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我没有 AMC7820的连接示例、但查看数据表、我认为您需要使用 SPO = 0和 SPH = 1的飞思卡尔 SPI 帧格式。 每次读取或写入都需要两次16位传输、从器件选择在传输之间保持低电平。 这可以通过使用 FIFO 在连续模式下进行两次传输来完成、也可以通过将从器件选择配置为 GPIO 并使用软件在第二次16位传输结束时将信号设置为高电平来完成。 请记住、对于每个写入的位、也会读取一个位。 在写入命令结束时、软件应将捕获的两个16位值清零接收 FIFO。 在执行读取操作的情况下、仍必须执行两次16位写入。 第一个是命令、第二个是虚拟数据(无关)。 然后丢弃接收缓冲区中的第一个16位值。 读取的值将是接收缓冲区中的第二个16位值。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、感谢您的回复。 我们遵循了您提到的相同步骤。 但仍然无法使其正常工作。 谨随函附上守则的主要部分。 请听我说。

    #define NUM_SSI_DATA 4.
    uint32_t amctx[NUM_SSI_DATA];
    uint32_t amcrx[NUM_SSI_DATA];
    uint32_t 索引;
    uint32_t ui32SysClock;

    ui32SysClock = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、120000000);

    PinoutSet (false、false);

    SysCtlPeripheralEnable (SYSCTL_Periph_SSI3);
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOK);
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);

    GPIOPinConfigure (GPIO_PD3_SSI3CLK);// SCLK
    GPIOPinTypeGPIOOutput (GPIO_PORTK_base、GPIO_PIN_3);//~CS -将其配置为 GPIO 输出
    GPIOPinWrite (GPIO_PORTK_base、GPIO_PIN_3、GPIO_PIN_3);//~CS -将其设置为逻辑高电平
    GPIOPinConfigure (GPIO_PD1_SSI3XDAT0);// MOSI
    GPIOPinConfigure (GPIO_PD0_SSI3XDAT1);// MISO

    GPIOPinTypeSSI (GPIO_PORTD_base、GPIO_PIN_3 | GPIO_PIN_1 | GPIO_PIN_0);

    SSIConfigSetExpClk (SSI2_base、ui32SysClock、SSI_FRF_MOTO_MOTO_1、SSI_MODE_MASTER、35000000、16);

    SSIEnable (SSI2_base);

    while (SSIDataGetNonBlocking (SSI2_base、&amcrx[0]))



    amcrx[0]= 0x02C0;
    amcrx[1]= 0x0002;
    amcrx[2]= 0x82C0;
    amcrx[3]= 0x0000;

    GPIOPinWrite (GPIO_PORTK_base、GPIO_PIN_3、0);//~CS -将其设置为逻辑低电平-开始传输
    SysCtlDelay (10);

    SSIDataPut (SSI2_base、amctx[0]);
    SSIDataGet (SSI2_base、&amcrx[0]);
    SSIDataPut (SSI2_base、amctx[1]);
    SSIDataGet (SSI2_base、&amcrx[1]);

    SSIDataPut (SSI2_base、amctx[2]);
    SSIDataGet (SSI2_base、&amcrx[2]);
    SSIDataPut (SSI2_base、amctx[3]);
    SSIDataGet (SSI2_base、&amcrx[3]);//当我尝试读取 AMCRX[3]时、它会提供随机值。 实际应该是什么时候
    包含读取的数据

    while (SSIBusy (SSI2_base))



    SysCtlDelay (10);
    GPIOPinWrite (GPIO_PORTK_base、GPIO_PIN_3、GPIO_PIN_3);//~CS -将其设置为逻辑高电平-传输结束



    此致、
    Shyam
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否将您生成的输出波形与数据表中预期的波形进行了比较?

    Robert
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    有人建议(连同进一步的细节)在邮递到达15分钟后,"沉默"。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在上面提供的代码中、我看到您已初始化 amcrx 数组。 您是说它是 amctx 阵列吗?

    amcrx[0]= 0x02C0;
    amcrx[1]= 0x0002;
    amcrx[2]= 0x82C0;
    amcrx[3]= 0x0000;
    

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

    是的、它应该是 amctx 数组。 发布时出错了。

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

    感谢你的答复。 但是、我们还无法检查输出波形。

    此致、
    Shyam

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您-请注意、如果您没有对关键信号的主动监控、成功的 SPI 调试将变得更加复杂-将需要更长的时间-并且"吃"时间/精力。 您对示波器屏幕电容(标记良好)的演示将帮助您和助手 crüe 解决您的问题。

    注意:如果这是您的"初始尝试"@ SPI -使用如此复杂的芯片-而不是极其简单的(小容量、EEPROM)-则是对"kiss"的严重违反、并且几乎可以肯定"过度挑战!"
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢大家的帮助。 但显然、问题在于我们使用的电平转换器。 它不能正常工作。 再次感谢大家的回答。