“线程:测试”中讨论的其它部件
我似乎无法检测到载波检测上的 IRQ 针脚。 我已启用 DUP_EN 来测试信号链。 我已经用两个读数进行了验证,一个读数在启用外部输入缓冲之前,一个读数在状态寄存器中,CD 位达到了我的期望值并设置为高。 但从不断言 IRQ 针脚。 我的 IRQ 寄存器中也有0。 我在这里错过了什么?
请您提供建议吗?
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.
我似乎无法检测到载波检测上的 IRQ 针脚。 我已启用 DUP_EN 来测试信号链。 我已经用两个读数进行了验证,一个读数在启用外部输入缓冲之前,一个读数在状态寄存器中,CD 位达到了我的期望值并设置为高。 但从不断言 IRQ 针脚。 我的 IRQ 寄存器中也有0。 我在这里错过了什么?
请您提供建议吗?
瑞安
我唯一能想到的是 CD 的 MODE_IRQ_MASK 设置。 如果 MODE_IRQ_MASK (寄存器地址0x21)的 CD 位([1])设置为 HIGH,则 IRQ 的载波检测触发器将被屏蔽。 有关 SPI 接口 HART 的第8.4.3节对此进行了一些讨论。 我认为您也可以检查接收 FIFO 级别阈值,如同一节所述。
不管怎样,您是否可以读回 MODE_IRQ_MASK ,并让我知道寄存器中写入了什么内容?
吴约瑟
瑞安
很抱歉,我最近没有回复,但我已经离开办公室了。 我仍然 对 为什么没有设置 IRQ 感到有些意外。 您是否曾尝试使用 IRQ_LEV=1以便于查看该值,而不必在脉冲后触发?
您是否可以报告设备的注册设置(所有注册,以防万一)? 我想知道在启动后向寄存器写入的内容和写入顺序。 此外,一般情况下,获取一些有关系统的信息可能会有所帮助。
我还会与其中一位原始设计人员核实,看看他是否有任何想法来解释为什么不设置 IRQ。
吴约瑟
约瑟夫,你好,没问题。 在启用多路复用器之前,以下各项按此顺序在启动时进行注册及其值:
状态0x20 - 0xC025
IRQ 0x21 - 0x7FFD
控制1 0x02 - 0x8052
控制2 0x22 - 0x01FD
FIFO 级别0x25 - 0x0011
顺序为:
//重置设备寄存器
modem_reset_address write_modem
//读取所有寄存器并在本地复制值以保持最新
modem_status_address read_modem
//Block all events that trigger IRQ pin from CD (阻止除 CD 之外的所有触发 IRQ 的事件)
调制解调器 IRQ_MASK_address write_modem
调制解调器 IRQ_MASK_address READ_MODEM
//Configure CRC for all communication from now on to make a full 32位帧
modem_control_address_1 read_modem
MODE_CONTACT_ADDRESS_1 WRITE 调制解调器
modem_control_address_1 read_modem
//写下五分之二的阈值
调制解调器_FIFO 级别设置地址 write_modem
调制解调器_FIFO 级别设置地址读调制解调器
//读取控件2寄存器
modem_control_address_2读_调制解调器
MODE_CONTACT_ADDRESS_2 WRITE 调制解调器
modem_control_address_2读_调制解调器
//读取状态寄存器以本地更新
modem_status_address read_modem
我确实尝试了脉冲和逻辑电平,但我只看到在配置寄存器之前在引脚上发生了一些事情,以后再也不会发生。
我希望在 设置 RTS 位后 IRQ 引脚切换/逻辑电平,以启用载波信号,并在 MUX 配置为环回时简单地检测到该信号?
我的系统位于随附的示意图中。 输出馈送至 MUX 和来自 DEMUX 的输入,两个 MUX 都位于同一通道上,因此它是一个电子回送。 我已经在硬件中验证了这一点,很明显,当 CD 位处于状态时,调制解调器会看到这一点。
谢谢
瑞安
我确实和设计师交谈过,但我们没有找到您问题的具体答案。
他确实有一些建议来帮助调试这一点。 在您的工作中,请保留 DUP_EN=1。 这可以确保您可以同时发送和接收全双工通信。 确保 MOD_OUT 路由到 MOD_In。 我知道您通过多路复用器设置了此项。 最好使用示波器查看信号,并确保 MOD_In (或 MOD_INF)的信号幅值足够大。 只要是这样,我就会发布 MOD_In 信号的范围照片。
正如我所说的,他不知道为什么你会在寄存器中读取 CD,但在 IRQ 针脚处不知道。 我会再次验证掩码设置,但它似乎与您编写的方式正确(只允许 CD 将其关闭)。
他还建议将 IRQ_LEVEL 和 IRQ_POL 设置为1。 同样,当信号持续而不是出现与信号跳跃相关的东西时,更容易看到 IRQ。 我会使用示波器来查看调制信号和 IRQ。 如果只有一个跳跃,可能它不会触发范围(我还是设置了 IRQ_LEV=1)。
吴约瑟
你好约瑟夫
我只是想再次打开它,因为我在读取此配置中的 FIFO 时遇到问题。 我用环回配置发送调制解调器15字节,并验证调制信号到达调制解调器的范围。当尝试读取五分之四时,调制解调器要么不发送任何数据,要么在每次读取命令时重复发送相同字节。
我尝试过许多不同的 FIFO 阈值级别,对于 TX,RX 1为15,RX 1为1,TX,TX 1为0,RX 1为0,似乎什么都不能修复。
我是否正确地说,如果读数不正确,那么五分位数就会被编入索引?
我是否需要做些其他的事情来为五岁以下的人编制索引?
我正在启用 RTS 位,然后等待设置 CTS,然后发送字节,然后禁用 RTS,这是否是正确的过程?
谢谢
瑞安
首先,绘制一个通信部分的示波器图解可能会有所帮助。 这将有助于解决任何与时间和边缘相关的问题。
第二,如何从 FIFO 中调出数据? 该命令基本上应该是从 FIFO 寄存器(A4 FF FF)读取的,然后是 NOOP (00 00)。 我以前曾在下面的主题中作为 E2E 问题回答过这个问题,它可能也适用于您。
吴约瑟