




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2020 2 4 北京理工大学珠海学院计算机教研室 1 串口通信技术及编程 北京理工大学珠海学院计算机教研室 2 2020 2 4 教学目的 熟悉WindowsCE5 0的串口通信技术 掌握WindowsCE5 0的串口通信的编程方法 北京理工大学珠海学院计算机教研室 3 2020 2 4 项目8 串行口通信 PDA中的串口 本节课程主要知识点串口通信的基本原理 重点 PXA270的串行口串口的编程 难点 串口通信的扩展使用 北京理工大学珠海学院计算机教研室 4 2020 2 4 教学重点串口通信的基本原理教学难点串口的编程 北京理工大学珠海学院计算机教研室 5 2020 2 4 串口通信的基本原理 北京理工大学珠海学院计算机教研室 6 2020 2 4 串口通信 串行通信是微计算机之间一种常见的近距离通信手段 因使用方便 编程简单而广泛使用 但现在很多笔记本电脑和PC机都不再提供串行通信接口 在基于WindowsCE的设备中仍然保留着串口 这是因为目前流行的WindowsCE设备很多都具备导航 无线通讯等功能 而GPS GSM GPRS及蓝牙模块都是外置串口的终端设备 北京理工大学珠海学院计算机教研室 7 2020 2 4 WindowsCE的串口通信 串行通信是WindowsCE5 0支持的最简单的通信方式 WindowsCE支持串行通信的标准函数 这些函数可以用于打开 关闭和操作串行口 传送和接受数据等 北京理工大学珠海学院计算机教研室 8 2020 2 4 串口的接口 RS232标准采用的接口是9芯或25芯的D型插头 常用的一般是9针插头 DB 9 要完成基本的通信功能 实际上只需要RXD TXD和GND即可 通信距离较近时 12m 可以用电缆线直接连接标准RS232端口 RS422或RS485较远 北京理工大学珠海学院计算机教研室 9 2020 2 4 串口的电气特性 RS232标准所定义的高 低电平信号与PXA270系统的LVTTL电路定义的高 低电平信号完全不同 LVTTL的标准逻辑1对应2V 3 3V电平 标准逻辑0对应0V 0 4V电平 而RS232标准采用负逻辑方式 标准逻辑1对应 5V 15V电平 标准逻辑0对应 5V 15V 两者间要进行通信 必须经过电平的转换 转换芯片采用MAX232 北京理工大学珠海学院计算机教研室 10 2020 2 4 串行通信数据格式 起始位一般用0作起始位 数据位5 8位的数据位 奇偶校验位1位的奇偶校验位 也可以不加 停止位一般用1作停止位 北京理工大学珠海学院计算机教研室 11 2020 2 4 起始位 开始前 线路处于空闲状态 送出连续1 传送开始时首先发一个0作为起始位 然后出现在通信线上的是字符的二进制编码数据 北京理工大学珠海学院计算机教研室 12 2020 2 4 数据位 每个字符的数据位长可以约定为5位 6位 7位或8位 一般采用ASCII编码 数据位的长度通信双方要一致 否则数据会出错 标准的数据位长度为8位 北京理工大学珠海学院计算机教研室 13 2020 2 4 奇偶校验位 用奇偶校验位将所传送的字符中为1的个数凑成奇数个或偶数个 如果是奇校验 则每帧数据中数据位加上校验位中1的个数为奇数个 如果是偶校验 则每帧数据中数据位加上校验位中1的个数为偶数个 也可以约定不要奇偶校验 这样就取消奇偶校验位 北京理工大学珠海学院计算机教研室 14 2020 2 4 停止位 最后是表示停止位的1信号 这个停止位可以约定持续1位 1 5位或2位的时间宽度 至此一个字符传送完毕 线路又进入空闲 持续为1 经过一段随机的时间后 下一个字符开始传送 又发出起始位 北京理工大学珠海学院计算机教研室 15 2020 2 4 波特率 每秒传送的数据位数 每一个数据位的宽度等于传送波特率的倒数 常用的波特率为2400 4800 9600 19200 38400 57600 115200bps等 波特率越大 数据传送速度越快 但误码的可能性也越大 北京理工大学珠海学院计算机教研室 16 2020 2 4 PXA270的串行口 北京理工大学珠海学院计算机教研室 17 2020 2 4 PXA270的UART 北京理工大学珠海学院计算机教研室 18 2020 2 4 UART的构成 每个UART包含波特率发生器 接收器 发送器和控制单元 波特率发生器以MCLK为时钟源 发送器和接收器包含64字节FIFO寄存器和移位寄存器 当发送数据的时候 数据先写到FIFO然后拷贝到发送移位寄存器 然后从数据输出端口 TxDn 依次被移位输出 被接收的数据也同样从接收端口 RxDn 移位输入到移位寄存器 然后拷贝到FIFO中 北京理工大学珠海学院计算机教研室 19 2020 2 4 PXA270的UART PXA270的UART 通用异步串行口 单元提供三个独立的异步串行I O端口 每个都可以在中断和DMA两种模式下进行 它们支持最高波特率921Kbps 每个UART通道包含2个64位FIFO分别提供给接收和发送 PXA270的UART可以进行以下参数的设置 可编程的波特率 红外收 发模式 1或2个停止位 5位 6位 7位或8位数据宽度和奇偶位校验 北京理工大学珠海学院计算机教研室 20 2020 2 4 UART的数据发送 数据发送帧的格式是可编程的 它包含一个开始位 5到8个数据位 一个可选的奇偶位和一个或两个停止位 发送器也能够产生发送中止条件 中止条件迫使串口输出保持在逻辑0状态 这种状态保持一个传输帧的时间长度 通常在一帧传输数据完整地传输完之后 再将中止信号发送给对方 中止信号发送之后 传送数据连续放到FIFO中 在不使用FIFO模式下 将被放到输出保持寄存器 北京理工大学珠海学院计算机教研室 21 2020 2 4 UART的数据接收 与数据发送一样 数据接收的帧也是可以编程的 它包含一个开始位 5到8个数据 一个可选的奇偶位和一位或两位停止位 接收器能够检测溢出错误 奇偶校验错误 帧错误和中止状况 每种情况下都将会将一个错误标志置位 北京理工大学珠海学院计算机教研室 22 2020 2 4 波特率发生器 每个UART的波特率发生器为传输提供了串行移位时钟 波特率可以按照下式确定 BaudRate 14 7456 16 Divisor Divisor的值在DivisorLatchregister DLL或DLH 设置 例如 如果divisor是24 则波特率为38400bps 对于FFUART 全功能串口 和STURAT 标准串口 Divisor设置值为4到2166 1 对于BTURAT 蓝牙串口 Divisor设置值为1到216 1 北京理工大学珠海学院计算机教研室 23 2020 2 4 PXA270的UART相关寄存器 每个UART都有13个寄存器 12个作为UART操作 另外1个作为慢速红外设置 各寄存器地址如下表 北京理工大学珠海学院计算机教研室 24 2020 2 4 串口的编程 北京理工大学珠海学院计算机教研室 25 2020 2 4 串口通信基本过程 1 2 按协议的设置初始化并打开串行口 如果串口没有被其他应用程序占用 则该应用程序占用该串口 通知WindowsCE 本应用程序需要这个串口 并封锁其他应用程序使它们不能使用此串口 配置该串行口 北京理工大学珠海学院计算机教研室 26 2020 2 4 串口通信基本过程 2 2 在串口上传输数据 根据约定 在传输过程中进行校验 不需要此串口时 关闭串口 即释放串口以供其它应用程序使用 北京理工大学珠海学院计算机教研室 27 2020 2 4 串口通信编程 1 3 用于串行通信的函数和结构在winbase h头文件中定义 在基于WindowsCE的设备上通过串行通信端口读写的任务由调用文件读写函数完成 CreateFile打开串行口 GetCommState获取串口的当前控制设置数据 北京理工大学珠海学院计算机教研室 28 2020 2 4 串口通信编程 2 3 SetCommState按照DCB结构的数据配置串行口 GetCommTimeouts获得指定通信设备上所有读 写操作的超时参数 SetCommTimeouts设置指定通信设备上所有读 写操作的超时参数 WriteFile向串行口写数据 这样将把数据传送给串行口连接的另一端设备 北京理工大学珠海学院计算机教研室 29 2020 2 4 串口通信编程 3 3 ReadFile从串行口读数据 这样将接收串行口连接另一端的设备传过来的数据 SetCommMask指定为通信设备监视的一组事件 GetComMask获得指定通信设备的事件掩码值 北京理工大学珠海学院计算机教研室 30 2020 2 4 初始化串行口 首先用CreateFile函数打开指定串口 设置其中的参数访问类型为GENERIC READ GENERIC WRITE共享模式为0创建标志为OPEN EXISTING模板句柄为NULL如果端口不存在 则返回ERROR FILE NOT FOUND 北京理工大学珠海学院计算机教研室 31 2020 2 4 初始化串行口典型代码 hSerial CreateFile L COM1 GENERIC READ GENERIC WRITE 0 NULL OPEN EXISTING 0 NULL 如果能够正常打开串口 hSerial应该返回的是串口的句柄 北京理工大学珠海学院计算机教研室 32 2020 2 4 配置串口 设置波特率 数据位 奇偶校验位 停止位和流控制方式 并且可以恢复缺省值 使用GetCommState hComm dcb 读取当前串口设备控制块DCB DeviceControlBlock 设置 修改后通过SetCommState hComm dcb 将其写入 北京理工大学珠海学院计算机教研室 33 2020 2 4 配置串口的代码 DCBPortDCB PortDCB DCBlength sizeof DCB GetCommState hSerial 写DCB 北京理工大学珠海学院计算机教研室 34 2020 2 4 超时控制 为了防止意外情况使串口读写无休止地等待 超时设置由COMMTIMEOUTS结构定义 通过调用GetCcommTimeOuts函数获得当前的设置 用SetCommTimeOuts函数来完成设置 北京理工大学珠海学院计算机教研室 35 2020 2 4 超时控制的代码 COMMTIMEOUTSCommTimeouts GetCommTimeouts m hSerial 设置当前超时参数 北京理工大学珠海学院计算机教研室 36 2020 2 4 发送超时控制 ReadIntervalTimeout是指两个字符传送之间的超时时间 一次读操作的超时时间等于要接收的字符数乘以ReadTotalTimeoutMultiplier 再加上ReadTotalTimeoutConstant 北京理工大学珠海学院计算机教研室 37 2020 2 4 发送超时控制 WriteIntervalTimeout是指两个字符传送之间的超时时间 一次写操作的超时时间等于要发送的字符数乘以WriteTotalTimeoutMultiplier 再加上WriteTotalTimeoutConstant 北京理工大学珠海学院计算机教研室 38 2020 2 4 数据传输 读写串行端口与读写文件采用的函数相同 即ReadFile WriteFile WindowsCE不支持重叠IO操作 也称异步操作 当有多个线程进行IO操作时 应用程序可以使用WaitCommEvent函数阻塞线程 直至发生特定的通讯事件 以协调多个线程 北京理工大学珠海学院计算机教研室 39 2020 2 4 发送数据的代码 发送数据用以下命令完成WriteFile hSerial 其中hSerial句柄 Byte数据缓冲区地址nByte数据大小 dwNumBytes返回发送出去的字节数NULL不支持重叠 北京理工大学珠海学院计算机教研室 40 2020 2 4 接收数据 串口编程最复杂的部份就是接收数据 串口接收数据常常通过创建一个线程来完成 接收线程既要考虑及时的读取数据 还要解决接收到的数据的处理工作 北京理工大学珠海学院计算机教研室 41 2020 2 4 关闭串口 程序的终止可以自动关闭串口 也可用函数CloseHandle 以便释放所占资源 北京理工大学珠海学院计算机教研室 42 2020 2 4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 稀土储氢材料工技能操作考核试卷及答案
- 激光头制造工5S管理考核试卷及答案
- 玻璃釉膜电阻器、电位器制造工抗压考核试卷及答案
- 在线学习服务师成本控制考核试卷及答案
- 2024版2025春新人音版艺术唱游音乐二年级上册(简谱)教学课件:第一单元 第2课 乃哟乃
- 中国特色社会主义建设及企业财务测试卷附答案
- 中医专业考研试题及答案
- 仓管员专业试题及答案
- 机车专业面试题目及答案
- 土壤专业试题及答案
- 2025年秋期部编版五年级上册小学语文教学计划+教学进度表
- 2025年送气工考试试题及答案
- 国企投资融资管理办法
- 水电站大坝安全现场检查技术规程 -DL-T 2204
- 采购电脑管理办法细则
- 中国阅兵仪式课件
- 中医特色在手术室护理中的应用
- 事故应急救援包括事故单位自救和对事故单位
- 肺结核的课件
- 渝23TG02 钢管桁架预应力混凝土叠合板图集 DJBT50-165
- 海洋弧菌护理查房
评论
0/150
提交评论