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.

[参考译文] TCAN4550:TCAN4550:CAN#39;t 从 TCAN4550接收 SDO 数据

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1167590/tcan4550-tcan4550-can-t-receive-sdo-data-from-tcan4550

器件型号:TCAN4550

我们正在将 TCAN4550集成到我们的系统中。  

上电后直接初始化 SPI、然后执行读取操作。

SPI 通信正常。 但是 SDO 无法接收下表中的任何数据:

 

DTS 配置:

SPI2{
   状态="正常";
   Max-freq =<50000000>;
   CS-GPIO =<&GPIO2 RK_PB4 GPIO_ACTIVE_LOW>;
   tcan4x5x:tcan4x5x@0{
      兼容="ti、tcan4x5x";
      reg =<0>;
      #address-cells =<1>;
      大小单元格=<1>;
      SPI-max-frequency =<10000000>;
      时钟名称="cclk"、"hclk";
      时钟=<&T 4x5x_cclk>、<&T 4x5x_hclk>;
      Bosch、MRAM-cfg =<0x0 2 1 4 5 0 3 10>;
      pinctrl-names ="default";
      pinctrl-0 =<&pwr_en>、<&data_ready>;
      PWR_en-GPIO =<&GPIO2 RK_PA2 GPIO_ACTIVE_HIGH>;/* GPIO2_A2 *
      数据就绪型 GPIO =<&GPIO2 RK_PB0 GPIO_ACTIVE_LOW>;/* GPIO2_B0 */
      状态="正常";
    };
};

{.pinctrl}(&P)
    tcan4x5x{
      PWR_en:PWR-en{
         Rockchip、引脚=<2 RK_PA2 RK_FUNC_GPIO &pcfg_PULL_UP>;
      };
      DATA_READY:数据就绪{
         Rockchip、引脚=<2 RK_PB0 RK_FUNC_GPIO &pcfg_PULL_UP>;
      };
    };

 };

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

    Nick、

    工程师已收到此帖子的通知、并将在 CST 2022年11月3日业务结束时作出响应。

    此致、

    Eric Hackett

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

    您好、Nick、

    看起来您的 SPI 字节序列在两个32位字内被反转。  "0x41"字节应为在芯片选择(使能)引脚转换为低电平以进行 SPI 读取事务之后发送的第一个字节。  

    根据分析器图、我认为传输的字节序列为:

    0x01、0x00、0x10、0x41、0x00、 0x00、0x00、0x00

    如果我反转两个字中的字节、我将得到:

    0x41、0x10 0x00、0x01、0x00、0x00、 0x00

    在我看来、您好像在尝试读取寄存器0x1000 (内核释放寄存器)。  是这样吗?

    如果是这样、为单寄存器 SPI 读取寄存器0x1000而发送的正确字节序列为:

    0x41、0x10 0x00、0x01、0x00、0x00、 0x00

    请尝试调整 SPI 驱动器以首先传输 MSB。  希望这可以解决这个问题。

    此致、

    Jonathan

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

    您好、Jonathan、

    我们 调整了 SPI 驱动器以 首先发送 MSB、但 MISO 仍然为0xff

    我还有另一个问题、是否需要控制 RST 引脚?

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

    您好、Nick、

    RST 引脚必须为低电平才能正常工作。  当 RST 引脚为高电平时、TCAN4550将保持在复位状态(上电复位)。

    我看到线程状态已更改为已关闭。  您是否已解决问题并使其正常工作?

    此致、

    Jonathan

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

    您好、Jonathan、

    我们还没有解决问题。

    我将在下周检查 RST 引脚的状态。

    谢谢。

    Nick

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

    您好、Nick、

    好的。  除了检查 RST 以确保它为低电平之外、您还可以验证 VIO 引脚上的电压是否正确以及 OSC1/2引脚上是否有有效的时钟?

    我在原理图中注意到、连接到 VIO 引脚的网络有2个不同的网络名称。  布局工具必须选择要使用的网络名称之一、但我想确保它仍然连接到电路板上的3V3电源。  SPI 和时钟电路需要 VIO 才能正常工作。

    数字内核还需要时钟来写入和读取寄存器值、因此只需验证您在 OSC1/2引脚上看到的是振荡时钟。  如果时钟不工作、SPI 将不会为大多数寄存器返回值。  寄存器0x0000至0x0010在逻辑中执行、不需要 OSC1/2时钟起作用、只需要 SPI 时钟返回一个值。  您还可以尝试读取器件 ID 寄存器0x0000和0x0004、以帮助检测可能的计时问题。

    此致、

    Jonathan

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

    您好、Nick、

    此问题是否已解决、我们能否关闭此主题?

    此致、

    Jonathan

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

    您好、Jonathan、

    是的、此问题已解决。

    感谢你的帮助。

    Nick。

x 出现错误。请重试或与管理员联系。