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.

[参考译文] AM2431:MCSPI 传输格式

Guru**** 2952510 points

Other Parts Discussed in Thread: AM2431, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1361768/am2431-mcspi-transfer-format

器件型号:AM2431
主题中讨论的其他器件: SysConfig

我将 MCSPI 与模式3配合使用。

如何在输出中反映 MCSPI_CHCONF_0/1/2/3[1]、[2]的 POL 和 PHA 设置结果?

目前、仅设置 POL=1和 PHA=1不会使 SPI_CLK 处于高电平。
之后、执行 SPI 通信(MCSPI_CHCONF 寄存器 FORCE=1)、SPI_CLK 变为高电平并开始运行。
此时、SPI_CLK 上升沿和 SPI_CS 置为有效沿之间的时间太短、无法满足外部 SPI 器件的保持时间要求。

2.如何增加 SPI_CLK 上升沿和 SPI_CS 置为有效边沿之间的时间?

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

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

    尊敬的 Futoshi:

    SPI 设置完全取决于控制器和外设。

    因此、在本例中为 AM243 SoC 的控制器支持所有 CPOL 和 CPHA 组合、即0、1、2和3模式。

    但是、外设可能无法正常工作。 因此、我希望您浏览外设的数据表并查看它们支持哪种模式。

    您还需要验证 SPI 时钟工作频率是否受外设工作时钟频率的支持。

    除此之外、您需要确保针对特定的芯片选择行(例如默认 CS0)正确地初始化代码"SPI Transaction Parameters"。

    您能告诉我您正在使用的具体 SPI 外设编号吗? 同时请检查我要求验证的上述参数。

    此致、

    Vaibhav

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

    您好、Vaibhav

    我不是一个很好的英语讲者,所以我可能沟通不好,但我想得到我的问题的答案。
    我不是在说外设工作/不工作。
    外设为 MODE3。
    开启 AM2431并执行 PAD_CONFIG 等初始化过程后、我在 MCSPI_CHCONF_0/1/2/3[1]、[2]上设置 POL=1和 PHA=1。
    在刚刚设置 POL=1且 PHA=1至 MCSPI_CHCONF_0/1/2/3[1]、[2]时、SPI 时钟的无效电平处于低电平。

    问题1。 将 POL=1和 PHA=1设置为 MCSPI_CHCONF_0/1/2/3[1]、[2]后、应设置哪个寄存器以将 AM2431输出上 SPI 时钟的非活动电平更改为高电平?

    当我在 MCSPI_CHCONF 寄存器中设置 FORCE=1以启动 SPI 通信时、SPI 时钟的非活动电平变为高电平。

    从 SPI 时钟不活动电平的上升沿变化到高电平的时间、直到 CS 被置为有效。

    Q2:如何增加 SPI 时钟不活动级别变为高电平与 CS 置位之间的时间?

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

    尊敬的 Futoshi:

    请稍候再收到回复。

    此致、

    Vaibhav

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

    您好、Vaibhav

    规格。

    我们期待您的答复。

    此致

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

    您好、Vaibhav

    事情进展如何?

    此致

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

    您好、二世

    感谢您的耐心。

    在继续之前、我强烈建议您查看 MCU + SDK 随附的 MCSPI 环回示例。 可在下找到 mcu_plus_sdk_install_path>examples>drivers>mcspi

    另请访问: https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/09_02_00_50/exports/docs/api_guide_am243x/EXAMPLES_DRIVERS_MCSPI_LOOPBACK.html

    此致、

    Vaibhav

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

    尊敬的 Futoshi:

    来解决您的两个查询。

    Q1. 将 POL=1和 PHA=1设置为 MCSPI_CHCONF_0/1/2/3[1]后、[2]、应设置哪个寄存器以将 AM2431输出上 SPI 时钟的无效电平更改为高电平?[/QUOT]

    所以、对于当前 SW 流、您只需将 CS 线路置为有效、这将处理 SPI 时钟输出电平从低到高的过程。

    我还将指出该规范的相关代码部分。

    对于中断模式、请查看 API:  MCSPI_transferControllerIntr ()

    对于轮询模式、请查看 API:  MCSPI_transferControllerPoll ()

    这是代码片段 手动置位 CS:

    Q2:如何增加 SPI 时钟不活动级别变更为高电平与 CS 生效之间的时间?

    可以通过在 SysConfig 工具中设置字段来增加此时间。

    请找到随附的图像。

    希望这能解答您的疑问。  

    此致、

    Vaibhav

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

    尊敬的 Vaibhav:

    即使我设置了芯片选择 TCS、从 SPI 时钟不活动级别变为高电平到 CS 生效的时间也不会改变。

    数据表指出:"该2位字段定义 CS 切换与 MCSPI 时钟的第一个或最后一个边沿之间的接口时钟周期数。"

    这与我想更改的内容不同。

    如何增加 SPI 时钟不活动级别更改为高电平与 CS 置为有效之间的时间?

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

    您好、Futoshi

    我通过修改 SysConfig 中的一些值来通过逻辑分析仪进行检查。

    如果需要、我会提出一些后续问题。

    请稍候再收到回复。

    此致、

    Vaibhav

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

    您好、Futoshi

    我有几个跟进问题。

    我知道您需要更改 MCSPI 时钟(从低电平状态变为高电平状态)与芯片选择生效之间的时间。

    但是、在我的逻辑分析仪上、SW 流如下、与您的图不匹配。

    我附上了两个图表。 (注:D0是时钟、D1是片选、D2是数据)

    首先、CS 线路被置为有效、然后时钟从非活动电平变为高电平。

    附加的图像也是如此。

    您是否在图表中错误地标记了时钟和 CS?

    期待您的答复。

    此致、

    Vaibhav

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

    尊敬的 Vaibhav:

    很抱歉耽误您的时间。

    我采集的波形的 CLK 和 CS 正确。

    当您获取波形时、它是否设置为 MODE3?

    波形中的 CS 逻辑相反。

    CS 逻辑设置是否正确?

    此致、

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

    尊敬的 Futoshi:

    所考虑的运行是 MODE0本身、而不是 MODE3。

    我所附的图本身是正确的。 如果您看第二行、芯片选择首先生效/下拉、然后启动 cock (第一行)、在第三行中读取的数据。

    这就是该操作的发生方式。  

    如果您对我的解释有任何疑问、请告诉我。

    此致、

    Vaibhav

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

    尊敬的 Vaibhav:

    正如我最初发布的、我的问题是关于何时设置 MODE3。

    此致、

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

    您好、Futoshi

    然后、我还将设置我的运算并进入 MODE3、并进行探测。

    一旦我收集了波形、我就可以对同样的内容进行评论。

    此致、

    Vaibhav

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

    尊敬的 Vaibhav:

    事情进展如何?

    此致、

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

    您好、Futoshi

    非常感谢您的耐心。

    我正在积极努力。

    请在几个小时内收到我的回复。

    此致、

    Vaibhav

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

    您好、Futoshi

    这是逻辑分析仪软件的当前设置。

    这是 SysConfig 设置。

    根据上述设置、当我运行示例时、我在事务开始时得到的就是这样。

    第一个是时钟、第二个是芯片选择。

    我看到时钟从低电平变为高电平、然后片选从高电平变为低电平(置为无效)。

    您之前提到的是上述组合吗?

    此致、

    Vaibhav

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

    尊敬的 Vaibhav:

    芯片选择的逻辑被反转。

    它在置位时变为高电平。

    在我的环境中、此时间很短、大约为40ns。

    区别是什么? 你能找出原因吗?

    此致、

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

    您好、Futoshi

    非常感谢您的耐心。

    我刚才检查了设置。

    在我的环境中、我还看到差异为40ns。

    说起来很安全 这已经在我的设置中复制。

    我的后续问题是:

    您是否需要解释为什么存在此时间间隔? 是否希望它为0ns?

    或者您只需要一种方法来使值为 x ns、其中 x < 40ns 且 x!= 0?

    期待您的答复。

    此致、

    Vaibhav

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

    尊敬的 Vaibhav:

    外设端的保持时间规格为200ns 或更长。

    40ns 不能满足这一时间要求、可能会导致操作错误。

    因此、我想增加这次的时间。

    此致、

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

    您好、Futoshi

    我想需要进一步研究保持时间。

    我将与开发团队核实这一点、然后回复给您。

    此致、

    Vaibhav

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

    尊敬的 Vaibhav:

    事情进展如何?

    如果无法更改时钟变为高电平与 CS 置为有效之间的时间、请告知我。

    最后、我们将考虑采取其他措施

    此致、

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

    您好、Futoshi  

    我将在结束时运行几个实验并检查逻辑分析仪、因此您可能会在几个小时后收到更新。

    此致、

    Vaibhav

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

    您好!

    因此、随着几个字段的变化、如上所述:

    和

    如果您没有看到该值增加到200ns、则不可能、这来自 SW Dev 团队。

    此致、

    Vaibhav

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

    尊敬的 Vaibhav:

    感谢您的答复。

    但是、即使更改了这些寄存器、该问题也没有得到解决。

    我知道时钟变为高电平与 CS 置为有效之间的时间不能改变。

    在执行 SPI 通信之前、我能够使用以下方法增加时间:

    1.将 MCSPI_MODULCTRL (地址:0x20100128)寄存器的 Bit1 (PIN34)设置为1以禁用 SPIEN。

    2.将 MCSPI_CHCONF_0 (地址:0x2010012C)寄存器的 Bit 20 (强制)、Bit 1 (POL)和 Bit 0 (PHA)设置为1以将其配置为模式3。

    3.将 MCSPI_CHCONF_0 (地址:0x2010012C)寄存器的位20 (强制)设置为0。

    4.将 MCSPI_MODULCTRL (地址:0x20100128)寄存器的 Bit1 (PIN34)设置为0以重新启用 SPIEN 模式。

    谢谢你

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

    您好、Futoshi

    [报价 userid="550444" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1361768/am2431-mcspi-transfer-format/5392903 #5392903"]

    在执行 SPI 通信之前、我能够使用以下方法增加时间:

    1.将 MCSPI_MODULCTRL (地址:0x20100128)寄存器的 Bit1 (PIN34)设置为1以禁用 SPIEN。

    2.将 MCSPI_CHCONF_0 (地址:0x2010012C)寄存器的 Bit 20 (强制)、Bit 1 (POL)和 Bit 0 (PHA)设置为1以将其配置为模式3。

    3.将 MCSPI_CHCONF_0 (地址:0x2010012C)寄存器的位20 (强制)设置为0。

    4.将 MCSPI_MODULCTRL (地址:0x20100128)寄存器的 Bit1 (PIN34)设置为0以重新启用 SPIEN 模式。

    [报价]

    感谢您发送编修。

    如果现在解决了该问题、我将标记该主题为已关闭。

    此致、

    Vaibhav