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.

[参考译文] NS16C2752:无法写入寄存器。

Guru**** 2482105 points
Other Parts Discussed in Thread: NS16C2752

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1435026/ns16c2752-unable-to-write-to-registers

部件号:NS16C2752

工具与软件:

我是日本人。 我正在使用转换应用程序编写此主题。

您好、TI 支持团队。

我正在使用 NS16C2752、无法重写内部寄存器。
在写入寄存器之前是否需要执行任何操作?寄存器是否处于写禁用状态?

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

    您是否能够验证输入引脚(地址引脚、CHSL、#WR、RD 等)的逻辑电平是否正确切换?

    您是否还可以验证 MR 已正确设置并在上电时切换?  

    您能否写入 LCR (地址3)并读回写入的值以验证写入是否正确进行?  

    某些寄存器要求您在其他寄存器中设置某些位、以便写入这些位。 如果您可以写入不具有 LCR 等这些条件的寄存器、我们可能需要首先进行验证。  

    -鲍比

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

    感谢回复 Bobby。

    我再次进行了检查、输入引脚或先生没有问题

    我也能够写入 LCR 和 SCR,没有任何写入限制,没有任何问题。

    但我无法写入 DLL 和 DLM 寄存器。
    操作步骤如下
    LCR= x.80
    DLL= 0X02
    DLM= 0x00
    LCR= 0X03
    写入操作按此顺序完成。

    重写 DLL 和 DLM 寄存器之前的寄存器具有以下值。
    (ADR) 0x00、0x01、0x02、0x03、0x04、0x05、0x06、0x07
    (VAL) 0x35、0x00、0x00、0x80、0x00、0x60、0xF、0xFF

    由于 LCR (0x3)为0x80、我认为可以写入 DLL 和 DLM、但我是否需要设置其他寄存器?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    由于 LCR (0x3)是0x80、我认为可以写入 DLL 和 DLM、但我是否需要设置其他寄存器?

    您不需要设置其他寄存器。 对 DLL/DLM 进行写入的唯一要求是向设置为"1"的 LCR 位7进行写入(LCR=0x80、总寄存器不能为0xBF)。  

    我猜中了可能您认为您没有写入这些寄存器的原因。  

    如果您将 LCR 寄存器更改为0x80、然后写入 DLL/DLM、则在将 LCR 更改为0x03之前、应立即读取两个 DLL/DLM。 如果在 LCR 设置为0x03后尝试读取 DLL/DLM、则将无法读取 DLL/DLM。 最终会改为读取 RBR/IER。  

    您是否在写入 DLL/DLM 寄存器后立即对其进行验证?

    第1步:写入 LCR =0x80

    第2步:写入 DLL = 0x02

    第3步:读取 DLL

    第4步:写入 DLM = 0x00

    第5步:读取 DLM

    第6步:写入 LCR = 0x03

    -鲍比

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

    您是否在写入 DLL/DLM 寄存器后立即对其进行验证?
    是、在 LCR=0x03之前读取。

    其他寄存器整体更改根据以下程序进行。
    IER= 0X01
    LCR= x.80
    DLM= 0x00
    READ DLM
    DLL= 0X02
    READ DLL
    LCR= 0X03
    FCR= 0X01
    FCR= 0X07
    FCR= 0X07
    我们已执行此过程并确认除 DLL/DLM 外的所有器件均已更改。

    例如、是否可以对寄存器进行写入、然后需要一些时间来反映该值?

    当 LCR[7]= 0时、我也添加了寄存器值、以防万一。
    (ADR) 0x00、0x01、0x02、0x03、0x04、0x05、0x06、0x07
    (VAL) 0x00、0x01、0xC1、0x03、0x00、0x60、0xF、0xFF

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    例如、是否可以写一个寄存器、然后需要一些时间才能反映该值?

    应该会有轻微的延迟、但不应该是您需要等待一两秒钟才能看到的情况。 看到您能够读取其他寄存器时、它可能与延时时间无关。  

    您是否能够写入 AFR 寄存器和设置 BAUDOUT 位? (AFRb1=1)

    然后探测 MF1/MF2引脚。 如果您写入 DLL/DLM 寄存器、您应该会看到 Baudout 引脚发生变化、成为波特率的16倍。 我们可以尝试使用此函数来验证是否正在写入寄存器(以防无法正确读取它们)。

    您是否还能够分享 NS16C2752原理图?  

    -鲍比

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

    >是否能够写入 AFR 寄存器并设置 BAUDOUT 位? (AFRb1=1)
    >然后探测 MF1/MF2针脚。
    步骤1:AFR=0x02
    步骤2:读取 DLL/DLM
    步骤3:DLM=0x00
    步骤4:DLL=0x02
    步骤5:读取 DLL/DLM
    比较在步骤1之后和步骤4之后、MF2的输出没有变化。
    在步骤2和步骤5中获得的 DLL/DLM 值为 DLL=0xDE 和 DLM=0x01。
    捕获并连接了 MF2的输出。

    >您是否还可以分享 NS16C2752的示意图?
    附有 NS16C2752外设的原理图。
    请指出任何错误的连接。
    读取/写入从 CPU1执行、中断监控从 CPU2执行。

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

    我看不到原理图有任何大问题、好像您在 Vcc 上具有局部去耦。

    [报价 userid="629967" url="~/support/interface-group/interface/f/interface-forum/1435026/ns16c2752-unable-to-write-to-registers/5512406 #5512406"]步骤1:AFR=0x02
    步骤2:读取 DLL/DLM
    步骤3:DLM=0x00
    步骤4:DLL=0x02
    步骤5:读取 DLL/DLM
    比较在步骤1之后和步骤4之后、MF2的输出没有变化。
    在第2步和第5步中获得的 DLL/DLM 值为 DLL=0xDE 且 DLM=0x01。[/QUOT]

    感谢您的观看。 寄存器中似乎有值、但所提供的步骤根本不进行切换。 我能想到的唯一一点是在每个步骤中探测所有的输入引脚、以验证引脚是否实际设置为我们期望的值。 可能另一个问题是、 在 我们尝试写入 DLL/DLM 之前 MR 引脚正在某种程度上被复位...  

    [报价 userid="284552" url="~/support/interface-group/interface/f/interface-forum/1435026/ns16c2752-unable-to-write-to-registers/5509084 #5509084"]

    第1步:写入 LCR =0x80

    第2步:写入 DLL = 0x02

    第3步:读取 DLL

    第4步:写入 DLM = 0x00

    第5步:读取 DLM

    第6步:写入 LCR = 0x03

    [报价]

    你能否在1后面添加一个阶跃来读取 LCR、以验证它是否实际设置正确?

    我认为、在写入 LCR 和 DLL 时、探测地址引脚 CHsel、CS、RD、WR 和数据线、然后也重复读取可能是一个好主意。  

    我还会监控 MR 引脚以确保其在这些步骤期间不会切换。  

    -鲍比

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

    感谢回答 Bobby。

    看起来其他一些器件正在影响 MR、并给 MR 带来了高输入
    我修复了它,检查和 DLL 和 DLM 能够写入没有任何问题。
    感谢您目前的热情响应。

    我仍然无法使数据传输正常工作、所以我会查看数据表、如果我发现任何我不明白的地方、还会再次与您联系。
    感谢您的答复。

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

    很高兴您能够找到 DLL/DLM 问题的根本原因。  

    如果无法使变速器正常工作、请随时创建另一篇 e2e 帖子。  

    -鲍比