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.

[参考译文] TMS320F2.8069万:是否可以在单台PC上使用"SCI-loop"功能和开发多处理器串行链路的代码?

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/583609/tms320f28069-is-it-possible-to-use-sci-loopback-feature-and-develop-code-for-multi-processor-serial-link-on-single-pc

部件号:TMS320F2.8069万

大家好,TI的硬件员工,

我想在独立PC上开发和测试多处理器SCI通信链路( 当然使用ADDR-IDLE LINE,SLEEP,TXWAKE,RXWAKE位)。 我将像处理来自远程节点的RX部件一样处理它。

但我的问题是,在LOOPBACK位设置的情况下,SCI是否会在本地处理器中模拟远程设备的RXWAKE? 多处理器通信中使用的位的行为/一致性如何? 它们的行为是否与从远程主机接收地址帧的行为相同?

我是否可以像从远程主机一样使用环回功能唤醒自己的RX?

请澄清。

谢谢

Sayee

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Sayee
    我不知道为什么这不起作用,但我从未这样做过。 我会向你查询,并告知你。

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

    两天多以来,我尝试在独立系统上实施多处理器SCI。 我只能取得有限的成功。

    我只单步完成了TX/RX ISR,无法进行"自由运行",因为很少有问题无法解决。

    一些观察结果:

    1.仅addr模式和非iidle-line模式工作。

    2.在发出TXWAKE的地方,如果我们不同时启用RX,使Sleep = 0,则RX端的数据会丢失。

    3. FIFO,TX和RX数据进度(步数延迟(移位和重建)无助于步骤2中所述的方法。

    4. RX ISR在TX ISR清除睡眠位时触发,导致RX在正确帧(地址字的开头)之前唤醒一个字。

    5.应用程序无法知道此RX字词是否是新帧的开始。 在地址模式下,无法检查地址位-只有这样才能帮助RX同步启动新帧。 否则,它可能会错误同步(由于数据负载中的数据模式匹配)。

    6.无法单独刷新TX或RX管道! SCI重置同时刷新!

    推断:

    使用SCI (已记录接口)的当前实现,不能独立地实现/模拟和测试多处理器SCI,除非保留位字段中有一些未记录的功能!

    如果您对contra有任何意见,请告诉我。 我很乐意尝试!

    虽然很失望!

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

    Sayee

    阅读完您的观点后,我认为您应该尝试 将SCIA循环至SCIB。 这将使您能够拥有完全独立的调试设置,从而避免您突出显示的某些问题。 请参阅下面我对您的观点的评论。

    1/2/3。  检查将SCIA循环至SCIB是否 解决了您所面临的问题,测试方式一个SCI模块充当"主"和"从",可能导致以下编号4中的问题。  

    4.我*认为*这是因为当SCI开始传输时接收器被唤醒... 我没有预见到这 一点,这意味着您不能使用内部回送测试SCI的多处理器模式。 如果您仍然希望拥有完全独立的调试设置,您可以将SCIA和SCIB循环在一起,使用一个SCI模块 练习并向另一个模块发送消息。

    5.每条消息中都有一个位 ,指示该帧是地址还是数据帧,对于数据帧,该值必须为0。

    6.您可以使用TXFIFO重置和RXFIFO重置单独刷新FIFO,这是否满足您的要求?

    很抱歉您的失望,请尝试上面的一些建议,如果您仍有问题,请告诉我。 但愿不是如此,但如果是这样,我们可以继续从那里进行调试。

    希望它有所帮助,
    科迪

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

    您对第4点的观察不正确。 调用TX时,接收器继续休眠。 这就是数据字节丢失的原因。 这就是为什么我提到,对于地址帧TX,TX-ISR不仅应该发出TXWAKE,而且还应该重置休眠,以避免RX模块丢失数据字节。

    但是,我在当前工作中唯一有待解决的一个问题是,RX模块在下一个地址帧开始前被唤醒一个单词 (因为睡眠复位是由TX-ISR与TXWAKE一起处理的,这是RX模块的预触发器,它会提前一个字唤醒!)。

    我可以做一些脏的编码,甚至跳过最后一个数据字,然后同步到下一个地址字。 但我想写一个在独立和多处理器环境中都能正常工作的简洁界面。

    条件通信只能用于TX-ISR中的环回启用(非常明显)和睡眠重置(不是非常明显!)

    我认为循环使用SCI-A和SCI-B是一个很好的建议。 它有两个方面。 一是物理外部布线。 我认为这是SCI-A TX到SCI-B Rx和Vesa的简单布线。 正确吗? 第二个是SCI-B的可用性。 在我的项目中,它不是。 它已被另一个通信占用。

    请注意,如果在接收到地址帧或数据帧时调用RX-ISR,则在转换器级别上会取走地址位,并且应用程序没有要知道的接口(没有要检查的位!)。

    FIFO刷新不处理换档器中的数据,换档器将完成正在进行的工作并进行报告。

    显然,当TI设计SCI并随后进行增强时,对多处理器模式的支持(如报告地址字节的接收)没有得到太多的考虑。

    我希望我已经清楚说明了这一点。

    谢谢

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

    Sayee

    要将SCI-A连接到SCI-B,请正确选择SCIATX->SCIBRX和SCIARX<-SCIBTX。 此 连接 实际应用中很少有用,我只建议使用它 来帮助调试SCI设置和协议。

    你的帖子中有很多信息! 如果您可以 直接提问,这将对我很有帮助。

    此致,
    科迪