STM32F4XX高效驱动篇1-UART

发布者:光子梦境最新更新时间:2016-12-08 来源: eefocus关键字:STM32F4XX  驱动  UART 手机看文章 扫描二维码
随时随地手机看文章

之前一直在做驱动方面的整理工作,对驱动的高效性有一些自己的理解这里和大家分享一下。并奉驱动程序,本程序覆盖uart1-8。

串口驱动,这是在每个单片机中可以说是必备接口。可以说大部分产品中都会使用,更有甚者一个产品中用到8个串口。这样一个高效的驱动是决定您产品优劣的关键因素。本文主要针对STM32F4XX系列芯片做的一个驱动接口层。以减少您在开发项目时驱动方面所花费时间,以及为程序达到高效的处理为目的。

从51,pic到现在的STM32,个人感觉STM32这方面做的非常突出,丰富的使用模式,强大的引脚映射功能,强大的处理能力等,给我留下的深刻的印象。

关于串口的使用方式,个人总结出以下三种:

1)         中断接收,状态查询发送:这种方式在单片机时代用的比较多,那时候大部分芯片的处理速度不够快,工业控制接口中大部分使用的是9600波特率,程序简单也就对串口发送数据所用时间要求不高。

2)         中断接收,中断发送:这种方式一般会在对高效性要求较高,或软件实时性高的产品中使用。这种方式的好外在于完全释放了CPU在发送开始到结束这一时间CPU控制权。

3)         中断接口,DMA发送:这种方式的使用场合和模式2相同,效率也相差不多。但这种方式确实比模式2CPU的占用时间会更少。

举个例子来说明以上三种模式。假如要把一堆物品从A点运到B点通过传送带,在这个传送过程中传送带上一次只能运一个物品,模式一:把物品放到传送带A点上,然后等待物品由A点被传到B点,这时再放一个物品到传送带上,以此往复所有物品传送过去。模式二:把物品放到A点的传送带上然后就去忙别的事情,看到物品快被传到B点,马上回来再放一个物品到传送带上。很明显这种方式比模式一多了很多空余时间。模式三:这种模式就牛了,在把物品放到A点之前,直接去找了一个“闲杂人等”过来,把物品交给他由他去发,我们需要再发送时,先问下她是否以发完,如果发完了就把新的物品交给他,如果没发完就等一小回再来找他。哈哈,这样咱们就有更多的时间去忙更多的事情了,也不用一回跑来一回跑去。把跑路的时间给节约出来了。

以上三种模式,很明显得出那种模式发送数据效率最高。我们下面说提供的程序就是使用模式三。

说完发送,再说说接收方式。大家一定发现数据接收都是采用中断方式,是的 本人使用过DMA方式进行过多次测试,在使用方面确实没有中断接收灵活。主要有以下两种情况,1,DMA接收数据的主要判断依据1是接收器满中断,这种情况在实际中很少用,除非您的数据是定长。这种方式同时还会存在一些安全隐患,假如噪声原因多接收到一个字节,那之后数据时序就会错位。2,DMA总线空闲中断,这种方式除非是半双工情况下使用。在全双工时被受到发送完成总线空闲的干扰。所以在数据接收方式上主要使用中断。

在数据接收中断方面还分二种方式,

方式1:顺序接收,在接收到第一个数据时就触发超时定时器,每接收到一个字节时就清一次定时器,都到一组数据接收完毕,定时器会因为触发超时中断。在超时中断中来判断一组数据被接收。这种方式一般会用到实时性的一些协议中,比如MODBUS。

方式2:队列接收,申请一个缓冲区收尾相接,接收到数据时载入队列之中,用户只要定时的去队列中读数据,来使用这些数据。这种方式是window,linux的驱动主要接收方式。他的优点就在于在使用数据时无需关闭中断。也就不用怛心在处理上一组数据时了来新的数据会破坏上组数据内容。在方式1中需要考虑在处理数据时暂时性的关下中断。

以下程序则主要是使用到接收使用方式2,发送数据使用模式3的DMA发送,本驱动程序为可裁切,覆盖串口1-8,通过宏裁切。下面提供了一些接口,这里对接口做一个大概的说明。

打开串口

void BSP_UartOpen(uint8_t COM,  uint32_t baud, uint8_t data, uint8_t stop, uint8_t parity);

关闭串口

void BSP_UartClose(uint8_t COM);

向串口中写数据

uint32_t BSP_UartWrite(uint8_t COM, uint8_t *buffter, uint32_t len);

从串口中读数据

uint32_t BSP_UartRead(uint8_t COM, uint8_t *buffter, uint32_t len);

 

查询串口发送忙碌状态

uint32_t BSP_UartTxIdleState(uint8_t COM);

这个接口主要用在,向串口写数据后,在进行下一次写数据之前需要进行查询。


关键字:STM32F4XX  驱动  UART 引用地址:STM32F4XX高效驱动篇1-UART

上一篇:STM32F4XX高效驱动篇2 I2C
下一篇:STM32示波器 信号发生器

推荐阅读最新更新时间:2024-03-16 15:24

空气驱动不是梦 PSA空气混动车车展亮相
    新能源汽车是现今几乎每个厂商都在研发的车型,普通厂商选择油电混合,文艺厂商选择氢动力,而PSA选择剑走偏锋——研发空气与汽油发动机混合动力系统。于是,在本届日内瓦车展上,我们就在PSA的展台上发现了标致2008 Hybrid Air概念车的身影。     这个由气动马达与汽油发动机组成的混合动力系统由PSA集团和BOSCH公司共同开发,其主要由汽油机、压缩空气存储系统和气动马达组成。标致2008 Hybrid Air只是PSA减少旗下车型二氧化碳排放量技术的一部分,PSA希望到2015年时,使二氧化碳排放量降为每公里116克。 ​● 驱动模式的选择    在这套混动系统中,压缩空气作为能量源来驱动气
[汽车电子]
LED驱动器无闪烁的调光控制设计
  1 LED照明 设计带来的挑战   目前,全球照明行业的数字革命正在到来,高效节能的 LED灯 将取代白炽、M16卤素灯和CFL灯泡。但近段时间LED照明设计人员的工作面又临新的挑战,那就是同时满足既可用针对白炽灯与M16卤素灯的 LED驱动 器来实现调光控制功能,又要实现高 功率 因数无任何闪烁的调光控制的的新要求,尤其是要兼容现有的基础架构,其中包括切角调光和电子变压器调光支持无闪烁调光的设计。   应该说,调光是照明系统非常常见的功能,相对于对于白炽灯或M16卤素灯来说,它可以以低成本轻易实现,但对于LED灯的调光而言却存在一定难度,尤其是要实现无任何闪烁的调光控制。通常对建筑与用户来说要将白炽灯或M16转换到
[电源管理]
LED<font color='red'>驱动</font>器无闪烁的调光控制设计
电机驱动着世界运转
    电机是许多电器的主要组成部分之一,而控制电机运转的电机驱动器则是电机的灵魂所在。本文将为您介绍由安森美半导体新推出电机驱动器模组方案,并了解其如何搭配Arduino MICRO一起运作,来简化电机驱动设计方案。   安森美半导体电机驱动模组解决方案套件搭配Arduino MICRO*1来简化电机驱动设计。   电机驱动器的种类相当多,以配合驱动不同的电机种类(步进、直流有刷、直流无刷…),这使得在设计电机驱动方案时变得比较复杂,对于需要使用电机来开发应用的设计工程师而言,得花费大量时间来选择器件。该过程通常需要深入了解器件的详情,包括规格、功能和外部电路设计配置。工程师们也需要在原型设计上投入大量资源和精力,它
[工业控制]
英飞凌全新 EiceDRIVER栅极驱动 IC 助力 5G和LTE宏基站发展
英飞凌科技股份有限公司推出全新 EiceDRIVER™ 2EDL8 栅极驱动 IC 产品系列,以满足移动网络基础设备DC-DC 电信砖的增长需求。这些双通道接面隔离式栅极驱动 IC 能为隔离式 DC-DC 降压转换器/电信砖提供高功率密度、高效率和耐用度,助力打造 5G 和 LTE 电信基础设备的宏基站。 新款 2EDL8 系列包含四个版本,分为两种不同的上拉电流和两种不同的输入配置。3A(安培) 版本适合用于改装设计,领先业界的 4A(安培) 版本则适用于降低 MOSFET 开关耗损。 2EDL802x 的双通道可分别独立运作,是一次侧对角驱动全桥及二次侧同步整流级用于降低续流(
[嵌入式]
英飞凌全新 EiceDRIVER栅极<font color='red'>驱动</font> IC 助力 5G和LTE宏基站发展
TMS320VC5402和PC机的UART研究与设计
1 引言 TMS320VC5402以其低成本、低功耗、资源多的特点在通信、控制领域得到了广泛的应用。片上集成了最大192kB存储空间(64kB RAM、64kB ROM、64kB I/O),具有时分多路串口TMD,2个缓冲串口BSP、8位并行主机接口HPI、可编程等待状态发生器等,完全可以满足数据处理及控制要求。基于 5402构建的应用系统中必不可少的是各种数据通信接口的设计。与并口相比,串行接口的特点是减少器件引脚数目,节省了硬件系统的体积,降低了接口设计的复杂性。实际应用中,各系统之间需要实现异步串行数据传输和通信,而DSP5402具有同步串口,与标准的异步串行接口不同,本文针对这种应用,设计实现了DSP5402和PC
[嵌入式]
单片机软件UART的设计资料
目前扩展串口的方法主要有以下方法, ①、采用串口扩展芯片实现,如ST16C550、ST16C554、SP2538、MAX3110等,虽然成本较高, 但系统的可靠性得到了保证,适用于数据量较大、串口需求较多的系统;②、采用分时切换的方法将一个串口扩展与多个串口设备通信,分时复用的方法成本低, 但只适用于数据量不大的场合, 并且只能由这个单片机主动和多个设备通信,实时性差;③、用软件模拟的方法扩展串口,其优势也是成本低、实时性好, 但要占用一些CPU时间。 一般的软件模拟扩展串口方法,使用1个I/O端口、1个INT外部中断和定时器,该方法扩展的串口有2个缺点,①、由于使用了INT外部中断,故只能使用2个INT外部中断扩展2个串口。②、文
[单片机]
IR照明HVIC被中国领先的行业媒体评为最佳电源控制产品
全球功率半导体和管理方案领导厂商 – 国际整流器公司 (International Rectifier,简称IR) 今天宣布,公司的IRS2166D高压照明IC被中国行业领先媒体《电子设计应用》杂志评为最佳电源控制产品。 IRS2166是600V全集成保护式控制IC,适用于集成了功率因数校正功能(PFC)的先进的荧光灯镇流器。该IC把PFC、镇流器控制和半桥驱动器集成在单一的单片组件上,可在临界导通模式下工作,功率因数(PF)高达0.99,总谐波失真(THD)低于10%,精确的DC总线调节在2.5%的容差范围之内。 《电子设计应用》电源控制类专家评审组一致认为具有PFC功能的电子镇流器驱动器芯片IRS2166D,是照明控制系统的
[焦点新闻]
新能源驱动电机轴承设计应用特性和优势
新能源电动汽车是近几年国家倡导开发的绿色环保、零排放新能源汽车,其中驱动电机、电池、控制器是新能源汽车的核心部件,也是新能源汽车的心脏。 滚动轴承是驱动电机旋转件,高速、高温、频繁启停伴随着冲击是电动汽车驱动电机的主要工况, 开发能适应本工况条件的系列化密封式深沟球轴承,可以满足混合动力大巴车、纯电动大巴车、纯电动乘用车、纯电动微型车等一系列新能源汽车驱动电机使用。并在市场得到广泛应用。 设计应用特点 新能源驱动电机轴承设计考虑了良好的密封性能、高温性能、低温性能、反复启停性能、一定的轴向冲击载荷等条件,优化了产品内部结构,充分考虑了轴承材料、热处理、机械加工精度、油脂、安装配合对产品的影响,使产品性能得到极大提升,极限
[嵌入式]
新能源<font color='red'>驱动</font>电机轴承设计应用特性和优势
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved