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.

[参考译文] RM48L952:SPI1和 SPI2具有相同的 HalCoGen 设置、但是输出不同

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/609795/rm48l952-spi1-and-spi2-have-same-halcogen-settings-but-different-outputs

器件型号:RM48L952
主题中讨论的其他器件: HALCOGEN

我正在尝试在主模式下使用 RM48L952 HDK 板的 SPI2外设。 我最初使用 SPI1、并且能够验证代码和 HalCoGen 设置是否正常工作。 然而、由于这个系统还需要电路板上的以太网、并且 HDK 电路板具有以太网和 SPI1复用、我不得不切换到 SPI2。 我在 HalCoGen 中复制了 SPI2的设置、但是输出是不同的。 附件是 SPI1和 SPI2的 HalCoGen 选项卡的屏幕截图。

下面的代码是我用于与 SPI 从器件进行交互的函数。 当使用 SPI1、具有 HalCoGen 设置 attached.e2e.ti.com/.../3771.spi-settings.zip 时、这个代码工作

void init_spi_interface(){
spiInit();

data_config.CS_hold = 1;
data_config.WDEL = 0;
data_config.DFSEL = SPI_FMT_0;
data_config.CSNR = SPI_CS_0;
}

void send_spi_message(){

uint16_t txBuf[]={0x03U、0x60U、0xF4U、0x6CU};

TransspitData (spiREG2、 &DATA_CONFIG、4、txBuf);
} 

SPI1的(正确)输出为03 60 F4 6C、而 SPI2的(错误)输出为03 07 10。 (请注意、我只得到一个字节和一个半字节、而不是两个字节)

SPI2和 SPI1是否会有内在的不同?

谢谢、

John

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此外、为了获得一些额外的详细信息、我使用两个不同的板测试了 SPI1和 SPI2 (以确定 SPI2是否损坏)、但结果相同。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    仔细查看开发板的原理图、SPI2被路由到 microSD 插槽和扩展头 J10。 这不应干扰通过 J10进行的传输、对吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 John:

    您能否压缩并发布您的项目文件、包括 HalCoGen .HCG 和 Halcogen 项目的.DIL 文件、以便我有更深入的了解?

    与 SD 卡的连接应具有任何影响、除非您在插槽中有可能影响数据线的卡。

    此外、为了清楚地了解、我必须确认您是否已通过示波器或协议分析器验证了来自外部器件/源的数据线路输入? 了解数据线是否代表您接收的相同数据或您的预期数据非常重要。

    此外、我看到您遇到了"jumbed" GUI 问题、我们有时会看到 halcogen 出现这些问题。 这是您配置的字体大小的结果。 为了使 Halcogen 正确显示、必须将系统字体设置为100%或更低。 遗憾的是、当选择较大字体时、它不能调整。 对此表示歉意。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    以下是我的所有 HalCoGen 项目文件: e2e.ti.com/.../8546.halcogen-project.zip

    我已经使用协议分析器验证了进入从设备的数据线。 它使用的是协议分析器、我能够验证 SPI1是否工作、但 SPI2没有工作。

    感谢您告诉我 GUI 是什么。 这种情况变得很烦人。

    John

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

    感谢您提供源文件和 halcogen 文件。 我快速看了一下、没有什么问题会被卡在外面。 我确实确认了 Halcogen 中的配置是相同的。 由于 GUI 失真、我对您发布的图片有问题。 无论如何、我将在下周外出出差、因此我将把您的帖子转发给一位同事、看看他是否也可以查看。 也许一双新的眼睛会发现问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、John、

    我今天早上在 HDK 上测试了 SPI2、它可以正常工作。 如果使用外部 SPI 工具、则需要启用 CS 保持模式。 在 CS 保持模式下、芯片选择信号在传输结束时保持有效、直到包含新数据和控制信息的控制字段加载到 SPIDAT1中。 如果新的片选编号等于上一个、则有源片选信号将一直扩展到 CSHOLD 清零的传输结束、或者直到片选编号发生变化。

    这是我在测试中使用的代码:

    /*用户代码开始(0)*/
    /*用户代码结束*/

    /*包含文件*/

    #include "sys_common.h"

    /*用户代码开始(1)*/
    #include "spi.h"
    /*用户代码结束*/

    /**@fn void main (void)
    *@应用程序主函数简介
    *@请注意、默认情况下、此函数为空。
    *
    *此函数在启动后调用。
    *用户可以使用此函数来实现应用程序。
    *

    /*用户代码开始(2)*/
    UINT16 TX_Data[16]={0x01、0x02、0x03、0x04、0x05、 0x06、0x07、0x08、0x09、0x0A、 0x0B、0x0C、0x0D、0x0E、0x0F、 0x10};
    UINT16 RX_Data[16]={0};

    /*用户代码结束*/
    int main (空)

    /*用户代码开始(3)*/
    volatile uint32 SpiBuf、blocksize、i;
    spiDAT1_t 数据通信 fig1_t;

    dataconfig1_t.CS_hold = true;
    dataconfig1_t.WDEL = false;
    dataconfig1_t.DFSEL = SPI_FMT_0;
    dataconfig1_t.CSNR = 0xFE;

    /*通过 CPSR 启用 CPU 中断*/
    _enable_IRQ ();

    /*根据 GUI 配置初始化 SPI 模块
    * SPI2 -主器件(SIMO、SOMI、CLK、CS0)
    ***/
    spiInit();

    /*通过轮询模式启动 SPI2发送和接收*/
    对于(i=0;i<100;i++){
    TransmitData (spiREG2、&dataconfig1_t、16、TX_Data);

    while (1);

    /*用户代码结束*/

    返回0;

    SPI2被配置为主器件、波特率为1000Kbps、数据长度为16位。 SPI 从器件是 Aardvark SPI/I2C 适配器。 从下图中可以看出、SPI2的 txed 数据与 SPI adatPOR 上的 rxed 数据相同(数据格式为16位、因此它们是00 01 00 02 00 03...):

    TX_Data[16]={0x01、0x02、0x03、0x04、0x05、 0x06、0x07、0x08、0x09、0x0A、 0x0B、0x0C、0x0D、0x0E、0x0F、 0x10};

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

    感谢你的答复。 我们实际上开始相信、这是由接地问题和 EMI 干扰的组合造成的。

    为了解决此问题、我将介绍这些引脚的低 EMI 模式。 我假设这有助于降低引脚可能的 EMI、但我是否需要考虑一点折衷?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、John、

    如果问题是由 EMI 引起的、为什么 SPI1工作正常? 如果电路板或测试环境具有不良的 EMI、则 SPI1和 SPI2均应受影响。

    通过设置系统模块(GPCR1)寄存器启用低 EMI 输出缓冲器。 请告诉我们您的测试结果、谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    John、

    如果启用低 EMI 功能会影响您的结果、这一点很有意思。 请注意、低 EMI 特性主要用于输出、因为它会"软化"脉冲边沿、因此 MCU 不会针对快速变化的信号产生 EMI、并且还会将输出电平从电源轨上拉低一小部分。