WCH沁恒单片机
直播中

北京烤鸭

12年用户 617经验值
私信 关注
[问答]

怎么只有ch563启用FIFO发送的例子,没有启用FIFO接收的例子呢?

问题1:示例中,怎么只有ch563启用FIFO发送的例子,没有启用FIFO接收的例子呢?
问题2:我用示例中的代码,串口1,。
    while(1){
        RcvNum  = Seril1Rcv( rcvbuf );                                          /* 等待接收数据,并通过串口1发送出去 */
        Seril1Send( rcvbuf, RcvNum );
    }
为什么我向芯片发送数据A1 A2 A3后,芯片不断定地返回A1 A2 A3,应该是只返回一次才对呀,。正常情况下,读取了芯片接收缓存区的数据后应该是清零了,为什么不会自动清零呢,示例中也没有找到可以手动清缓存的代码。感觉这串口还不如51单片机人性化,怎么都不能清掉接收缓存里的数据。
  

回帖(4)

张玉

2022-5-23 11:23:10
问题1:只要使能串口的FIFO,数据接收就是进入FIFO的。参考UART1_INT例子,是在中断函数中去处理的。且串口兼容 16C550,有很多处理方式可以借鉴。UART1中的Seril1Rcv其实就是FIFO模式接收的
问题2:如果是UART1例子中,接受完数据之后循环能够一直运行,观察Seril1Rcv函数可知接收方式是有数据就处理,没数据就退出,所以Seril1Send能够一直被调用,需要再增加逻辑控制
举报

何培芬

2022-5-23 11:23:15
后来把波特率从115200改成9600就正常了。也不知道是什么原因,反正不能理解。
举报

李辰圻

2022-5-23 11:23:19
不同波特率并不会造成类似的结果,建议在检查一下代码逻辑
举报

贵奂

2022-5-23 11:23:23
搞不清楚,反正就是挺怪。9600就是正常的,用115200就不行
举报

更多回帖

发帖
×
20
完善资料,
赚取积分