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.

关于SLAA204 soft modem中的问题



在文档SLAA204 MSP430 Embedded Soft-Modem Demo中,关于串口start bit的确认,文档中的原话是“As soon as a start bit was detected (recognition of six ‘SPACE’ periods),”,请问为什么用6个space来作为start bit?另外,start bit其实就是一个0,那么如果区分数据中的0和start bit这个0呢?

  • Hi Xue,

       这个其实是UART的总线协议的定义。你可以从网上去找找关于UART的报文协议。一般在定义这个总线报文逻辑的时候,判断起始位,都会是采用连续在多个(6个或8个)时钟上升沿去监测起始位的电平,如果都是低电平,则判断检测到起始位。然后在逻辑状态机里面切换到,接收数据的状态机逻辑里面。这样的话,就很容易区分是起始位的低电平还是接收数据的低电平。

    谢谢

    ken

  • hi ken,

            非常感谢你的解答,让我豁然开朗。

            另外还有一个问题是,我现在按照soft modem这个文档里的东西做,通过示波器看,URXD应该收到数据了,但是URXD中断一直不进。请问URXD的接收中断,是否是在接收到一个完整的带start bit和stop bit及一个字节的10bit数据后才会触发?或者说URXD接收中断触发规则是什么?

  • Hi Xue,

      按照UART的协议来说,一般是接收端收到了完整的数据,并把数据放到接收缓存的buffer里面以后才去触发接收中断的信号,MCU响应后,才会清楚中断标志位,然后将数据由buffer里面转移到用户定义的RMA区间里。

    如果是软件仿真操作的话,一般接收方方也是通过接收计数,当根据事先定义好的协议,在接收完数据位和相关的校验位和结束位,才回去触发接收终端的。

    谢谢

    ken

  • hi ken,

            我现在设定的是一个start bit一个stop bit,无校验位。

            和soft modem中的方式一样,URXD接到的信号不是从UTXD中出来的,而是从digital IO出来的。

            但是现在通过示波器看digital IO,已经有信号了,但是URXD还是没有中断,请问这有什么可能呢?如果是通过接收计数器判断接收中断,应该会进中断才对啊?

  • Hi xue,

      我没看具体的程序,我觉得你是不是可以看看GPIO的接收中断是否是使能了,或者是说是不是有类似于计数判断然后使能接收中断的语句。

    中断进不了有很多原因,关键是看你有没有把各个相应的使能打开。

    谢谢

    ken

  • hi ken,

          非常感谢你的解答,给了我很多帮助。