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.

SCIA和SCIB同时向外发送数据

Other Parts Discussed in Thread: C2000WARE

SCIA和SCIB同时向外发送数据,在串口调试助手显示的数据,都有丢失

单独测试SCIA的时候,100HZ的数据更新率,正好一秒100条,但是SCIA发送数据的同时,SCIB也发数据时,SCIA的数据一秒只有60条左右。

两路SCI,相互造成影响

特来请教

谢谢

  • 请问您使用的是哪款芯片?使用的是TI例程还是自己的程序?若是可以的话,请给出例程路径或者私信一下您的工程。

    另外能否可以介绍一下您的硬件连接?
  • F28388D,使用的TI的例程sci_ex3_echoback.c
    例程路径:C:\ti\c2000\C2000Ware_3_04_00_00\driverlib\f2838x\examples\c28x\sci
    例程本身只有SCIa,我给加了SCIb。
    SCIa和SCIb用的都是SCI_writeCharBlockingNonFIFO函数。

    硬件连接上,SCIa接的是232数字隔离芯片,SCIb接的是422数字隔离芯片。然后,分别用232的线和422的线,接到电脑上,观察串口的数据更新率,发现232和422同时向串口调试助手发数据的时候,每秒的数据少了很多。

    特来请教
    谢谢
  • @vince 说:
    发现232和422同时向串口调试助手发数据的时候,每秒的数据少了很多。

    能具体描述一下“少了很多”吗?

    另外单独测试SCIb是否能够正常收到数据?

  • SCIa和SCIb分别单独测试,都是正常的。一起运行,SCIb的数据与数据之间要隔好长时间。scia单独测试是一秒100条。一起运行后,scia变成一秒发80多条
  • 您可以看一下 用户指南 中的中断优先级 3.4.5 PIE Channel Mapping

    每行是一个组,每列是其中的一个通道。当多个中断待处理时,将首先服务编号最低的组中编号最小的通道。

    因此,中断表中顶部的中断具有最高优先级,而底部的中断具有最低优先级。

    也就是说SCIA_RX的中断优先级最高,SCIB_TX的优先级最低

    根据您的描述,感觉是中断优先级抢占有点问题,SCIA的中断优先级相对高一些,会打断低优先级的SCIB,从而导致了您之前提到的

    “SCIb的数据与数据之间要隔好长时间”

    另外您是否使用了FIFO?若是使用了的话,请参考 该链接

  • 我只用了SCIA和SCIB的发送功能,接收没有使用。
    接收,我用的是查询方式,没有使用中断
    用的发送函数,是咱们里程自带的SCI_writeCharBlockingNonFIFO()

    谢谢