玩转开发板--CH341串口编程及测试

本文介绍了在CentOS6.7环境下,使用arm-linux-gcc交叉编译器针对fl2440开发板进行SIM900 GPRS模块的串口编程。重点讲解了串口通信的注意事项,包括异步通信速率、数据位、校验位和停止位等。通过set_comport.c程序示例,展示了如何设置串口参数。在测试过程中,遇到了u-boot中USB串口时钟问题,并给出了解决方案。最后,提供了测试串口的Makefile脚本和在开发板上的运行步骤。
摘要由CSDN通过智能技术生成

 


    

开发环境:CentOS6.7(虚拟机)

交叉编译器:arm-linux-gcc  gcc version 4.4.6 (crosstool-NG 1.16.0)

开发板fl2440(内核版本-linux-3.0)

开发模块:SIM900 GPRS


串口编程:

    编写串口需要注意的点:

    1.串口为串行通信,全双工,异步通信,因此需要了解它的异步通信的速率;

    2.了解串口包含哪几种数据位,异步通信速率,校验位及停止位等;

   


    简易串口set_comport.c:

 

/*********************************************************************************
*      Copyright:  (C) 2018 Lingyunstudio
*                  All rights reserved.
*
*       Filename:  set_comport.c
*    Description:  This file
*                 
*        Version:  1.0.0(04/28/2018)
*         Author:  guozhihao <810170156@qq.com>
*      ChangeLog:  1, Release initial version on "04/28/2018 01:04:27 AM"
*                 
********************************************************************************/
/* head of sturct termios */
#include <termios.h>
#include <unistd.h>

/* head of perror */
#include <stdio.h>
#include <errno.h>

/* head of bzero() */
#include <strings.h>

/********************************************************************************
*  Description:comport about ttyUSB0
*   Input Args:fd=open("/dev/ttyUSB0",O_RDWR | O_NOCTTY | O_NDELAY) nspeed nBits:8 nEvent:N nStop:1
*  Output Args:comport failure:return -1
* Return Value:
********************************************************************************/

int set_comport(int fd,int nSpeed,int nBits,char nEvent,int nStop)    //串口设置,第一个传递文件描述符,第二个是设置异步通信的速率,第三个设置数据位,第四个设置校验位,第五个设置停止位;
{
    struct termios newttyUSB0,oldttyUSB0;        //设置新旧结构体

    if(tcgetattr(fd,&oldttyUSB0) != 0)                //保存原先串口配置
    {
        perror("Setupserial 1");
        return -1;
    }

    bzero(&newttyUSB0,sizeof(newttyUSB0));    //
CH341串口方式支持WINDOWS 98/ME/2000/XP/Vista/Linux,提供相关驱动程序, CH341的USB转串口支持大多数常用的串口监控及调试工具程序。 驱动安装方法: 1. 标准INF文件安装方法 WINDOWS提示找到新硬件,指定驱动程序所在目录DRIVER,自动安装驱动, 如果WINDOWS没有提示找到新硬件,那么在设备管理器的硬件列表中, 选择带问号的USB设备,更新驱动程序并指定目录。 2. 使用驱动程序安装工具 先拔掉USB串口连接线,然后安装,然后插上连接线 直接使用CH341SER.EXE安装包,可以安装/升级/卸载驱动程序, 该方法更适用于最终用户。 CH341串口使用方法: CH341实现USB转串口,在逻辑功能方面的使用方法与普通计算机串口相同。 与普通计算机串口的区别: CH341提供的是仿真串口,所以不支持串口本身的纯硬件操作,例如I/O操作, 普通计算机串口是静态设备,而CH341串口是动态设备,理论上随时会断开, CH341的附加功能(下面有介绍):读取外部串行EEPROM,支持更高波特率。 提供“模块调试”工具,启动后将“类型”选择为“手工输入发送”, 打开串口后就可以用于CH341串口或者普通串口的输入输出监控及收发调试。 注意事项: CH341串口是即插即用的USB设备,正在使用CH341串口进行数据传输的过程中, 不可以将其断开(断开是指从USB插座中取出CH341或者关闭CH341的电源), 也就是说,必须在应用程序关闭该串口后,CH341串口才可以从USB插座中拔出。 如果在应用程序使用CH341串口的过程中,CH341串口设备从USB插座中断开, 那么应用程序应该尽快关闭CH341串口并退出(关闭及退出可能需要数秒时间)。 如果在CH341串口通讯过程中发生错误,极有可能是CH341串口已经物理断开, 所以在检测到错误后建议关闭CH341串口,稍等两秒后再重新打开串口通讯。 采用设备事件通知的方法可以及时了解CH341串口设备的连接与断开, 从而使串口应用程序能够及时打开和关闭CH341串口串口动态链接库CH341PT.DLL提供了API,可以监视CH341串口插拔事件, 可以搜索和识别CH341串口等,具体需参考CH341PT.H文件。 如果通讯波特率较高,建议设置较大的缓冲区,尤其在WINDOWS 98/ME下, 线程调度能力和USB实时性都比WINDOWS 2000/XP差,如果串口接收缓冲区较小, 那么在通讯波特率较高时,接收大量数据会导致串口缓冲区溢出而丢弃数据。 由于底层的USB是将多个字节组成数据包后安插到各个1mS帧中进行传输, 所以有可能将串口收发的紧靠着的两个字节实际分割在两个USB数据包甚至 两个USB帧中,在最坏情况下这两个字节在时间上有可能相隔1mS甚至2mS。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值