Other Parts Discussed in Thread: TCAN4550
您好!
是否可以通过命令行更改 tCAN WAKE 引脚配置。
同样、命令行中是否有用于设置水线位(RX 缓冲器)的命令?
此致、
Akshay
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.
您好、Akshay、
我假设您是指 TCAN4550寄存器的 Linux 命令行配置。 如果是、我相信您能够使用 tcan4x5x_write_tcan_reg 函数写入寄存器。
static int tcan4x5x_write_tcan_reg(struct m_can_classdev *cdev,
int reg, int val)
{
struct tcan4x5x_priv *priv = cdev_to_priv(cdev);
return regmap_write(priv->regmap, reg, val);
}
我相信您能够使用 tcan4x5x_read_reg 函数读取寄存器。
static u32 tcan4x5x_read_reg(struct m_can_classdev *cdev, int reg)
{
struct tcan4x5x_priv *priv = cdev_to_priv(cdev);
u32 val;
regmap_read(priv->regmap, TCAN4X5X_MCAN_OFFSET + reg, &val);
return val;
}
WAKE_CONFIG 位字段位于寄存器0x0800[31:30]中、可随时进行设置。
水印设置仅对 RX FIFO 有效、配置为使用专用的 RX 缓冲器时不有效。 因此、我假设您是指位于相应 RX FIFO 0配置寄存器0x10A0[30:24]和 RX FIFO 1配置寄存器0x10B0[30:24]中的 RX FIFO 0和 RX FIFO 1水线位字段。
这些位字段是"写保护"的、只有当控制寄存器0x1018[1:0]的 INIT 和 CCE 位都设置为"1"时才能更改。 但是、还要注意的是、CCE 位受写保护、并且 INIT 位必须已经等于"1"才能将 CCE 位设置为"1"、 因此、您可能需要多次写入该寄存器、以使 INIT 和 CCE 位都设置为"1"。 一旦这两个位都设置为"1"、您就可以配置 TCAN4550中的任何受写保护寄存器位、包括水线位。
寄存器配置更改完成后、您需要向 INIT 位写入"0"以恢复"正常操作"。 如果您愿意、您可以向 CCE 写入"0"、或者将其设置为"1"、以便在初始位等于"1"时重新配置位。
但是、当您需要对受写保护的位进行更改时、建议只将 CCE 设置为"1"、并在完成后将其设置回"0"。 这是因为只要器件未配置为在 CAN 总线上进行通信(包括故障条件)、INIT 位就会被设置为"1"。 将 CCE 设置为"1"可能会使配置位发生意外更改。
通过这些读取和写入函数、您应该能够通过命令提示符读取、写入和修改任何 TCAN4550寄存器。
此致、
Jonathan