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.
嗨、
我正在某个项目上使用 TCAN1146、该项目需要使用经典 CAN 总线帧唤醒 MCU。 到目前为止、我成功地遵循了 SLLA521B 应用手册并使选择性唤醒正常工作、这意味着我可以使用如下所示的配置使 TCAN1146从睡眠模式进入待机模式并使用 WUF 进行 CANINT 触发。
SW_CONFIG_4 = 0x00;
//设置 nINT
SDO_CONFIG=0x01
PIN_CONFIG= 0x18 // nINT 配置选择:11b =唤醒请求
//清除并配置中断屏蔽
INT_1=0xFF
INT_2=0xDF
INT_3=0xA1
INT_ENABLE_1=0x40
INT_ENABLE_2=0x00
INT_ENABLE_3=0x00
INT_ENABLE_CANBUS=0x00
//---- 选择性唤醒配置-------------------------------------------------------
//写入所需的 WUF ID
SW_ID1 = 0x00;
SW_ID2 = 0x00;
SW_ID3 = 0x04;
SW_ID4 = 0x8C;
//写入 ID 掩码
SW_ID_MASK1=0x00
SW_ID_MASK2=0x00
SW_ID_MASK3=0x00
SW_ID_MASK4=0x00
SW_ID_MASK_DLC = 0x00
SW_CONFIG_1=0xD0
SW_CONFIG_3 = 0xFE
SW_CONFIG_4 = 0x80
MODE_CNTRL = 0x81
我需要帮助配置 nINT 引脚、以便在中断时获得低脉冲以唤醒 MCU。 到目前为止、我已经完成了上述配置、仍然看不到 nINT 上的中断脉冲。 此外、我注意到当 nCS 引脚为高电平时、SDO/nINT 线路为低电平。
下面我将共享一些寄存器的 WUF 前后检测状态。
WUF 之前的 INT_GLOBAL 寄存器
WUF 之后的 INT_GLOBAL 寄存器
WUF 之后的 INT_1寄存器
WUF 之前的 MODE_CNTRL 寄存器
WUF 之后的 MODE_CNTRL 寄存器
如果有人能帮助我、我真的很感激。
谢谢。
iMesh、
谢谢发帖! 我们可能需要到大约星期二上午 CDT 回来。
此致!
丹尼
感谢您的答复。 我希望你能帮助我解决这个问题。
我正在等待着你的来信。
尊敬的 Imesh:
我们团队的大部分成员今天都在外、他们明天很可能会联系到您。
很抱歉耽误你的时间。
-鲍比
尊敬的 Imesh:
您在这里的配置看起来是正确的。 当通过 WUF 设置 CANINT 中断时、为了使 nINT 信号有效、我看不到缺少任何步骤。
当引脚6配置为 nINT 运行时、该引脚将在 nCS 信号为高电平时输出所有启用的中断的反相或状态。 这意味着只要将任何启用的中断设置为1、nINT 信号就会置为低电平。 当所有被启用的中断被清除时、nINT 信号将处于高阻抗状态、因此该信号线上需要一个到 Vio 的外部上拉源。 当 nCS 置为低电平时、该引脚将返回到 SDO 模式、并将根据 SPI 控制器移出的数据处于推挽状态。
此处显示的 SPI 响应是预期结果。 两个预 WUF 示波器截图都显示全局中断被清除(0)并且器件模式处于睡眠模式。 第二次触发示波器显示在 WUF 之后设置 INT_1 (包括 CANINT)中的某些中断。 第四个示波器屏幕截图实际上还显示 INT_1的值并确认在这种情况下设置的是位6 (CANINT)。
我相信您的逻辑分析仪中可能出现一些收发器和 MCU 在此测试中没有拾取的干扰。 此处屏幕上列出的值与收发器报告的值或似乎是所需 MCU 输出的值不一致。 请注意、时钟信号上的向上箭头出现在整个捕获过程中的各种位置、并且在某些其他信号中可以观察到较短的干扰。
您能否捕获 nINT 信号和 CAN 信号(如果无法测量模拟信号、则为发送节点的 RXD)来显示这些信号之间的关系? 我预期看到的是、在第二个 CAN 帧出现在 CAN 总线上(或任何活动节点的 RXD 引脚)后 nINT 置位。 请确保 nINT 信号具有上拉源、以便开漏输出可以正常运行。
如果您在进行进一步测试时还有其他问题、请告诉我。
此致、
埃里克·肖特
尊敬的 Imesh:
我很高兴听到该上拉列表有助于在这里获得更多预期结果!
是的、为了清除 nINT 状态、应该清除所有被启用的中断。 这是通过向中断寄存器中相应位字段写入1来实现的。
此致、
埃里克·肖特