工具与软件:
我是日本人。 我正在使用转换应用程序编写此主题。
您好、TI 支持团队。
我正在使用 NS16C2752、无法重写内部寄存器。
在写入寄存器之前是否需要执行任何操作?寄存器是否处于写禁用状态?
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.
感谢回复 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感谢您的观看。 寄存器中似乎有值、但所提供的步骤根本不进行切换。 我能想到的唯一一点是在每个步骤中探测所有的输入引脚、以验证引脚是否实际设置为我们期望的值。 可能另一个问题是、 在 我们尝试写入 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 引脚以确保其在这些步骤期间不会切换。
-鲍比