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.

C2000的SCI,怎样接收DMX512协议信号? 设置了检测break的中断,总是出现帧错误。

一直困绕着我~~~~

按SCI的说明,超过10位的低电平 --- 没有停止位时,置位BRKDT。

我设置的情况是,RXERRINTENA =1,RX/BKINTENA = 1, SCIFFENA = 0, 即不使用FIFO,允许错误中断及break中断。

实际使用时,时入中断的状态为SCIRXST = 0x92,一直找不到break!!!

谢谢大家

  • 按SCI的说明,超过10位的低电平 --- 没有停止位时,置位BRKDT。

    我设置的情况是,RXERRINTENA =1,RX/BKINTENA = 1, SCIFFENA = 0, 即不使用FIFO,允许错误中断及break中断。

    实际使用时,时入中断的状态为SCIRXST = 0x92,一直找不到break!!!

    Eric:

    你使能了RXERRINTENA ,即是使能了RXERR这个中断源。而从出错的状态位来讲,是FE导致了这个出错,从而进入中断。

    那你想干什么呢?你是想实际验证break情况吗,那你得给出break的条件,同时直接把RXERRINTENA 给关掉。

    FIFO Options          SCI Interrupt Source        Interrupt Flags        Interrupt Enables          FIFO Enable       Interrupt Line
                                                                                                                                                         SCIFFENA
    SCI without FIFO     Receive error                      RXERR                    RXERRINTENA                 0                         RXINT
                                     Receive break                    BRKDT                     RX/BKINTENA                  0                         RXINT
                                     Data receive                       RXRDY                    RX/BKINTENA                   0                         RXINT
                                     Transmit empty                   TXRDY                    TXINTENA                         0                         TXINT


    RXERR can be set by BRKDT, FE, OE, PE flags. In FIFO mode, BRKDT interrupt is only through RXERR flag

  • 谢谢您!

    我接的是DMX512的一个控制台,发信号时,帧开始t就是break信号。曾去掉RXERRINTENA 这个中断源,但又进不去接收中断了。


    我再试试看。