• / 45
  • 下载费用:10 金币  

第十二讲 串口通信技术及编程.ppt

关 键 词:
第十二讲 串口通信技术及编程.ppt
资源描述:
2019/10/5,北京理工大学珠海学院 计算机教研室,1,串口通信技术及编程,,北京理工大学珠海学院 计算机教研室,2,2019/10/5,教学目的,熟悉Windows CE5.0的串口通信技术;掌握Windows CE5.0的串口通信的编程方法,北京理工大学珠海学院 计算机教研室,3,2019/10/5,项目8:串行口通信-PDA中的串口,本节课程主要知识点 串口通信的基本原理(重点) PXA270的串行口 串口的编程(难点) 串口通信的扩展使用,北京理工大学珠海学院 计算机教研室,4,2019/10/5,教学重点 串口通信的基本原理 教学难点 串口的编程,北京理工大学珠海学院 计算机教研室,5,2019/10/5,串口通信的基本原理,6,2019/10/5,串口通信,串行通信是微计算机之间一种常见的近距离通信手段,因使用方便,编程简单而广泛使用。但现在很多笔记本电脑和PC机都不再提供串行通信接口。 在基于Windows CE的设备中仍然保留着串口。这是因为目前流行的Windows CE设备很多都具备导航、无线通讯等功能,而GPS、 GSM/GPRS及蓝牙模块都是外置串口的终端设备。,北京理工大学珠海学院 计算机教研室,7,2019/10/5,Windows CE的串口通信,串行通信是Windows CE5.0支持的最简单的通信方式,Windows CE支持串行通信的标准函数。这些函数可以用于打开、关闭和操作串行口,传送和接受数据等。,北京理工大学珠海学院 计算机教研室,8,2019/10/5,串口的接口,RS232标准采用的接口是9芯或25芯的D型插头,常用的一般是9针插头(DB-9)。 要完成基本的通信功能,实际上只需要RXD、TXD和GND即可, 通信距离较近时(12m),可以用电缆线直接连接标准RS232端口(RS422或RS485较远))。,北京理工大学珠海学院 计算机教研室,9,2019/10/5,串口的电气特性,RS232标准所定义的高、低电平信号与PXA270系统的LVTTL电路定义的高、低电平信号完全不同。 LVTTL的标准逻辑1对应2V~3.3V电平,标准逻辑0对应0V~0.4V电平。而RS232标准采用负逻辑方式,标准逻辑1对应-5V~-15V电平,标准逻辑0对应+5V~+15V。 两者间要进行通信,必须经过电平的转换,转换芯片采用MAX232。,北京理工大学珠海学院 计算机教研室,10,2019/10/5,串行通信数据格式,起始位一般用0作起始位。 数据位5-8位的数据位。 奇偶校验位1位的奇偶校验位,也可以不加。 停止位一般用1作停止位。,北京理工大学珠海学院 计算机教研室,11,2019/10/5,起始位,开始前,线路处于空闲状态,送出连续1。 传送开始时首先发一个0作为起始位。 然后出现在通信线上的是字符的二进制编码数据。,北京理工大学珠海学院 计算机教研室,12,2019/10/5,数据位,每个字符的数据位长可以约定为5位、6位、7位或8位,一般采用ASCII编码。 数据位的长度通信双方要一致,否则数据会出错。 标准的数据位长度为8位。,北京理工大学珠海学院 计算机教研室,13,2019/10/5,奇偶校验位,用奇偶校验位将所传送的字符中为1的个数凑成奇数个或偶数个。 如果是奇校验,则每帧数据中数据位加上校验位中1的个数为奇数个。 如果是偶校验,则每帧数据中数据位加上校验位中1的个数为偶数个。 也可以约定不要奇偶校验,这样就取消奇偶校验位。,北京理工大学珠海学院 计算机教研室,14,2019/10/5,停止位,最后是表示停止位的1信号,这个停止位可以约定持续1 位、1.5 位或2 位的时间宽度。 至此一个字符传送完毕,线路又进入空闲,持续为1。经过一段随机的时间后,下一个字符开始传送,又发出起始位。,北京理工大学珠海学院 计算机教研室,15,2019/10/5,波特率,每秒传送的数据位数。 每一个数据位的宽度等于传送波特率的倒数。 常用的波特率为2400、4800、9600、19200、38400、57600、115200 bps等。 波特率越大,数据传送速度越快,但误码的可能性也越大。,北京理工大学珠海学院 计算机教研室,16,2019/10/5,PXA270的串行口,北京理工大学珠海学院 计算机教研室,17,2019/10/5,PXA270的UART,PXA270的UART(通用异步串行口)单元提供三个独立的异步串行I/O端口,每个都可以在中断和DMA两种模式下进行。它们支持最高波特率921Kbps。每个UART通道包含2个64位FIFO分别提供给接收和发送。 PXA270的UART可以进行以下参数的设置:可编程的波特率,红外收/发模式,1或2个停止位,5位,6位,7位或8位数据宽度和奇偶位校验。,北京理工大学珠海学院 计算机教研室,18,2019/10/5,UART的构成,每个UART包含波特率发生器,接收器,发送器和控制单元。 波特率发生器以MCLK为时钟源。 发送器和接收器包含64字节FIFO寄存器和移位寄存器,当发送数据的时候,数据先写到FIFO然后拷贝到发送移位寄存器,然后从数据输出端口(TxDn)依次被移位输出。 被接收的数据也同样从接收端口(RxDn)移位输入到移位寄存器,然后拷贝到FIFO中。,北京理工大学珠海学院 计算机教研室,19,2019/10/5,PXA270的UART,PXA270的UART(通用异步串行口)单元提供三个独立的异步串行I/O端口,每个都可以在中断和DMA两种模式下进行。它们支持最高波特率921Kbps。每个UART通道包含2个64位FIFO分别提供给接收和发送。 PXA270的UART可以进行以下参数的设置:可编程的波特率,红外收/发模式,1或2个停止位,5位,6位,7位或8位数据宽度和奇偶位校验。,北京理工大学珠海学院 计算机教研室,20,2019/10/5,UART的数据发送,数据发送帧的格式是可编程的,它包含一个开始位,5到8个数据位,一个可选的奇偶位和一个或两个停止位。 发送器也能够产生发送中止条件。中止条件迫使串口输出保持在逻辑0状态,这种状态保持一个传输帧的时间长度。通常在一帧传输数据完整地传输完之后,再将中止信号发送给对方。 中止信号发送之后,传送数据连续放到FIFO中(在不使用FIFO模式下,将被放到输出保持寄存器)。,北京理工大学珠海学院 计算机教研室,21,2019/10/5,UART的数据接收,与数据发送一样,数据接收的帧也是可以编程的,它包含一个开始位,5到8个数据,一个可选的奇偶位和一位或两位停止位。 接收器能够检测溢出错误,奇偶校验错误,帧错误和中止状况,每种情况下都将会将一个错误标志置位。,北京理工大学珠海学院 计算机教研室,22,2019/10/5,波特率发生器,每个UART的波特率发生器为传输提供了串行移位时钟。 波特率可以按照下式确定: BaudRate = 14.7456/(16*Divisor) Divisor的值在Divisor Latch register(DLL或DLH)设置,例如:如果divisor是24,则波特率为38400bps。 对于FFUART(全功能串口)和STURAT(标准串口),Divisor设置值为4到2166-1;对于BTURAT(蓝牙串口),Divisor设置值为1到216-1。,北京理工大学珠海学院 计算机教研室,23,2019/10/5,PXA270的UART相关寄存器,每个UART都有13个寄存器。12个作为UART操作,另外1个作为慢速红外设置。 各寄存器地址如下表,北京理工大学珠海学院 计算机教研室,24,2019/10/5,串口的编程,北京理工大学珠海学院 计算机教研室,25,2019/10/5,串口通信基本过程(1/2),按协议的设置初始化并打开串行口,如果串口没有被其他应用程序占用,则该应用程序占用该串口。 通知Windows CE,本应用程序需要这个串口,并封锁其他应用程序使它们不能使用此串口。 配置该串行口。,北京理工大学珠海学院 计算机教研室,26,2019/10/5,串口通信基本过程(2/2),在串口上传输数据,根据约定,在传输过程中进行校验。 不需要此串口时,关闭串口,即释放串口以供其它应用程序使用。,北京理工大学珠海学院 计算机教研室,27,2019/10/5,串口通信编程(1/3),用于串行通信的函数和结构在winbase.h头文件中定义。在基于Windows CE的设备上通过串行通信端口读写的任务由调用文件读写函数完成。 CreateFile 打开串行口。 GetCommState 获取串口的当前控制设置数据。,北京理工大学珠海学院 计算机教研室,28,2019/10/5,串口通信编程(2/3),SetCommState 按照DCB结构的数据配置串行口。 GetCommTimeouts 获得指定通信设备上所有读/写操作的超时参数。 SetCommTimeouts 设置指定通信设备上所有读/写操作的超时参数。 WriteFile 向串行口写数据,这样将把数据传送给串行口连接的另一端设备。,北京理工大学珠海学院 计算机教研室,29,2019/10/5,串口通信编程(3/3),ReadFile 从串行口读数据,这样将接收串行口连接另一端的设备传过来的数据。 SetCommMask 指定为通信设备监视的一组事件。 GetComMask 获得指定通信设备的事件掩码值。,北京理工大学珠海学院 计算机教研室,30,2019/10/5,初始化串行口,首先用CreateFile 函数打开指定串口,设置其中的参数 访问类型为GENERIC_READ |GENERIC_WRITE 共享模式为0 创建标志为OPEN_EXISTING 模板句柄为NULL 如果端口不存在,则返回 ERROR_FILE_NOT_FOUND,北京理工大学珠海学院 计算机教研室,31,2019/10/5,初始化串行口典型代码,hSerial = CreateFile(L“COM1:“, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); 如果能够正常打开串口,hSerial应该返回的是串口的句柄。,北京理工大学珠海学院 计算机教研室,32,2019/10/5,配置串口,设置波特率、数据位、奇偶校验位、停止位和流控制方式,并且可以恢复缺省值。 使用GetCommState(hComm,&dcb)读取当前串口设备控制块DCB(Device Control Block)设置。 修改后通过SetCommState(hComm,&dcb)将其写入。,北京理工大学珠海学院 计算机教研室,33,2019/10/5,配置串口的代码,DCB PortDCB; PortDCB.DCBlength = sizeof(DCB); GetCommState(hSerial, //写DCB,北京理工大学珠海学院 计算机教研室,34,2019/10/5,超时控制,为了防止意外情况使串口读写无休止地等待,超时设置由COMMTIMEOUTS 结 构定义 。 通过调用GetCcommTimeOuts 函数获得当前的设置。 用SetCommTimeOuts 函数来完成设置。,北京理工大学珠海学院 计算机教研室,35,2019/10/5,超时控制的代码,COMMTIMEOUTS CommTimeouts; GetCommTimeouts(m_hSerial, 设置当前超时参数,北京理工大学珠海学院 计算机教研室,36,2019/10/5,发送超时控制,ReadIntervalTimeout 是指两个字符传送之间的超时时间。 一次读操作的超时时间等于要接收的字符数 乘以ReadTotalTimeoutMultiplier ,再加上ReadTotalTimeoutConstant。,北京理工大学珠海学院 计算机教研室,37,2019/10/5,发送超时控制,WriteIntervalTimeout 是指两个字符传送之间的超时时间。 一次写操作的超时时间等于要发送的字符数 乘以WriteTotalTimeoutMultiplier ,再加上WriteTotalTimeoutConstant。,北京理工大学珠海学院 计算机教研室,38,2019/10/5,数据传输,读写串行端口与读写文件采用的函数相同,即ReadFile、WriteFile。 Windows CE不支持重叠IO操作,也称异步操作,当有多个线程进行IO操作时,应用程序可以使用WaitCommEvent函数阻塞线程,直至发生特定的通讯事件,以协调多个线程。,北京理工大学珠海学院 计算机教研室,39,2019/10/5,发送数据的代码,发送数据用以下命令完成 WriteFile (hSerial, 其中 hSerial 句柄 &Byte 数据缓冲区地址 nByte 数据大小 &dwNumBytes 返回发送出去的字节数 NULL 不支持重叠,北京理工大学珠海学院 计算机教研室,40,2019/10/5,接收数据,串口编程最复杂的部份就是接收数据。 串口接收数据常常通过创建一个线程来完成。 接收线程既要考虑及时的读取数据,还要解决接收到的数据的处理工作。,北京理工大学珠海学院 计算机教研室,41,2019/10/5,关闭串口,程序的终止可以自动关闭串口,也可用函数CloseHandle(),以便释放所占资源。,北京理工大学珠海学院 计算机教研室,42,2019/10/5,串口的扩展使用,北京理工大学珠海学院 计算机教研室,43,2019/10/5,扩展蓝牙,PXA270的三个串口中,有一个是专为接入蓝牙模块设计的,这个串口也是一个标准的串口。 将蓝牙模块接入,按照标准的串口编程方式编程。,北京理工大学珠海学院 计算机教研室,44,2019/10/5,扩展GSM/GPRS,将GSM/GPRS 模块接入串口。 安装串口驱动程序。 利用标准的AT指令对GSM/GPRS模块编程。,北京理工大学珠海学院 计算机教研室,45,2019/10/5,扩展GPS,将GPS模块接入串口。 安装串口驱动程序。 利用GPS测试程序,观察通过串口接收到的卫星信息。,
展开阅读全文
  微传网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:第十二讲 串口通信技术及编程.ppt
链接地址:https://www.weizhuannet.com/p-10071115.html
微传网是一个办公文档、学习资料下载的在线文档分享平台!

网站资源均来自网络,如有侵权,请联系客服删除!

 网站客服QQ:80879498  会员QQ群:727456886

copyright@ 2018-2028 微传网络工作室版权所有

     经营许可证编号:冀ICP备18006529号-1 ,公安局备案号:13028102000124

收起
展开