串口的使用中我们常用的就是串口的中断收数据,发数据。但除了普通的收发stm32F0系列的串口增加了很多新的功能。如果巧妙的把这些功能用起来就可以达到事半功倍的效果。把能交给硬件处理的就交给硬件可以节约大量的MCU时间用来做其他事情。也能大大调串口通信的可靠性。
功能一:串口多机通信
stm32串口是支持多机通信的,多机通信也很好理解,就是把多个从机的RX连接到主机的TX,多个从机的TX连接到主机的RX。当然也要注意硬件连接上需要做相应的改变,把从机的TX脚都通过线与连接起来。当然也可以简单一点,把所有从机的TX都配置为开漏模式外部加上上拉电阻。那么多机通信到底有什么用处? 其中之一个有点就是一个串口就可以挂多个从机设备。第二个呢就是从机可以在主机没有唤醒自己的时候处于一种事不关己的状态(没有达到唤醒状态就不去接收处理数据)。主机唤醒从机又分为两种模式:
第一种是通过从机检测到RX线上是空闲状态的时候唤醒。这两种我再做个解释,通过IDLE空闲唤醒可以让多个从机同时处于激活状态,当tx不发送数据了,RX线上出现的空闲状态被从机检测到了,这时候多个从机就可以同时被激活。
第二种是从机检测到主机发来和自己相匹配的地址的时候就会唤醒。这种模式更适合于从机需要单独唤醒的时候。每个从机都有个自己的地址,当从机接收到主机发来的地址信号并且和自己匹配上的时候就会唤醒。但是这个地址匹配功能是有规定的。从机会根据主机发送数据的最高位来识别是不是地址。比如主机发送的是8位数据格式,那么最1bit被用来识别是否为地址,只有后面的七位才能放数据。而如果想传输8位的数据,那么从机就要按照9位的数据位来发送。9位的数据位相对来说用的很少,所以我也很少把这种模式用到实际应用中。
功能二:串口Mute静音模式
这种模式呢实际上在多机通讯里面也会用到,只是我在上面把他称呼为“事不关己”的状态。mute模式实际上不仅仅可以再多机模式中使用,在普通模式下也可以使用。在我们请求进入mute模式之前(设置USART_RQR的MMRQ位),需要配置mute模式通过IDLE还是地址匹配唤醒。然后等待条件触发就可以退出mute模式正常接收数据。进入mute模式以后rx线上的数据都会被忽略掉。
功能三:串口字符匹配中断
这个相对来说比较好理解,就是配置一个byte8位的字符,当接收到和这个字符匹配上的数据就会产生字符匹配中断。该模式无法和mute模式同时使用。看下图就会明白,字符匹配和mute的地址设置是共用的:
功能四:串口空闲中断
这个我认为是很有用的一个功能,当rx线上产生空闲的时候触发该中断。可以很方便用来做不定长度的协议接收。但是空闲中断也有需要注意的地方,比如一上电后rx线上一直就没收到数据时不会触发空闲中断的。它 只会在收到数据后从非空闲变到空闲的时候才会产生中断。
之前我写过一篇用空闲中断来接收非定长数据的文章,可以移步参考:http://www.eemaker.com/stm32-uart-budingchangshuju.html
功能五:串口超时中断
这个也好理解,也就是当我们的stm32 串口检测到进入空闲状态以后开始计数,这个计数的单位是以传输一个bit位的时间来算的(所以这个会根据你选用的波特率不同而时间长短不一样),比如我配置20就是检测到空闲出了传输20bit的时间就会产生超时中断。
以上就是我为了在串口协议传输过程中,充分挖掘他的硬件性能而做的功课,整理出来也方便以后参考。
关键字:stm32F0 串口 特殊功能
引用地址:
stm32F0 串口的几个特殊功能
推荐阅读最新更新时间:2024-11-06 15:40
中断和串口剖析
以前对STC89C52单片机的串口中断始终没有深入的了解 今天没什么事,就好好的琢磨了一下,前提是单片机开启了串口中断 1、先说串口接收数据中断吧:当单片机串口接收到数据后,产生中断,单片机跳到中断程序中,可以选择接收数据或者进行其他的操作,此时的串口数据可以作为控制信号,也可以仅仅是一个触发动作,具体的操作根据中断函数实现具体的功能。在中断函数最后,需要将串口接收标志位RI清0。 2、发送中断:当单片机向串口发送数据后,单片机产生串口发送中断,同理,所发送的数据仅仅是出发中断,中断函数的具体功能和所发的数据没有必然的关系,串口发送的作用是触发中断。同样,不要忘了在最后将 TI 清0. 总的来讲,在STC89C52中,串口
[单片机]
51单片机是如何产生串口中断的
首先,你要用软件允许中断, 即C语言中EA = 1; 允许总中断ES = 1; //允许串口中断汇编中可用 SETB EA ;允许总中断 SETB ES ;允许串口中断 当单片机接收到一帧数据后,RI会置1,向CPU申请中断,若之前有中断允许,则产生了中断,进入中断服务程序。 当然,单片机发送完一帧数据,TI也会置1,同样会产生中断! 一般我们在发送数据时要关中断,因为一般你不用在发送时不用处理数据; 接收数据时要开中断,以便你在中断服务程序中将接收到的数据进行存储并处理。 补充:其实,不管你有没有允许中断,上位机(此时即给单片机发送信息的机器)只要给单片机发送数据,单片机就会自动接收数据,并把它放在数据缓
[单片机]
基于ARM7和VC平台的高分辨率红外触摸屏设计
触摸屏是结合显示器使用的一种透明的绝对定位系统,透明和优良的定位原理是它的技术特征。目前应用在各场合的触摸屏主要有四种:电阻式触摸屏、电容式触摸屏、表面声波触摸屏和红外触摸屏。其中红外触摸屏的视觉效果和定位原理都优于其它触摸屏技术,而且不受电流、电压和静电干扰,可以适宜恶劣的环境条件。但是,与其它三种触摸屏相比,红外触摸屏也存在分辨率低的问题,这一点严重影响了红外触摸屏的实际应用。 为此,本文采用ARM7和VC提出了一种高分辨率的红外触摸屏的实现方案。该方法通过ARM7对接收管和发射管的控制,来实时采集与发射管一一对应的接收管的光通量,然后计算鼠标位置,最后通过VC编程来实现在Windows下的鼠标驱动。
1硬
[单片机]
双异步串口经AT89C2051与TMS320VC5402HPI口通信的解决方案
摘要: 提出了两个微机串口与DSP处理器(TMS320VC5402)HPI(Host Port Interface)口通信问题的解决方案,该方案采用单片机(AT89C2051)实现数据的串/并、并/串转换,并控制DSP的HPI实现共享总线。给出了硬件连接电路和用FPGA作为总线仲裁器的设计思路,介绍HPI口的操作过程,单片机与微机串口之间通信的硬件设计方法。
关键词: DSP 单片机 HPI 串行通信 FPGA
本文所介绍的是我所正在研制的卫星CDMA接收机未端DSP与微机串口通信的接口电路。由于CDMA接收机支持两个独立CDMA信道的接收,并将两路解调后的数据分别经串口送至不同的计算机
[网络通信]
STM32的串口通信原理介绍
介绍串口通信 按照数据传送方向分类 单工:数据传输只支持数据在一个方向上传输 半双工:允许数据在两个方向上传输。但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;它不需要独立的接收端和发送端,两者可以合并一起使用一个端口 全双工:允许数据同时在两个方向上传输。因此,全双工通信是两个单工通信方式的结合,需要独立的接收端和发送端 按照通信方式分类 同步通信:带时钟同步信号传输。比如:SPI,IIC通信接口 异步通信:不带时钟同步信号。比如:UART(通用异步收发器),单总线 在同步通讯中,收发设备上方会使用一根信号线传输信号,在时钟信号的驱动下双方进行协调,同步数据。例如,通讯中通常双方会统一规定在时
[单片机]
STM32F103测试SD卡串口写入测试
1.硬件引脚介绍: 本测试采用SPI模式读写SD卡,相关引脚配置如下: 片选:SD_CS- PB13,对应SD卡的1脚,低电平有效 时钟:SPI1_SCK- PA5,对应SD卡的5脚 主入从出:MISO- PA6,对应SD卡的7脚 主出从入:MOSI- PA7,对应SD卡的2脚 2.初始化步骤: while(SD_Initialize()) { //提示检查SD卡 } //初始化SD卡 u8 SD_Initialize(void) { u8 r1; // 存放SD卡的返回值 u16 retry; // 用来进行超时计数 u8 buf ; u16 i; SD_SPI_Init(); //初始化IO S
[单片机]
面向家庭的远程健康监护医疗系统的设计
1 引 言 远程医疗监护是指通过通信网络将远端的生理和医学信号传送到监护中心进行分析,并给出诊断意见的一种技术手段。他是随着计算机技术、现代通信技术的发展而发展起来的。计算机技术与现代通讯的发展为远程医疗服务带来新的机遇,使得人们可通过应用计算机技术和现代通信,实现个人与医院间,医院和医院间的医学信息的远程传输和监控,远程会诊、医疗急救、远程医疗教育与交流等。其中面向家庭的远程医疗健康监护是在配备先进适宜的医疗设备的条件下,将千家万户和医疗机构联系起来,实现医疗进入家庭,在病人家中实施监护、诊断、治疗、康复和保健多位一体的一种新的远程医疗模式。远程病人监护已经越来越引起人们的极大关注。其快速发展有很强的社会现实背景:
[医疗电子]
Linux下ARM 和单片机的串口通信设计
0 引言 数据采集系统中由于单片机侧重于控制,数据处理能力较弱,对采集的数据进行运算处理比较繁琐,如果通过串口与上位机通信,利用上位机强大的数据处理能力和友好的控制界面对数据进行处理和显示则可以提高设计效率。串口通信以其简单的硬件连接,成熟的通信协议,成为上下位机之间通信的首选。移植了Linux 操作系统的s3c2440 可以在Linux 环境下操作串口,降低了串口操作的难度,可以使开发者集中精力开发大规模的应用程序,而不必在操作底层设计上耗费时间。 1 硬件连接 s3c2440 是 三星 公司生产的基于ARM9 核的处理器,采用3.3 V 电压供电; C8051Fxxx 系列单片机是美国CYGNAL 公司推出的与8051
[单片机]