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.

[参考译文] TCAN2451-Q1:SPI 通信

Guru**** 2603695 points
Other Parts Discussed in Thread: SYSCONFIG, TCAN2451-Q1

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1575146/tcan2451-q1-spi-communication

器件型号:TCAN2451-Q1
主题中讨论的其他器件:SysConfig

工具/软件:

您好、

  我在 TCAN2451-Q1 SBC 芯片上工作、只在 SysConfig 中配置了 SPI 线路、具有低电平有效芯片选择 功能且配置的比特率为 500kHz。 我的第一个目标是读取器件 ID 寄存器、并从 SBC 芯片读取 SPI 配置寄存器。 当我从芯片读取数据时、此处附上了简单代码

GPIO_writePin (SPI_CS_GPIO_PIN、0);

DEVICE_DELAY_US (500);

DATA_ADDRESS =((0x04 << 1)| 0x00);
SPI_writeDataNonBlocking (SPID_BASE、DATA_ADDRESS);

DEVICE_DELAY_US (500);

GPIO_writePin (SPI_CS_GPIO_PIN、1);

while (SPI_isBusy (SPID_BASE));


SBC_OUT = SPI_readDataNonBlocking (SPID_BASE);

我 正在获得 0x6043 的 SBC_OUT 值、即使读取 SPI_Config 的寄存器 0x09、也会获得相同的输出值。

您能否建议最初遵循是否有任何初始化序列并读取 SBC SPI 线路?

请注意、从硬件侧 VCC1 和 VCC2 会导通

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

    尊敬的 Naveen:

    没有特殊的序列来开始写入 SPI 命令 — 您只需处于至少待机模式-如果 VCC1 和 VCC2 打开并保持稳定、则处于待机模式(如果您刚刚为器件通电,VCC1/VCC2 也将在正常模式下导通 — 但 IC 需要在 SPI 命令强制器件进入正常模式之前进入待机模式)

    运行此测试时、您是否将 SW 引脚从外部拉高?

    您可能会捕获 SPI 总线的示波器屏幕截图吗 — 我对所有 4 个信号都感兴趣。 我只是想确保没有任何东西看起来奇怪的电气或时间明智。  

    如果您也可以通过读取以下地址并查看返回的数据来进行检查:

    要读取的地址:51h、52h、53h、54h、55h、 5Ah、5Ch  

    这些是中断寄存器,我想检查您是否获得了有效信息或标记了哪些中断 — 这可以帮助我更好地了解器件,或者至少提到一个不同的问题(即,如果触发的中断实际上未被触发,它将帮助我确定 IC 本身是否存在问题)

    请向我报告请求的信息 — 或者您可以为我获得的任何信息,我们将从这里开始尝试为您确定此问题的解决方案。  

    此致、

    Parker Dodson

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

    尊敬的 Parker:

        你可以澄清,如何检查 SBC 在正常功率模式,根据数据表寄存器 0xC 应该给 SBC 是在正常模式还是待机模式.

    运行此测试时、您是否将 SW 引脚从外部拉高?

          SW 引脚在硬件中被拉高。

    如果您也可以通过读取以下地址并查看返回的数据来进行检查:

    要读取的地址:51h、52h、53h、54h、55h、 5Ah、5Ch  

    绿色表示时钟,红色 — SDI,黄色 — SDO,蓝色 — CS

    ...

               在上面的屏幕截图中,蓝线之间是 CS 引脚设为高电平和低电平。 之后、我尝试发送的连续命令  

    寄存器读取、例如 0x04、0x51、0x52、0x53、0x54、 0x55 ,在每个这些寄存器之间读取我给定的延迟 500uS 这是提到的代码  

    /*************** 设备 ID 读取*********************** /

    GPIO_writePin (SPI_CS_GPIO_PIN、0);

    DEVICE_DELAY_US (500);

    DATA_ADDRESS =((0x04 << 1)| 0x00);
    SPI_writeDataNonBlocking (SPID_BASE、DATA_ADDRESS);

    DEVICE_DELAY_US (500);

    GPIO_writePin (SPI_CS_GPIO_PIN、1);

    while (SPI_isBusy (SPID_BASE));


    SBC_OUT = SPI_readDataNonBlocking (SPID_BASE);

    /*************** InterruptRegister Read (0x51)**************** /

    GPIO_writePin (SPI_CS_GPIO_PIN、0);

    DEVICE_DELAY_US (500);

    DATA_ADDRESS =((0x51 << 1)| 0x00);
    SPI_writeDataNonBlocking (SPID_BASE、DATA_ADDRESS);

    DEVICE_DELAY_US (500);

    GPIO_writePin (SPI_CS_GPIO_PIN、1);

    while (SPI_isBusy (SPID_BASE));


    SBC_OUT = SPI_readDataNonBlocking (SPID_BASE);

    /************ InterruptRegister Read (0x52)********** /

    GPIO_writePin (SPI_CS_GPIO_PIN、0);

    DEVICE_DELAY_US (500);

    DATA_ADDRESS =((0x52 << 1)| 0x00);
    SPI_writeDataNonBlocking (SPID_BASE、DATA_ADDRESS);

    DEVICE_DELAY_US (500);

    GPIO_writePin (SPI_CS_GPIO_PIN、1);

    while (SPI_isBusy (SPID_BASE));


    SBC_OUT = SPI_readDataNonBlocking (SPID_BASE);

    以此类推、读取多达 0x55 个寄存器。

    对于器件 ID 的读取、我们在 SBC_OUT 0x1D18 中获得了输出

    读取 Int_Reg (0x51) 读取、我们得到 0x4D77 的输出

    读取 Int_Reg (0x52) 读取时、我们得到 0x2AEF 的输出

    读取 Int_Red (0x53) 读取时、我们得到输出 0xCA35

    因此、就像这些关于寄存器读取的内容一样、我们没有寄存器的特定输出、我们得到了一些随机的响应值。

    您能解释为什么会发生这种情况吗?

    在这个观察之后,我们试图替换为另一个 IC 也,它给出了相同的响应。

    请帮助我完成流程的后续步骤

    绿色表示时钟,红色 — SDI,黄色 — SDO,蓝色 — CS

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

    一个屏幕截图错过了,我在这里附加  

    绿色表示时钟,红色 — SDI,黄色 — SDO,蓝色 — CS

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

    尊敬的 Naveen:

    要检查 SBC 是否处于正常模式、您只需在地址 Ch 读取 SBC 模式配置即可。 如果位 3-2 设置为 0b10、则器件处于正常模式。 待机模式将读取 0b01。  

    也就是说 — 您测试的两个器件是否在从 53h 读取时发回了字节 2 的奇数?  

    我问道、因为您收到 CRC_EEPROM 错误、这就解释了为什么您获得的数据是垃圾数据、因为中断输出与您获得的数据无关。   

    此外、您是否正在尝试在该器件上进行任何自定义 EEPROM 编程、或者您是否完全访问过该器件? 我不相信你有 — 但我只是想验证.   

    您还能附上您测试过的两个器件的图片吗?我想能够跟踪器件标记回来、看看可以找到有关您现有器件的信息。  

    此致、

    Parker Dodson

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

    尊敬的 Parker:

    因此、无论我们之前进行了上述测试、我们都通过 100k Ω 的上拉电阻器上拉所有这些线路、然后在 62k Ω 之后上拉。 即所有 SPI 线路是否都需要外部上拉电阻。  

    我们最初使用这些上拉电阻器、因为在我们进行调试时芯片每次都进入低功耗模式、所以我们使用该电阻器上拉所有线路。 之后芯片没有进入低功耗模式、

    在昨天为您收集数据日志之后、我们尝试检查 SPI 线路的电压、当我们探测这些测试点时、SPI 线路会因某种原因短路。 由此给您带来的不便、我们深表歉意。

    从今天上午开始、我们将使用另一个全新的电路板进行一些分析。

    因此、当我们检查没有上拉电阻器的另一电路板时、时钟、SDI 和 SDO 无法获得正确的信号。 因此、是否实际需要外部上拉电阻器。

    在新的电路板时钟通过 100k 电阻器上拉

    在发送数据时、SDI 线路(红色)无法在数据通信中正确看到、我附加了其中一个 SDI 数据样本未命中。

    蓝色 — CS,红色 — SDI,绿色 — 时钟,黄色- SDO

    有时、即使我们在外部使用 100k 进行了拉电阻、时钟也会丢失

    在中断寄存器 (0x55) 的读取请求的一种情况下、我可以看到 SDI 线路、下面附加了一条

    通过这,如果我收集和发送我的观察数据,无论你要求它将是完全不正确的。 因此、您是否可以在原理图设计完成后尝试重新检查并在观察后重新检查这些线路是否需要任何上拉电阻器。

    我随附了您已完成审核的支持论坛请求单。

    TCAN-2451_SBC_Schematic

    查看完原理图后、我们更新了相同的内容、供您参考并附加了更新后的原理图

    请检查并发布您的观察结果

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

    尊敬的 Naveen:

    我必须与我的内部团队核实一些事项 — 明天我将为您提供更多信息。  

    感谢您的耐心。  

    此致、

    Parker Dodson

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

    尊敬的 Naveen:

    我对这里的延误深表歉意 — 昨天我出人意料地不在办公室,原因是延误时间比预期的要长一些。  

    SPI 线路上不需要上拉电阻。 如果控制器 nCS 引脚为开漏/集电极开路、则可能需要在 nCS 引脚上连接一个上拉电阻器 — 但 SBC 不需要您在 SPI 线路上添加上拉电阻器。

    建议在初始调试期间在 SW 引脚上连接一个上拉至 VCC1,以防止器件由于看门狗触发缺失而重新启动 — 实施看门狗触发后,不再需要该上拉电阻。  

    SCLK、SDI 信号来自您使用的任何控制器/工具 — 如果这些信号丢失时钟信号或未发送正确的 SDI 信号配置、而不是导致问题的 SBC。 我无法调试您正在使用的 SPI 工具/控制器 — 但 SPI 信号无效、因此在您能够始终生成正确的 SCLK 和 SDI 脉冲之前我无法调试问题、因为我无法帮助您调试 SPI 问题。  

    根据您分享的原理图,我们对其进行了正确审阅 — 但对于您未显示的任何内容,我从未审阅过,因此无法确定其是否正确。  

    现在我要关闭这个主题、因为这个问题很可能是由不是源自 SBC 的不良 SPI 信号导致的 — 如果您将 SPI 输入信号修复到 SBC 中并且它们是一致的,并且您仍然看到问题,那么您此时可以重新打开线程 — 但此时如果发送到 SBC 的 SPI 信号不正确、则需要在确定问题之前修复该问题 SBC 或其使用方式面临上述任何问题。  

    此致、

    Parker Dodson

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

    感谢你帕克的答复,因为我们将再次看到什么是可能的方法可以尝试从我们的结束 如果问题仍然存在、我们会向印度的 TI 支持团队报告。

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

    如果来自控制器的 SPI 信号看起来正常、但您仍然遇到 SPI 问题,请返回此处,我们可以进行查看 — 但无法确定 SBC 是否是问题的根源 — 这仍然可能有问题,但此时上游其他器件也是如此。  

    如果您特别对 SBC 有任何其他问题、请返回。  

    此致、

    Parker Dodson

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

    尊敬的 Parker:

      上周我休假了、我们将检查一次 SPI 信号、然后回复您。

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

    尊敬的 Naveen:

    好 — 没问题。  

    此致、

    Parker Dodson