版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、5.4串口通信的收与发5.4.1什么是串口通信串丨1通信是指外设和计算机间,通过数据信号线、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。串丨1是计算机上一种非常通用的设备通信协议。大多数计算机(不包扌舌笔记本电脑)包含两个基丁RS-232的串I1。串丨I同时也是仪器仪表设备通用的通信协议(串II通信协议也可以用于获取远程采集设备的数据)。当年51单片机内置串II的时候,被认为是微控制器发展史上的重人事件,因为当时的串I1是唯一一个微控制器与PC交互的接II。MCU微控制器经过这么多年的发展,串丨I仍然是其
2、必不可少的接I之一。5.4.2串口通信的属性通信存在的问题评价一个通信是否优质,主要体现在传输的速度,数据的正确性,功耗是否低,布线成本是否低(例如1根线收发都能满足就比8根线的并行收发要节约成本);使用是否普及(就好像人家都学英语,世界很丿、部分的人都可以独立使用英语吗,会英语的人多,就非常普及,可通信面就非常广;如杲你学的鸟语,那就只能跟鸟通信,没有人能听懂)。串口到底有几个标准?(经常听说有3线、5线串口)传统的串行接II标准有22根线,采用标准25芯D型插头座(DB25),后来使用简化为9芯D型插座(DB9),现在应用中25芯插头座已很少采用。像现在所说的几线串II,一般都是指使用了几
3、根线,最初的RS-232串II是25针的,所有的针脚定义都有用到,后來变成了9针的,所谓全功能串II就是所有的针脚定义都使用上了,例如流最控制,握手信号等都有用到,一般来说国外的产品做产品比较规矩,把所有的串II信号都做上去了。但是国内的技术人员发现,其实RS-232串II最主要使用的就是2,3线,另外的接II如果不使用的话,也不会出现很人的问题,所以,就在9针的基础上做精简,所以就有所谓的2,3,4,5,6,8线的串口出来了。.2线串II只有RXD.TXD两根基本的收发信号线:3线串丨I除了RXD和TXD,还有GND;所谓49线只是在TXD和RXD基础上增加了相应的控制信号线,依据实际需要进
4、行设计。一般來说,使用5线的232通信,是加了换件流控的,即RTS,CTS信号,主要是为了保证高速通信时的可靠性,如果你的通信速度不是很高,完全可以不用理会。串口的速度与距离RS-232(串II的英文代名词)采取不平衡传输方式,即所谓单端通讯。由J淇发送电平与接收电平的差仅为2V至3V左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最长为约15米,最高速率为20kb/SoRS-232是为点对点(即只用一对收、发设备)通讯而设计的,其驱动器负载为37kQo所以RS-232适合本地设备么间的通信。从串口通信衍生出422与485的通信方式RS-232、RS-422与RS-485都是串
5、行数据接II标准,最初都是由电子工业协会(EIA)制订并发布的,RS-232在1962年发布,命名为EIA-232-E,作为工业标准,以保证不同厂家产品Z间的兼容。RS-422由RS-232发展而來,它是为弥补RS-232Z不足而提出的。为改进RS-232通信距离短、速率低的缺点,RS-422定义了一种平衡通信接II,将传输速率提高到10Mb/s,传输距离延长到4000英尺(速率低J:100kb/s时),并允许在一条平衡总线上连接最多10个接收器oRS-422是一种单机发送、多机接收的单向、平衡传输规范,被命名为TIA.EIA-422-A标准。为扩展应用范围,EIA又J-1983年在RS-42
6、2基础上制定了RS-485标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时増加了发送器的驱动能力和冲突保护特性,扩展了总线共模范閘,后命名为TIAEIA-485-A标准。由丁EIA提出的建议标准都是以“RS”作为前缀,所以在通讯工业领域,仍然习惯将上述标准以RS作前缀称谓。RS-232、RS-422与RS-485标准只対接II的电气特性做出规定,而不涉及接插件、电缆或协议,在此基础上用户可以建立自己的高层通信协议。因此在视频界的应用,许多厂家都建立了一套高层通信协议,或公开或厂家独家使用。如录像机厂家中的Sony与松卜对录像机的RS-422控制协议是有差异的,视频服务器
7、上的控制协议则更多了,如Louth、Odetis协议是公开的,而ProLINK则是基TPiofile上的。串口的通信方式(串II属丁串行通信)(1)并行通信和串行通信51单片机与外界通信的基本方式有两种:并行通信和串行通信,并行通信是指利用多条数据传输线将一个数据的各位同时发送或接收。串行通信是指利用一条传输线将数据一位位地顺序发送或接收。并行通信和串行通信的示意图如卜图:地址发射极E就是小水流,集电极C-发射极E就是大水流。当然,如果把水流比为电流的话,会更确切,因为三极管毕竟是一个电流控制元件。集电极c基极B小水流大水流大水流E小水流PNP型如果某一天,天气很早,江水没有了,也就是人的水流
8、那边是空的。管理员这时候打开了小阀门,尽管小阀门还是一如既往地冲击人阀门,并使之开启,但因为没有水流的存在,所以,并没有水流出来。这就是三极管中的截止区。饱和区是一样的,因为此时江水达到了很大很人的程度,管理员开的阀门大小已经没用了。如果不开阀门江水就自己冲开了,这就是二极管的击穿。在模拟电路中,一般阀门是半开的,通过控制其开启人小来决定输出水流的人小。没有信号的时候,水流也会流,所以,不工作的时候,也会有功耗。而在数字电路中,阀门则处开或是关两个状态。当不工作的时候,阀门是完全关闭的,没有功耗。那么NPN与PNP的三极管到底有些什么区别呢?中齐E-HENFN型PNP型NPN和PNP主要就是电
9、流方向和电压正负不同,说得“专业”一点,就是“极性”问题。NPN是用B-E的电流(小水流)控制C-*E的电流(大水流),E极电位最低,且正常放人时通常C极电位最高,即VCVBVEaPNP是用E-*B的电流(小水流)控制E-C的电流(人水流),E极电位最高,且正常放人时通常C极电位最低,即VCVBVEo半导体三极管也称为晶体三极管,可以说它是电子电路中最重要的器件。它最主要的功能是电流放大和开关作用。接卜來的一些使用中会用到。5.4.5RS-232电平与TTL电平的转换关J-RS-232电平与TTL电平的特性在前而已经讲过,本节主要讲解使用较多的计算机RS-232电平与单片机TTL电平之间的转换
10、方式。MAX232等芯片可实现RS-232电平到TTL电平的转换,但是现在用的较多还有MAX202,HIN232等芯片,它们同时集成了RS-232电平和TTL电平之间的互转。为丰富大家的知识,卜而首先讲解在没有MAX3232这种现成电平转换芯片时,如何用二极管、三极管、电阻、电容等分立元件搭建一个简单的RS-232电平与TTL电平之间的转换电路。1.用单独的电容电阻三极管实现RS-232电平与TTL电平转换电路集成芯片内部都是由最基本电子元件组成,如电阻、电容、二极管、三极管等元件,为了方便用户使用,制造商把这些具有一定功能的分立元件封装到一个芯片内,这样就制成了我们使用的各种芯片。学会本电路
11、后,我们也就基本搞清了MAX232芯片内部的大致结构。MAX232是把TTL电平从0V、5V转换到3V15V或-3V-15V之间。如卜图所示:(1)若发送低电平0,首先TXD(TTL低电平)发送数据时,TXD上是低电平,这时Q3导通(具体请看上节三极管的描述),PCRXD由空闲时的低电平变高电平,满足条件。(2)发送高电平1时,TXD为高电平,Q3截止,由J-PCRXD内部高阻,而PCTXD平时是-3-15V(RS-232的高电平就是负的电压,这点是要注意的,高电平并不是正电压),通过D1和R7将其拉低PCRXD至-3-15V,此时计算机接收到的就是lo卜面再反过来,PC发送信号,由单片机來接
12、收信号。当PCTXD为低电平-3-15V时,Q4截止,单片机端的RXD被R9拉到5V高电平;当PCTXD变高时,Q4导通,RXD被Q4拉到低电平,这样便实现的双向转换,这是一个很好的电路,值得人家学习。2.MAX232芯片实现RS-232电平与TTL电平转换MAX232芯片是MAXIM公司生产的、包含两路接收器和驱动器的IC芯片,它的内部有一个电源电压变换器,可以把输入的+5V电源电压变换成为RS-232输出电平所需的+10V电压。所以,采用此芯片接口的串行通信系统只需单一的+5V电源就可以了o对丁没有+12V电源的场合,其适应性更强,加之其价格适中,硬件接口简单,所以被广泛采用。MAX232
13、芯片实物和其引脚结构和外围连接如下图所示:mac5E叵辽辽ldILITMAX2A2%JNlolfbslllN0151I3TnlR121R0+IOVRS-232IOUTI5TRS-232输入TTUCMOSJ输入1TL/CMOSJ输出6-10V54-54-10VCH340PL2303,PL2303用的最多,因为最便宜,国内很多开发板板子上,包括USE转串【I线用的都是这种芯片,几元钱一片,电路也简单,做简单的串II应用可以,但是做嵌入式开发如使用超级终端波特率在115200时就有可能出现延迟等现彖。CH340是南京沁恒的芯片,做的还不错,对普通应用完全能够满足。最好的是FT232稳定、可靠,在很多
14、USE转串II的卜墩线、编程器中使用的都是这一种,神舟开发板上目前使用的是PL2303HX芯片。USB转串II芯片转出来串丨I电平就是TTL电平,高电平一般是3.3V,如果转出来的电平再经过MAX232或MAX485芯片再转一下就会输出RS232电平或者485电平。其实市面上的USB转串I线一般都是这样接的。5.4.8例程01最简单串口打印$字符例程简介:STM32的GPIOA端II的PA9和PA10位,即串丨I1;设置PA9为TX输出模式,复用功能推挽输出模式;设置PA10为RX输入模式,模拟输入模式;对超级终端打印输出字符”S”符号。拿串丨I线将STM32神舟III号开发板上的串II1和电
15、脑的串丨I连起來,具体硬件电路这里不细说。调试说明:1)打开开始菜单-程序附件通讯超级终端舟系列开发板-超级终瑞Windows:Update强力卸我电脑上的较件Ira程序Q阿里旺旺卖姦版&附件B文档)卧设置FP搜索(C)帮助和支持01)3运行KeiluVisiy画閤1计算器萼记爭本0写字板%远程桌面连播屁通讯超级终端注销AdministratorQ-).关闭计算机)2.5厘米1行1列录制修订扩展改写中2)输入“STM32神舟系列开发板”紂件电)编辑查看边刚11)倍送帮助2S汨B窗3)紧接着,将神舟III号开发板上的串I11和电脑的串丨I用串I1线连起來。(我这里用的是台式机,台式机预留的串口一
16、般为串1-11)舟系列开发板-超级终瑞文幷镰渲密查S(Y)呼叫&)传送(I)帮助Qp4)波特率例程代码中设置的是115200,数据流控制是无,选择完毕,点确定按钮比M知K金土ICOI4J性冋冈:诵口设潼还原为默认值迅)确定取消应用(A)5)最后把例程程序卜载到开发板里,然后按一卜开发板复位或者重新上电,就会打印出的字符,一会打印一个,恭喜发财哦!STI32神舟系列开发板-超壤终瑞文件的编辑墮)查看边呼叫传送帮助DfQB窗关键代码:intmam(void)/main是程序入丨IRCC_imt();时钟频率的配置LED.initQ;/LED初始化配置uart_uut();串II接II初始化,这个部
17、分是按STM32芯片手册的要求来做的,比较枯燥,细节感兴趣的朋友可以去研究下while(1)USART1-DR=0 x24;/打印符号$,0 x24是ASCII码LEDON;点亮LED灯Delay(OxFFFFFF);/延时LEDOFF;/熄灭LED灯Delay(OxFFFFFF);/延时voiduaiVimtQfloatUSARTDIV;/*因为32位的USART_BRR波特率设置寄存器只有低16位有效,所以这里我们定义16位寄存器就足够了*/ul6USARTDIV_zhengshu;这里相当j;U16,无符号16位ul6USARTDIV_xiaoshu;这里相当无符号16位RCC-APB2
18、ENR|=12;使能PORTAII时钟RCC-APB2ENR|=114;使能串丨I时钟GPIOA-CRH&=OXFFFFFOOF;GPIOA-CRH|=OXOOOOOSBO;/IO状态设置USARTDIV=(float)(72*1000000)/(115200*16);USARTDIV.zliengshu=USARTDIV;USARTDIV.xiaoshu=(USARTDIV-USARTDIV.zhengshu)*16;USARTDIV_zliengshu=4;USARTDIV_zliengshu+=USARTDIV_xiaoshu;RCC-APB2RSTR|=114;复位串丨I1RCCAPE
19、2RSTR&=(114);停止复位USART1-BRR=USARTDIVzhengshu;USART1-CR1|=0X200C;/I位停止,无校验位.代码详细分析:RCC_mit();这个函数是负责时钟频率的配置,这里默认配置为72MHZ,前面章节有详细分析,这里简化,有疑问的可以翻看前面的章节细节。LED_mit()这个函数是初始化LED的配置,这个是附带的,如果串II无法正常打印,只要程序能运行,那LED灯就会进行闪烁。uaejnitO这个函数负责串门的初始化,这个部分是按STM32芯片手册的要求來做的,比较枯燥,细节感兴趣的朋友可以继续往卜看,不感兴趣的可以跳过这一节,这个函数耍把波特率
20、初始化为115200,卜面我们仔细分析一下代码:(3-1)初始化一卜波特率的值,一个是波特率的整数部分,一个是波特率的小数部分u16USARTDIV_zhengshu;这里和当J:ul6,无符号16位,波特率的整数部分ul6USARTDIV_xiaoshu;这里相当J:u16,无符号16位,波特率的小数部分(3-2)初始化串I1的时钟,再初始化PA9和PA10两个管脚的GPIO端IIA的时钟。从原理图可以看到,USART1的TX和RX就是PA9和PA10,要使用串II不仅仅要初始化6戸10端11人的时钟,还要初始化串II的时钟,这里是需要注意的,如果点灯程序或者只做为普通的GPIO管脚使用,就
21、不需要初始化串LI的时钟。串II时钟使能。串丨I作为STM32的一个外设,其时钟由外设始终使能寄存器控制,这里我们使用的串丨I1是在APE2ENR寄存器的第14位。这里需要注意的一点是,除了串【I1的时钟使能在APB2ENR寄存器,其他串【I的时钟使能位都在APBlENRoRCC-APB2ENR|=12;使能PORTAII时钟RCC-APB2ENR|=114;/使能串丨I时钟(3-3)设置串I1通信RXD和TXD的配置,一个管脚是接收就要设置为输入模式,一个管脚是输出,就设置成输出模式:寄存器CRL是设置GPIO的07位,CRH是设置GPIO的815位,可以看到这里是设置GPIOA端【I的9和
22、10位,即PA9和PA10设置PA9为TX输出模式,复用功能推挽输出模式设置PA10为RX输入模式,模拟输入模式GPIOA-CRH&=0XFFFFF00F;GPIOA-CRH=0X000008B0;/IO状态设置(3-4)设置波特率,在CPU是72MHZ的频率下,设置波特率为115200;STM32中波特率是如何计算的,首先看下文档:Tx/Rx波持率=fpCLKx(16USARTDIV)fpCLKx(x=l、2)是给外设的时钟(PCLK1用于串II2、3、4、5,PCLK2用串II1),USARTDIV是一个无符号的定点数,它的值可以有串门的USART.BRR寄存器值得到。而我们更关心的是如何
23、从USARTDIV的值得到USARTJBRR的值,因为一般我们知道的是波特率,和PCLKx的时钟,要求的就是USART.BRR的值。25.6.3波特比率寄存器(USART_BRR)注乐如果花2妁E被分别禁止,波特计数譽停止计数地址偏移:0 x08貝位值:0 x0000&3116保留位便件强制为0位15:4DIV_MantlSS311:0rUSORTDIV的整数部分这12位定义了USART分類溜除法闵于(USARTDIV)的整歎郃分.位3QdivFraction(3:oj;usartdiv的尔数郃分这4位定义fUSART分烦黠除法肉子(USARTDIV)的小数部分.可以看到上图波特比率寄存器US
24、ART.BRR是低16位有效,高16位是闲置的,最低4位用來存放整数部分DIV_Fraction,15:4这12位用来存放小数部分DIV_Maiitissao高16位未使用。这里波特率的计算通过如下公式计算:假设我们的串【1要设置为115200的波特率,而PCLK2的时钟为72Mo这样,我们根据上面的公式有:波特率=(16USARTDIV)USARTDIV=fpCLKx/波特率*16=(72*1000000)/(115200*16)=39.0625我们查看STM32F10XX参考手册中的第525页的一个表:表154设克波特率时的谋差计算波特寧fpcutM36MHztfcW=72MHz序号Kbp
25、s实际WEF波特率窃存掘中的值实际破特率窃存器中的(tt1242.400937.50%2.418750%29.69.600234.3750%9.6468.750%319.219.2117.18750%19.2234.3750%457.657.639.06250%57678.1250%5115.2115.38419.50J5%115.239.06250%6230.4230.7699.750J6%230.76919.50.16%7460.3461.5384.8750J6%461.5389.750.16%8521.6923.0762.43750-16%923.0764.8750.16%9225022
26、5010%225020%104500不可能不可能不可能450010%7.CPU的时钟频率越低菜特定波彳3率的谋崔也越低曾啊.2.只OJSART1便用PCLK2(加尚72MH。具它USART使用PCLK1(虽岛36材H2)。USARTDIV的值被设置为39.0625,也就是USART_BRR寄存器那么得到:DIV_Mantissa=39=0 x27;DIV_Fraction=16*0.0625=1=0 x1;这样,我们就得到了USART1-BRR的值为0 x271。只要设置串丨I1的BRR寄存器值为0 x271就可以得到115200的波特率。USARTDIV=(float)(72*1000000
27、)/(115200*16);/M出USARTDIV的值USARTDIVzliengshu=USARTDIV;/*因为波特率设置寄存器是USARTDIV整数在03位,小数在415位乘以16是因为小数点后而是4位,将它右移过來取成整数*/USARTDIVxiaoshu=(USARTDIV-USARTDIV.zhengshu)*16;USARTDIV_zliengshu=4;USARTDIV_zliengshu+=USARTDI7_xiaoshu;(3-5)当CPU刚启动的时候一般都需要重新复位一卜外设,确保该外设在正常供电稳定后,能够稳定的工作可以看到复位一卜之后就可以了,然后停止复位,让其开始正
28、常工作。串II复位。当外设出现异常的时候可以通过复位寄存器里面的对应位设置,实现该外设的复位,然后重新配置这个外设达到让其重新工作的目的。一般在系统刚开始配置外设的时候,都会先执行复位该外设的操作。串丨11的复位是通过配置APB2RSTR寄存器的第14位來实现的。APB2RSTR寄存器的各位描述如卜:31302928272625242322212019181716保留1514131211109S76543210ADC3RSTUSART1RSTTIM8RSTSPI1RSTTIM1RSTADC2RSTADC1RSTIOPGRSTIOPFRSTIOPERSTIOPDRSTIOPCRSTIOPBRST
29、IOPARST保留AFIORSTrwrwrwrvrwlTrwrwrwrwrwrwrwrwresrw从上图可知串II1的复位设置位在APB2RSTR的第14位。通过向该位写1复位串丨I1,写0结束复位。其他串【I的复位位在APB1RSTR里面。RCC-APB2RSTR|=114;复位串丨I1RCC-APB2RSTR&(114);/停止复位(3-6)把115200的波特率设置到USART1-BRR寄存器中,并且设置一卜串丨I控制的寄存器USART_CR1oSTM32的每个串丨I都有3个控制寄存器USART_CR13,串II的很多配置都是通过这3个寄存器來设置的。这里我们只要用到USART.CRl就可以实现我们的功能了,这里主要设置该串丨1使能,正式启动这个串丨1功能该寄存器的描述在STM32F1XX参考手册第542有更多的详细介绍:25.6.4控制寄存器1(USART_CR1)地址儼移OxOC复位值:0 x0000313029282726252423212019IS1716保留1514131211109876543210保樹UETAKEPCEPSPEIETXEIETCIERXNEIEIDLEIEIERERVUSBKresrrrrrrrrrxrrxrrvrvrvrxrErx:nrrxr位3144保留位.碰件强制为0,fe13UE:USART使能(USARTenable)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五版电力工程项目居间代理佣金服务合同2篇
- 二零二五版电子商业买卖合同模板3篇
- 二零二五年度工地钢管外架施工环保设施设计与安装承包合同3篇
- 白叶2025版离婚协议中共同财产分割及子女抚养费用支付合同二零二五年度3篇
- 二零二五版30天退换租免佣租赁服务合同2篇
- 二零二五年生活垃圾收运一体化服务合同2篇
- 二零二五年度神东派遣工权益同工同酬合同3篇
- 2025年度彩钢围挡施工及租赁一体化合同3篇
- 二零二五年度食品安全风险评估模型构建合同3篇
- 二零二五年度钢筋产品研发与技术转移合同3篇
- 中华民族共同体概论讲稿专家版《中华民族共同体概论》大讲堂之第一讲:中华民族共同体基础理论
- 《商务沟通-策略、方法与案例》课件 第一章 商务沟通概论
- 广西《乳腺X射线数字化体层摄影诊疗技术操作规范》编制说明
- 风筝产业深度调研及未来发展现状趋势
- 吉利汽车集团总部机构设置、岗位编制
- 矿山安全生产法律法规
- 小学数学《比的认识单元复习课》教学设计(课例)
- 词性转换清单-2024届高考英语外研版(2019)必修第一二三册
- GB/T 44670-2024殡仪馆职工安全防护通用要求
- 安徽省合肥市2023-2024学年七年级上学期期末数学试题(含答案)
- 合同债务人变更协议书模板
评论
0/150
提交评论