【2017年整理】七周串口控制器原理与编程.pptVIP

【2017年整理】七周串口控制器原理与编程.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【2017年整理】七周串口控制器原理与编程

单片机原理与应用;上周教学内容回顾;本周教学主要内容;教学目标; 计算机与外界的信息交换称为通信。通信的基本方式可分为并行通信和串行通信两种。 所谓并行通信是指数据的各位同时在多根数据线上发送或接收。 串行通信是数据的各位在同一根数据线上依次逐位发送或接收。; 目前串行通信在单片机双机、多机以及单片机与PC机之间的通信等方面得到了广泛应用。;1.1 异步通信和同步通信; 2. 异步通信(Asynchronous Communication) 在异步通信中,数据通常是以字符或字节为单位组成数据帧进行传送的。收、发端各有一套彼此独立,互不同步的通信机构,由于收发数据的帧格式相同,因此可以相互识别接收到的数据信息。; 2. 异步通信(Asynchronous Communication) 异步通信信息帧格式如图4所示。; (1) 起始位: 在没有数据传送时,通信线上处于逻辑“1”状态。当发送端要发送1个字符数据时,首先发送1个逻辑“0”信号,这个低电平便是帧格式的起始位。其作用是向接收端表示发送端开始发送一帧数据。接收端检测到这个低电平后,就准备接收数据信号。; (3) 奇偶校验位: 数据位发送完(接收完)之后,可发送一位用来检验数据在传送过程中是否出错的奇偶校验位。奇偶校验是收发双方预先约定好的有限差错检验方式之一。有时也可不用奇偶校验。;1.2 串行通信的波特率;1.3 串行通信的制式;1.4 PC机与单片机间的串行通信;图5 微机9针D形串口连接器; 1.4.2 RS-232C接口电路;;二、CC2530 串口控制器;2.1 串口模式;2.1 串口模式;1.控制和状态寄存器UxCSR(见手册P140);2.控制寄存器UxUCR;当收发数据缓冲器UxDBUF写入数据时,该字节发送到输出引脚TXD。UxDBUF寄存器是双缓冲的 。;4. UxGCR通用控制寄存器 ;5.波特率控制寄存器UxBAUD;2.3 波特率产生;标准波特率所需的寄存器值 ;2.4系统时钟设置;1. UART总线资源 ;;(2)P2DIR: 当PERCFG所设定的设备IO位置冲突时,由该sfr决定位置到底归属于单个控制器。;2.6中断标志位;UART接收 当接收缓冲区UXDBUF接收到一个新的字符时,会由硬件把中断标志位URXxIF置1。;1、总线初始化: PERCFG P2DIR PxSEL UxCSR 2、数据链路格式化(数据位、停止位、校验位、波特率) UxUCR UxGCR UxBAUD 注意:设置波特率时,一定要清楚当前的时钟速度。 3、读写串口收发寄存器 UxDBUF UTXxIF URXxIF;3.1 UART发送过程 ;1.当1写入UxCSR.RE位时,数据接收开始。 2.UART在输入引脚RXDx中寻找有效起始位,并且设置UxCSR.ACTIVE位为1。 3.当检测出有效起始位时,收到的字节就传入到接收寄存器,UxCSR.RX_BYTE位设置为1。该操作完成时,产生接收中断。同时UxCSR.ACTIVE变为低电平。通过寄存器UxBUF提供收到的数据字节。 5.当UxBUF读出时,UxCSR_BYTE位由硬件清零。 ;3.3 UART硬件流控制;3.4 UART特征格式;void initUARTtest(void) { InitClock();//初始化时钟 PERCFG = 0x00;//使用串口备用位置1 P0口 P0SEL = 0x3c;//P0用作串口 ? P2DIR = ~0XC0; //选择串口0优先作为串口 ? U0CSR |= 0x80; //UART方式 U0GCR |= 10; //波特率baud_e的选择 U0BAUD |= 216;//波特率设为57600 ? UTX0IF = 0; //串口0发送中断标志清零 ? };串口发送字符串函数;主函数;主函数;小结;课后作业;预习内容

文档评论(0)

junzilan11 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档