历史上的今天
返回首页

历史上的今天

今天是:2024年10月14日(星期一)

正在发生

2021年10月14日 | STM32 Uart及其配置

2021-10-14 来源:eefocus

重要的事情要说三遍,这个通信口,非常重要!非常重要!非常重要!


Uart =  Universal Asynchronous Receiver/Transmitter,通用异步接收器/发送器,它的特点就在于它的名字,通用,很多地方都用到;异步,它没有同步时钟;接收器/发送器:能收能发,全能小超人。


一般用在上位机(比如PC,比如中控等)与单片机的通信,单片机与模块间的通信,单片机与单片机的通信等等,主要用于两个不同设备间的通信,总之,它很通用!


它的主要特点除了它的名字之外,还要明白几个:1.一对一;2.全双工;3.传输距离不长,15m以内,长了干扰啊,还得取决于硬件设计电路;


PC如何与单片机通信呢?


PC相关的通信接口叫COM口,它有9个pin,是RS-232的电平标准,+15/+13V表示1,-15/-13V表示0;


单片机的相关通信接口叫UART口,它有4个pin,是TTL电平标准,+5V表示1,0V表示0;


这两个接口标准不一样,引脚数目不一样的通信接口,如何连接呢?


1. 电平标准不一样,需要一个电平转换芯片,MAXxxxx,所以,大家看到的,单片机跟PC机的接口连接上,有一个电路,如下图:

2. 引脚数目不一样,


Uart有四个引脚,VCC(电源),RXD(接收),TXD(发送),GND(地);


COM口有9个引脚,我们只用第2个pin(RXD)和第3个pin(TXD)就行了,其它引脚暂时不管;


需要注意的是,要把PC的RXD和板子的TXD连接起来,板子发送对PC接收,把PC的TXD和板子的RXD连接起来,PC发送对板子接收,还要记得共地,也就是把串口的铁壳子和板子的地连接起来;


具体的设计原理和细节,软件工程师不需要了解太多,知道有这么一回事就行了。


同理,单片机与单片机,单片机与模块通信,也就是把不同设备的RXD和TXD交叉连接起来。


如下图:上面的是板子上的接口,下面的是PC的接口,USB转COM口;

这两个长这样子的口,怎么连接起来呢?都是针针的,咋个连接?


这里普及一下公头和母头,


如上图,带有很多针针的,就是公头;


如下图,带有很多孔的,就是母头;


由于我用的两个都是公头,就必须要用两端都是母头的线连接起来;

如何连接?两端连接上去咯,连接后的图如下图:

好了,硬件接口讲解完毕,现在开始软件接口的配置了,


1. 找原理图,找到 RXD = PC11,TXD = PC10,这个根据原理图来,不能千篇一律;


2. 建一个STM32Cube工程,参照STM32CubeMx 创建第一个工程;


3. 在Pinout页,看一下PC11/PC10,可以设置为UART4,那就把它设置为 UART4吧,设置标示的 1)和 2);

4. 配置完引脚,在Configuration页,点刚刚配置引脚的UART4,可以配置UART4;

讲解一个Baud Rate、Word Length、Parity、Stop Bits、Data Direction、Over Sampling的含义吧。


先来一个串口时序图,如下图:先发一个 Start bit,接下来发几位数据,再接下来发个 Stop bit,一个数据帧结束,接下来发下一帧;

Baud Rate:波特率,通信的速率,表示每秒传多少个Bits,我们设置成 115200 Bits/s,一秒钟能传115200个Bits,通信的速率越高,传输数据越快,当然,传输距离就越短,出错的可能性也越大;


Word Length:一帧数据帧的位数,一个Start Bit到一个Stop Bit,就算一帧数据,一个BYTE为8 Bit,一般设置为8;


Parity:奇偶校验位,数据位为“1”的个数,加上这个位,使得"1"的个数为偶数(偶校验)或者奇数(奇)校验,以此来校验数据的正确性,如果想用8 Bit数据和校验位,可以把上面的Word Length设置为9,奇偶校验位设置为奇或者偶;不过我们这里不使用奇偶校验位;


Stop Bits:停止位,表示数据帧结束;另外,由于是异步传输,没有专门的时钟,每个设备有不同的时钟源,可能会有一点点点小小的偏差,这个停止位还可以用来提供通信双方校正通信同步的机会;


Data Direction:这个还用说,当然选收发咯,当然,你也可以选单收或者单发,你喜欢,你愿意!


Over Sampling:对这东东,只要知道 1. 主要用来做接收采样的,8倍波特率或者16倍波特率;2. 波特率计算跟这个有关系,反正不用自个计算;3. 我们平常用的波特率都在1MBps之下,选啥没什么区别;具体就不上图了,RM0033文档满上,撸一把!


总之,通信双方,参数,一定要一致!一定要一致!!一定要一致!!!


好了,生成代码,生成的代码是这样的,有没有熟悉的感觉撒:

看下MX_UART4_Init(),是不是就是刚才配置的参数?

再次回到main()函数里面,看看while(1){}里面,是不是空空如也呀?有没有觉得,应该加点什么?


我们就做一个收到什么,就把收到的自加1,再发送出去的功能吧。


首先,声明个变量,用来存放收到的数据;

接下来,将收到的数据自加1,发送出去:

HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)


HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)


作用是接收/发送串口数据,


*huart:句柄


*pData:数据指针,该指针的内容就是接收/发送的数据


Size:接收/发送数据的长度,因为这里只接收一个字节,就写1,如果要接收多个数据,可以填其它数,但pData可以传入一个数组;


Timeout:时间,因为直接在循环里面轮询,就直接填0;


这两个函数在HAL库里面有实现的源码,有兴趣的话可以看看,对照着RM0033阅读代码,看看它是如何实现的,会有很大收获;


编译,运行,在PC机上用串口调试助手测试下;

串口配置一定要和MCU配置一致;


请钩上HEX发送,HEX显示;


这里是直接用轮询的方式接收串口数据,后面,我们再讲解一下用中断和DMA的方式接收串口数据并处理吧。


    整个工程及代码呢,请上百度网盘上下载咯;


    链接:https://pan.baidu.com/s/19usUcgZPX8cCRTKt_NPcfg 密码:07on


    在Code/UartTest文件夹里面;

推荐阅读

史海拾趣

Anders DX公司的发展小趣事

Anders DX是一家专注于设计和制造显示解决方案的公司,以下是该公司发展的相关故事:

  1. 公司成立与初期阶段:Anders DX成立于2002年,总部位于英国霍尔特。公司的创始人包括Neil Jarvis和David Vallis,他们都在显示技术领域拥有丰富的经验。公司成立之初,主要从事自定义显示解决方案的设计和制造,为各种行业的客户提供定制化的显示产品。

  2. 技术创新与产品开发:Anders DX在其成立初期就致力于技术创新和产品开发。公司团队与客户紧密合作,根据客户的需求和应用场景,设计和制造各种类型的显示解决方案,包括液晶显示屏、触摸屏、OLED显示屏等。他们采用先进的制造工艺和技术,不断推出新产品,满足客户不断变化的需求。

  3. 客户合作与市场拓展:随着公司业务的发展,Anders DX与越来越多的客户建立了紧密的合作关系。公司的客户群涵盖了各个行业,包括医疗、工业、汽车、消费电子等领域。通过与客户的合作,Anders DX不断拓展产品的应用领域和市场份额,在行业内树立了良好的声誉。

  4. 全球布局与生产基地:为了更好地服务全球客户,Anders DX逐步在全球建立了生产基地和销售网络。除了在英国的总部外,公司还在亚洲和美洲地区设立了生产工厂和销售办事处,以满足不同地区客户的需求。这些生产基地拥有先进的设备和技术,能够为客户提供高质量的定制化显示解决方案。

  5. 持续发展与未来展望:作为一家专注于显示解决方案的公司,Anders DX将继续致力于技术创新和产品开发。公司将继续与客户紧密合作,不断推出适应市场需求的新产品,并不断提升生产效率和产品质量,以保持在行业内的竞争优势。同时,Anders DX也将继续关注行业的发展趋势和技术变革,及时调整战略,以确保公司持续健康发展。

创基(CBI)公司的发展小趣事

面对日益激烈的国际竞争,CBI公司积极实施全球化战略,通过海外投资、并购等方式,不断扩大市场份额。同时,公司还注重本土化运营,根据不同地区的市场需求和消费者习惯,提供定制化的产品和服务。这一策略使CBI在全球范围内建立了完善的销售网络和售后服务体系,进一步巩固了市场地位。

启攀微电子(Chiphomer)公司的发展小趣事

启攀微电子(Chiphomer)公司成立于2003年,当时正值中国集成电路产业快速发展的初期。创始人张杨带领着一支由英美归国的留学精英和国内资深管理与技术人员组成的团队,立志要在这一领域闯出一片天地。然而,初创时期的资金短缺、技术壁垒和市场认可度低等问题,让公司面临着巨大的挑战。然而,他们凭借着对技术的执着追求和对市场的敏锐洞察,成功推出了首款SDH通信芯片,为公司的后续发展奠定了坚实的基础。

E Connector Solutions公司的发展小趣事

随着公司业务的不断发展,E Connector Solutions公司开始积极拓展市场。公司通过参加国际展会、与海外客户建立合作关系等方式,逐步打开了国际市场的大门。同时,公司还积极实施国际化战略,通过设立海外研发中心、生产基地等方式,加强与全球客户的合作与交流。这些举措不仅拓宽了公司的业务范围,还提升了公司的国际竞争力。

FINECHIPS公司的发展小趣事

面对全球电子行业的激烈竞争,FINECHIPS公司意识到供应链优化的重要性。公司积极调整供应链策略,与全球领先的半导体制造商和原材料供应商建立长期稳定的合作关系,确保原材料的稳定供应和成本控制。同时,FINECHIPS还在全球范围内设立生产基地和研发中心,实现本地化生产和快速响应市场需求,进一步提升了公司的全球竞争力。

CWIND公司的发展小趣事

CWIND公司非常重视人才培养和团队建设。公司建立了完善的培训体系,为新员工提供全面的职业技能培训;同时,公司还鼓励员工参与各种技术交流和培训活动,提升自身的技术水平。在团队建设方面,CWIND注重营造积极向上的工作氛围和团队合作精神。通过定期举办团队建设活动和员工表彰大会等方式,公司成功打造了一支高效、协作、创新的团队。

问答坊 | AI 解惑

Aeroflex 5800系列设备满足不断发展的自动测试需求

如果您是一位工程师,而且正在进行混合信号测试、器件编程、功能测试、在系统编程或者简单协议通信,那么Aeroflex设计的5800系列自动测试设备(ATE系统)能够让您的工作更轻松。5800系列ATE设备采用开放式并且高度可配置的结构,因而能轻松适应不断发 ...…

查看全部问答>

MSP430JTAG原理图

挺好的,有兴趣自己做一个…

查看全部问答>

请教高手! 急用!!!!利用汇编实现D/A、A/D转换产生波形并显示.

内容如下:1.利用D/A设计一个波形发生器,能分别产生三角波、正弦波、锯齿波和方波。           2.并利用按键(自行定义)进行输出波形选择。           3.并对应按键选择输出波形 ...…

查看全部问答>

RV MDK开发工具视频(精典)连载。。。。

下面是本人下载的的RV MDK微控制器开发平台的视频讲解 。。    里面对国内国际所使用的RV MDK开发工具做出了详细的指导,给出了他们个人的见解。    对于学习CORTEX M3和ARM技术有相当好的帮助。。。     用MDK ...…

查看全部问答>

DfuSe可以读取STM32的芯片内容?

各位好,    我把STM32 用串口ISP烧写了 IAP (DfuSe需要与之通讯),并且对STM32 作了读保护。    然后用 DfuSe 软件 更新了我的用户程序(APP)。    是可以读保护了,因为 用Jlink 的 JTAG口 是读不出来, ...…

查看全部问答>

MSP430F2274中uart通信,程序没有问题,但是用串口精灵测试就是没有数据

//****************************************************************************** //   MSP430F22x4 Demo - USCI_A0, Ultra-Low Pwr UART 9600 String, 32kHz ACLK // //   Description: This program demonstrates a f ...…

查看全部问答>

上次看科学网报道 说德国教授说中国有大量的技工但是工程师不多

上次看科学网报道 说德国教授说中国有大量的技工但是工程师不多感觉确实是这样,工程师是解决问题的,而技工只是体力活,没有创造性劳动。并且工程师有理论基础,为什么ic厂的设备技校出来的都可以操作为什么还要找研究生呢?就是因为研究生理论基 ...…

查看全部问答>

C语言开发DSP嵌入式系统

摘要:目前很多嵌入式系统以DSP 为核心构建,但是,采用汇编语言开发DSP 系统存在开发难度大、开发周期长、维护性差等缺点,应用C 语言开发DSP 系统是广大嵌入式开发者的迫切要求。有关单片机的C 语言开发有相当多的资料可以参考,而DSP 系统的C 语 ...…

查看全部问答>

新来开场白

目前在学习MSP430,若有同道的人,可以一起学习呀。…

查看全部问答>

二线城市的IC岗位有哪些?

本帖最后由 caoshangfei 于 2014-4-11 15:41 编辑 现在很大IC公司都布局二线城市,有好的机会希望大家共享,讨论!谢谢…

查看全部问答>