英飞凌
直播中

李慎梓

7年用户 1413经验值
私信 关注

如何将TLE2955模式更改为正常模式?

我正在尝试改变 MODE_CTRL 寄存器以将 TLE9255WLC 设置为正常模式。 为此,我运行了下面提到的命令。 我尝试了原帖中张贴的查看解决方案,但无法让 CAN 正常工作。 我试图复制这样一条命令"spi -s 1 0x8108 2"("spi -s  < msg len [byte]>" ),但我无法将 CAN 收发器更改为正常模式。 是否需要添加额外代码才能将 CAN 设置为正常模式?

我的代码:
uint32 spiTxBuffer[1];
uint32 spiRxBuffer[1];
IfxQspi_SpiMaster_Channel spiMasterChannel;





Ifx_read_write(0x8108); // 为 MODE_CTRL 设置值 0x08。





uint32 Ifx_read_write(uint32发送数据)
{
spiTxBuffer[0] = send_data;

当(IfxQspi_SpiMaster_getStatus( spiMasterChannel) == SpiIf_Status_busy) {};

IfxQspi_SpiMaster_exchange( spiMasterChannel, spiTxBuffer[0],  spiRxBuffer[0], 1);

/* 我们等待从 Qspi*/
当(IfxQspi_SpiMaster_getStatus( spiMasterChannel) == SpiIf_Status_busy) {};

返回(spiRxBuffer[0]);
}



                                                                                                                                                                                                                                                                                                                                                                                                        
                                                         



回帖(2)

周颂焱

2024-7-5 09:17:30
首先,您提到的命令"spi -s 1 0x8108 2" 表明,您需要通过 SPI 接口发送一个 2 字节的信息,其中第一个字节是寄存器地址 (0x81),第二个字节是要写入该寄存器的值 (0x08)。
在你的代码中,你使用 Ifx_read_write 函数通过 SPI 接口发送数值 0x8108。 但是,该函数似乎只发送了一个字节(0x8108),而不是所需的 2 字节信息。
要解决这个问题,可能需要修改 Ifx_read_write 函数,以发送 2 字节信息。 一种可能的方法是修改 spiTxBuffer,将寄存器地址和值分开保存,例如:
uint32 spiTxBuffer[2];
uint32 spiRxBuffer[2];
spiTxBuffer[0] = 0x81; // 寄存器地址
spiTxBuffer[1] = 0x08; // 要写入的值
while (IfxQspi_SpiMaster_getStatus( spiMasterChannel) == SpiIf_Status_busy) {};
IfxQspi_SpiMaster_exchange( spiMasterChannel, spiTxBuffer, spiRxBuffer, 2);
这样,就可以通过 SPI 接口发送正确的 2 字节信息,从而将 MODE_CTRL 寄存器设置为所需值。
另一个可能的问题是 SPI 配置或 spiMasterChannel 变量的初始化。 在尝试写入 MODE_CTRL 寄存器之前,请确保 SPI 接口已正确配置和初始化。
举报

张勇

2024-7-5 17:43:47
要将TLE9255WLC设置为正常模式,您需要正确配置MODE_CTRL寄存器。根据TLE9255WLC的数据手册,MODE_CTRL寄存器的位定义如下:

- bit 7: 0 = 正常模式,1 = 待机模式
- bit 6: 0 = 正常模式,1 = 睡眠模式
- bit 5: 0 = 正常模式,1 = 电源关断模式

要将TLE9255WLC设置为正常模式,您需要将MODE_CTRL寄存器的所有位设置为0。以下是修改后的代码:

```c
#include "IfxQspi.h"

uint32 spiTxBuffer[1];
uint32 spiRxBuffer[1];
IfxQspi_SpiMaster_Channel spiMasterChannel;

int main(void)
{
    // 初始化SPI和TLE9255WLC
    // ...

    // 设置MODE_CTRL寄存器为正常模式
    spiTxBuffer[0] = 0x0000; // 所有位都设置为0
    IfxQspi_writeRead(&spiMasterChannel, spiTxBuffer, spiRxBuffer, 2);

    // 检查是否成功设置为正常模式
    if (spiRxBuffer[0] == 0x0000)
    {
        // 成功设置为正常模式
    }
    else
    {
        // 设置失败,处理错误
    }

    // 其他代码
    // ...

    return 0;
}
```

请注意,您需要根据您的硬件和软件环境进行适当的初始化和配置。此外,确保您的SPI通信设置正确,包括时钟速率、数据位长度等。如果仍然无法将CAN收发器设置为正常模式,请检查硬件连接和电源供应是否正常。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分