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.

[参考译文] MSP430F6736:与 IrDA 光学探头的连接

Guru**** 2543630 points
Other Parts Discussed in Thread: MSP430F6736

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/587952/msp430f6736-interfacing-to-an-irda-optical-probe

器件型号:MSP430F6736

我不确定这家酒店的位置是否适合这个问题……但是…

我的 MSP430F6736是用于电量计的 MCU、我尝试使用 IrDA 端口与连接到 PC 的光学读取器进行通信。  

我的成功极少。

当我传输时、PC 上接收到的字符不是我要传输的字符。  
当我从 PC 传输时、我没有收到任何东西。

通过将示波器探头放置在实际的 IrDA 接收器和发送器上、我可以看到信号传入和传入光学探头。
我必须遵守的协议是 iec62056-21。
通信应该是1个起始位、7个字符、偶校验、1个停止位……300波特

问题1:
读卡器似乎正在将字符结构转换为其它内容..... 有人知道这种结构是什么以及它符合什么标准吗?

问题2:
在设置 IrDA 端口时、需要做什么、MSP430F6736用户指南 IrDA 第39.3.5节中未提到这些设置、以便模块正确解释接收到的信号(并正确传输)?

提前感谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    光学读取器器件型号是什么? 光学读取器如何与 PC 通信? MSP 论坛不能提供有关光学读取器操作的大量信息、但提供数据表以供参考将是有益的。

    与您预期发送的字符相比、接收到哪些字符? 用户指南不会隐藏任何关于 IrDA 通信的信息、如图39-7所示、对于来自 UART 的每个零位、TX 流应该是一个脉冲(长度由 UCIRTXPLx 定义)。 IrDA 标准要求一个3/16位周期的脉冲时间、通过 UCIRTXCLK=1和 UCIRTXPLx=5来选择。 输入格式应采用类似的格式。 请提供您调试工作的示波器快照。

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

    我刚刚发现、在这种情况下、IrDA 端口不能用作 IrDA 端口、而是用作直接 UART 端口、恰好连接到发送红外的 IR 组件!

    光学读取器不会重新编码字符。 我在误解我看到的是什么… 首先发送 lsb。

    如果您想删除这个问题、请这么做...但我认为这可能对其他人有益、因为他们认为必须将端口设置为具有稍微不同脉冲的 IrDA。

    此致
    Moshe
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ryan
    有些事情让我感到困惑。

    我按如下方式设置 IrDA 设置...
    UCA2BRW = 0x0006; // UCBRx 39.3.10 =(32768/300)/16 = 109.2267/16 = 6.8267 = 6
    UCA2MCTLW = 0x2200 | 0x00d0 | 0x0001;//对于300波特,请参见39.3.10 p1038 UCBRSx=0x22、UCBRFx=0x0d、UCOS16=1

    //首先进行 UCIRRXFLx……BRT = BRCLK
    UCA2IRCTL = 0x5400;//tPulse =(UCIRXFLx + 4)/(2 x fIRTXCLK)、我们需要 tPulse = 0.8tBIT、
    //并且我们有 fIRTXCLK = BRTx16和 tBIT = 1/BRT
    // UCIRXFLx = tPulse * 2 * fIRTXCLK - 4 = 0.8 x 2 x 16 - 4 = 21.6 = 0x15、这将变为0x5400

    UCA2IRCTL |= UCIRRXPL;// UCIRRXPL = 1、所以当看到光脉冲时、得到一个低电平脉冲
    UCA2IRCTL |= UCIRXFE;//启用 Rx 滤波器

    //现在为 Tx 侧
    UCA2IRCTL |= 0x007c;//tpulse =(UCIRTXPLx + 1)/(2xfIRTXCLK)和 fIRTXCLK = BRTx16、我们需要 tPulse = tBIT
    //为1/BRT、因此 PLX 必须为31
    UCA2IRCTL |= UCIRTXCLK;//当 UCOS16=1时、UCIRTXCLK=1=BITCLK16

    尽管我实际上并不要求(或希望)符合 IrDA 标准(但我还是将其设置为 IrDA)、并且给出了上述条件:最小接收脉冲宽度为0.8位宽度、发送脉冲宽度为1位宽度。
    MCU 在传输时没有任何问题(即光学读取器正确地解释),但它不能识别任何接收到的脉冲(光学读取器正在发送1位宽度的脉冲)....

    那么、它为什么不能识别接收脉冲(假设我说过查找脉冲宽度至少为0.8位宽度)?

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

    确保在 UCA2RXD 引脚上实际接收到脉冲、并且脉冲宽度是预期的正确宽度。 然后应尝试禁用 UCIRXFE 位或减小 UCIRXFLx 的值、以查看是否可以接收到任何值。 如果您使用 LPM、则要对二次制时间保持警惕(尽管使用如此慢的 BRCLK 应该无关紧要)。

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

    您好、Ryan

    是的、我以前尝试过所有这些。 使用了各种 UCIRXFE 值(hi, lo, inbetween),但没有区别。 我检查了 Rx 引脚上的硬件、认为这是我的硬件故障。 我不使用任何 LPM 模式。

    现在、我想我可以获得一个电视遥控器、然后尝试...现在我获得了我的 Rx 中断(好的、所以我无法对数据进行任何检测、但 eUCA2硬件确实对波形做出了响应)!!  

    因此、当 UCIREN 被置位时、eUSCA2似乎需要一个特定类型的波形(IrDA 波形)、而不管 UCIRXFLx 的设置如何。

    谢谢
    Moshe  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    eUSCI 外设需要一个 IrDA 脉冲(UART 位的分数)、而您的器件实际上以 UART 格式发送数据、如果您使用 UART 模式、您可能会避免几个问题。

    此致、
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ryan、我知道(最后我使用了 UART 模式)、 但最初当我使用 IrDA 模式时、我将 eUSCI 设置为响应 IrDA 脉冲、这些脉冲的最小值为10/16、但它仍然不是 respond....it、因为它忽略了设置并选择保持3/16。
    谢谢
    Moshe