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.

[参考译文] TL16C752C:寄存器 IER 的值与初始值相比未发生变化的现象。

Guru**** 2528170 points


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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1255849/tl16c752c-phenomenon-where-the-value-of-register-ier-does-not-change-from-the-initial-value

器件型号:TL16C752C

您好!

问题1:
我尝试根据数据表中的时序图更改寄存器 IER 的值、但读出的值未与初始值相比发生变化。 请检查更改寄存器 IER 的方法是否正确。

1.将 RESET 设置为低->高->低以进行初始化。 2.
2.设置 IOW =高电平。 3.
3.延迟(约1 ms)。
4.设置 A[2]= 001。
5.延迟(约1 ms)
6.设置 CSA =低。 7.
7.延迟(约1 ms)
8.设置 IOW = Lo.
9.延迟(约1 ms)
10.设置在"SAFETY_STAT_4寄存器"表中、
11.延迟(大约1 ms)
12.设置 IOW =高电平。
13.延迟(约1 ms)
14.SET CSA =高电平。
15.延迟(大约1 ms)
※延迟(约1ms)根据时钟19.6608 MHz 计算得出、通过以下过程获得。
---
for (I = 0;I < 5;I++)
{
NOP();

---

问题2.
请检查寄存器设置是否符合规格要求。
要求的规格。
输入时钟:19.6608 MHz
波特率:2400bps
数据长度:8位
奇偶校验:无
停止位:1

寄存器设置
DLL = 0000 0000
DLh = 0000 0010
LCR = 0000 0011
LSR = 0110 0001
FCR = 0000 1001
MCR = 0000 0100
IER = 0000 0001

问题3:
除非存在起始位、奇偶校验位或停止位、否则值是否不存储在 RHR 或 RX FIFO 中以用于与 RXA 通信?

问题4:
该值是否未保存在 RHR 或 RX FIFO 中、除非起始位和奇偶校验位之间的数据位介于5到8位之间? 此外、如果数据位中混合了噪声、会发生什么情况?

问题5.
我知道在读取 RHR 时、RHR 会被 RX FIFO 中存储的下一个数据覆盖。
例如、如果一个接一个地需要数据、则读取一次 RHR 值、然后再次读取 RHR 值。 我的理解是否正确?

谢谢。

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

    尊敬的 Conor:

    我将更详细地探讨这一问题。 我会在明天中午前给您回复。  

    到目前为止、在 Q1中代码的顺序似乎是正确的、1ms 延迟对于地址保持时间、数据保持时间、数据设置时间和 IOW 选通宽度来说是足够的时间。 所有这些值都在 ns 范围内、因此1ms 绰绰有余。  

    我会在明天第二季度再次检查注册设置、也会获得第三季度至第五季度的答案。  

    此致、

    泰勒

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

    尊敬的 Conor:

    问题1:
    我尝试根据数据表中的时序图更改寄存器 IER 的值、但读出的值未与初始值相比发生变化。 请检查更改寄存器 IER 的方法是否正确。

    1.将 RESET 设置为低->高->低以进行初始化。 2.
    2.设置 IOW =高电平。 3.
    3.延迟(约1 ms)。
    4.设置 A[2]= 001。
    5.延迟(约1 ms)
    6.设置 CSA =低。 7.
    7.延迟(约1 ms)
    8.设置 IOW = Lo.
    9.延迟(约1 ms)
    10.设置在"SAFETY_STAT_4寄存器"表中、
    11.延迟(大约1 ms)
    12.设置 IOW =高电平。
    13.延迟(约1 ms)
    14.SET CSA =高电平。
    15.延迟(大约1 ms)
    ※延迟(约1ms)根据时钟19.6608 MHz 计算得出、通过以下过程获得。
    ---
    for (I = 0;I < 5;I++)
    {
    NOP();

    ---

    [/报价]

    我假设您使用数据表中的图1来向器件写入数据。

    根据您的事件序列以及图1中出现的顺序、这看起来是正确的。 LCR[7]在写入 IER 时有什么价值?  

    代码的第一部分的要点是将 RX 数据设置为正确的中断?  

    问题2.
    请检查寄存器设置是否符合规格要求。
    要求的规格。
    输入时钟:19.6608 MHz
    波特率:2400bps
    数据长度:8位
    奇偶校验:无
    停止位:1

    寄存器设置
    DLL = 0000 0000
    DLh = 0000 0010
    LCR = 0000 0011
    LSR = 0110 0001
    FCR = 0000 1001
    MCR = 0000 0100
    IER = 0000 0001

    [/报价]

    波特率= XTAL /(16* Div)= 19.6608MHz /(16 * 512)= 2400波特

    LCR[1:0]= 11 =字长= 8位

    LSR 表示发送器保持和移位寄存器为空、THR =空。  

    设置 FCR 以使能发送和接收 FIFO。 选择 DMA 模式1。

    MCR 在环回中启用 FIFORdy 寄存器控制 MSR[6]

    IER 仅打开 RHR 中断。 thr 与其它针对接收器线路状态、调制解调器状态、Xoff 中断、/RTS 中断和/CTS 中断的中断一起被禁用。  

    我相信这里的一切都会顺利完成。

    [quote userid="465179" url="~/support/interface-group/interface/f/interface-forum/1255849/tl16c752c-phenomenon-where-the-value-of-register-ier-does-not-change-from-the-initial-value Q3.
    除非存在起始位、奇偶校验位或停止位、否则值是否未存储在 RHR 或 RX FIFO 中以用于与 RXA 通信?

    当 RXA 上发生通信时、值应存储在 RHR 64字节 FIFO 中。 我试图进一步了解 Q3、但我认为标准的 UART 做法是在每个事务中包含起始/奇偶校验/停止位。

    Unknown 说:
    Q4.
    该值是否未保存在 RHR 或 RX FIFO 中、除非起始位和奇偶校验位之间的数据位介于5到8位之间? 此外,如果数据位中的噪声混合,会发生什么情况?

    我假设是这样、因为字长在您的设置中配置为8位。 因此、当 RHR 存储信息时、它将始终查找起始位、8位、奇偶校验、停止位格式。 例如、如果配置为8时数据只有7位、则我可以看到 UART 器件损坏了该数据。  

    我希望、对于较慢的波特率、信号中混合的噪声不会太多。 UART 尝试通过 DATA 位读取约50%的数据、从而允许数据在采样数据之前从过冲/下冲中稳定下来、从而提高 UART 的稳健性。 这也是在数据通信中一位发生翻转时使用奇偶校验的原因(对于1个奇偶校验错误)。  

    如果您担心噪声、可能值得收集示波器捕获来分析信号形状。  

    Unknown 说:
    Q5.
    我知道在读取 RHR 时、RHR 会被 RX FIFO 中存储的下一个数据覆盖。
    例如、如果一个接一个地需要数据、则读取一次 RHR 值、然后再次读取 RHR 值。 我的理解是否正确?

    这是有道理的、因为这正是 FIFO (先进先出)的功能。 RSR (接收器移位寄存器)从 RXA 引脚对数据进行串行移位、从而将其转换为并行数据、然后再将其移入 RHR。 读取 RHR 时、被放入寄存器的数据的第一个字节是将从寄存器读取的数据的第一个字节。 读取 D0-D7引脚上的数据、一旦再次读取 RHR、该数据将被行中的下一个字节覆盖。  

    此致、

    泰勒

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

    您好、 Tyler:

    感谢您的答复。 我们将在开展发展工作时参考这一点。

    根据您的事件顺序和图1中的顺序,这看起来是正确的。 LCR[7]在写入 IER 时有什么价值?  [/报价]

    在 LCR[7]= 0时写入 IER。 我在写入前读取 LCR 以确保 LCR[7]= 0。

    谢谢。

    科诺

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

    尊敬的 Conor:

    感谢您提供的信息。 期待收到您的工作反馈。

    此致、

    泰勒