串口通信的心得

本文介绍了串口通信的实现方法,包括发送和接收中断服务程序的详细代码。通过定义发送和接收缓冲区,利用中断处理数据发送与接收,确保数据传输的正确性和效率。在接收端使用环形队列避免数据丢失,并提供了读取数据的函数。
摘要由CSDN通过智能技术生成
串口是我的最爱,成本低,容易实现,连接简单方便。在我设计的硬件中,无一不配置一个串口,在主要功能完成之后,我会在计算机上再编写一个终端软件。这个软件可不只用来监控,我用这个软件完全控制硬件的所有功能,直到能够监测到硬件尽可能多的状态信息,只要一看这些信息,我就能知道硬件的工作状态如何,故障可能发生在哪里。
    近来发现论坛里提问频率较高、问题也五花八门的问题之一就是串口通信问题,因此想在这里写点心得,也只是一点心得,对于网上很容易查到的信息,这里就不谈了。
    问题一:缓冲区大小的问题。
    现在绝大多数CPU都包含串口功能,同时也为串口配置了FIFO缓冲区,对于FIFO缓冲区的使用存在着些误区。
    单就串口来说,通信也分为很多方式,缓冲区大小影响较大的有两种:突发通信和连续的数据流通信。突发通信的主要特点是:数据量小、持续时间短、通信发生时间不确定,通常的设备状态监控就属于这一类型。相对的数据流通信的特点是:数据量大、持续时间长等,如图像通信、音频采集等。
    对于突发通信,应该不使用FIFO缓冲区,或者把FIFO大小设置为1。因为在如果把缓冲区大小设置为应该接收的数据的大小,那么发生通信错误如丢失数据时就不会产生中断,接收方会认为未发生通信事件,而发送方只能靠超时认为通信中断。这和接收到数据并判断出通信数据发生错误的性质是不同的,如果接收到数据我们就可以判断出发生错误的原因,如果接收不数据,那么怎么判断,硬件连接?FIFO设置?软件错误?软件存在隐藏的bug?所以对于突发通信不应该使用FIFO。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值