STM32MP1 Cortex M4开发第5篇:串行通讯接口
写在前面: 本文章为《ARM Cortex-M4裸机开发篇》系列中的一篇,全系列总计14篇。笔者使用的开发平台为华清远见FS-MP1A开发板(STM32MP157开发板),Cortex-M4裸机开发篇除了讲M4裸机开发外,还会讲解通过M4控制资源扩展板上的各种传感器执行器模块(包括空气温湿度传感器、
写在前面:
本文章为《ARM Cortex-M4裸机开发篇》系列中的一篇,全系列总计14篇。笔者使用的开发平台为华清远见FS-MP1A开发板(STM32MP157开发板),Cortex-M4裸机开发篇除了讲M4裸机开发外,还会讲解通过M4控制资源扩展板上的各种传感器执行器模块(包括空气温湿度传感器、LED灯、数码管、蜂鸣器、震动马达、按键中断、风扇等),本篇是M4控制资源扩展板中的一篇。
资源扩展板是FS-MP1A开发板的扩展模块,主要包含了10余种主流传感器、执行器件、总线控制器件,非常方便项目扩展用。可拓展开发智慧家庭、智能医疗、智能安防、工业控制、图像识别、环境检测等方向的10个左右综合项目,华清远见开发板也将配套提供所有项目的说明文档、实验源码、应用程序等资料。
针对FS-MP1A开发板,除了Cortex-M4裸机开发篇外,还包括其他多系列教程,包括Cortex-A7开发篇、FreeRTOS篇、Linux基础及应用开发篇、Linux系统移植篇、Linux驱动开发篇、硬件设计篇、人工智能机器视觉篇、Qt应用编程篇、Qt综合项目实战篇等。
资源扩展板介绍
硬件介绍&资源扩展板可开发项目
Cortex-M4 串行通讯接口
实验目的
熟悉STM32CubeIDE工具软件的使用。
掌握STM32CubeIDE软件的基本设计流程和设计步骤,能够使用工具进行设计、编程、仿真调试。
学习UART串口的使用方法,掌握如何利用STM32MP157A芯片的串口输入输出。
实验环境
FS-MP1A开发平台
ST-Link仿真器
STM32CubeIDE开发软件
PC机 XP、Window7/10 (32/64bit)
串口调试工具
实验原理
串口,可以说是计算机上最通用的设备通信协议之一,不过要注意别和USB(通用串行总线)搞混了。大多数计算机都带有两个基于RS232的串口,同时它也是仪器仪表设备的标配协议——很多GPIB兼容的设备也配有RS-232口。不仅如此,串口通信协议还能用来获取远程采集设备的数据。
串口通信的原理其实很简单:按位(bit)发送和接收字节。虽然比按字节(byte)的并行通信慢,但它的优势在于可以用一根线发送数据的同时用另一根线接收数据,简单可靠且能实现远距离通信。典型的应用是传输ASCII码字符。通信只需要3根线:地线、发送线、接收线。由于它是异步通信,端口能在一根线上发数据的同时在另一根线上收数据。其他线用于握手,但不是必须的。串口通信最重要的参数有四个:波特率、数据位、停止位和奇偶校验。
对于两个进行通信的端口,这些参数必须匹配。来逐一看看:
波特率: 衡量通信速度的参数,表示每秒钟传送的bit个数。比如300波特就是每秒300个bit。当协议要求4800波特率时,时钟就是4800Hz,意味着数据线的采样率为4800Hz。常见电话线的波特率是14400、28800和36600。波特率可以远高于这些值,但要注意波特率和距离成反比——高波特率通常用于放置很近的仪器之间通信,典型的例子是GPIB设备。
数据位: 实际通信中数据位的个数。标准值有5、7、8位,具体取决于你要传送的信息。比如标准ASCII码是0~127(7位),扩展ASCII码是0~255(8位)。如果传输简单的文本,每个数据包用7位数据就够了。每个“包”指一个字节,包含开始/停止位、数据位和奇偶校验位。
停止位: 表示单个包的最后一位,典型值为1、1.5和2位。这里的1.5位数据宽度就是1.5个波特率。由于每个设备有自己的时钟,通信中可能出现不同步,停止位不只是传输结束的标志,还给计算机提供了校正时钟同步的机会。停止位越多,对时钟同步的容忍度越大,但数据传输率也越慢。
奇偶校验位: 一种简单的检错方式,有四种:偶、奇、高、低,当然也可以不用。对于偶校验和奇校验,串口会在数据位后面设置一个校验位,确保传输的数据有偶数个或奇数个逻辑高位。例如数据是011,偶校验时校验位为0(逻辑高共2个,偶数),奇校验时校验位为1(逻辑高共3个,奇数)。高和低校验只是简单置位逻辑高或低,不真正检查数据。这样接收设备能判断是否有噪声干扰或不同步。
硬件流控制: 常用的有RTS/CTS流控制和DTR/DSR流控制。硬件流控制必须连接相应的电缆线。以RTS/CTS为例,通信两端的RTS、CTS对应相连。数据终端设备(如计算机)用RTS启动调制解调器的数据流,而数据通讯设备(如调制解调器)用CTS来起停计算机的数据流。编程时根据接收端缓冲区大小设置高位标志(如75%)和低位标志(如25%),当缓冲区内数据达到高位时,接收端将CTS置低电平的逻辑0,发送端检测到CTS为低后就停止发送数据,直到缓冲低于低位再将CTS置高电平。RTS则标明接收设备是否准备好接收数据,DTR/DSR的用法类似,这里不再赘述。
STM32串口设置一般遵循以下几个步骤:
- 串口时钟使能GPIO时钟使能 设置引脚复用映射
- GPIO初始化设置, 模式为复用功能
- 串口参数初始化:设置波特率,字长,奇偶校验等
- 开启中断并初始化NVIC,使能中断(如果需要中断才需此步)
- 使能串口
- 编写中断处理函数
串口硬件原理图:
HAL库函数解析:
HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);
HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);
这两个函数是轮询方式发送和接收。
HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);
这两个函数是以中断方式发送和接收,具体传参详见工程。注意:这两个函数里指定了缓冲区和大小并开启中断,实际上数据还在中断里处理。HAL库提供了用户中断处理函数方式,通过调用回调函数来实现:接收中断在用户代码里重定义 void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart),发送中断重定义 void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)。
实验步骤
打开STM32CubeIDE → File → New → STM32 Project
在左侧搜索框内输入芯片型号STM32MP157A进行搜索,选择对应芯片,点击Next。
填写工程名,点击Finish。
点击Yes打开配置页面。
配置UART4,勾选Cortex-M4,Mode选择Asynchronous,NVIC Settings 勾选Enabled使能串口中断,搜索框搜索PB2、PG11,分别配置为UART4_RX、UART4_TX。
在Code Generator处选择为每个外设生成单独的C和H文件,这样设置方便阅读代码。
完成以上设置后,按下Ctrl+S保存,会提示是否需要生成代码,选择Yes即可自动生成代码。系统会自动生成System Clock代码。
在左侧工程文件夹找到UART_CM4子工程,打开main.c。
添加串口中断回调函数HAL_UART_RxCpltCallback:
| 12345 | void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){ HAL_UART_Transmit(&huart4, Buff, 5, 100);} |
在主函数中调用串口中断接收函数:HAL_UART_Receive_IT(&huart4, Buff, 5);
上述为新建工程配置过程,可参考12.3.2章节进行导入已有工程,工程存放路径【华清远见-FS-MP1A开发资料 2-程序源码ARM体系结构与接口技术Cortex-M44_UART】。
配置完成或导入工程后进行程序下载,具体步骤参考12.3.3节进行开发板连接,程序编译、下载。
实验现象
连接串口线,打开串口调试助手,选择串口号,波特率115200,打开串口。发送5个字符,可以看到成功接收到发送的字符。
硬件平台:华清远见FS-MP1A开发板(STM32MP157)
你是一名 AI 行业编辑,请围绕下面这条热点输出一份资讯解读:
热点:STM32MP1 Cortex M4开发第5篇:串行通讯接口要求:
1. 先用一句话解释这条热点在讲什么
2. 再总结它为什么重要
3. 说明会影响哪些 AI 产品或内容方向
4. 最后给出 3 个适合资讯站使用的标题
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
相关热点从传统数据服务迈向AI时代的指标服务转型,看起来是自然演进的趋势,但真正落地实施时,所遇到的挑战却不少。今天分享的这套思路,核心目标在于解决一个长期存在的难题:当数据产品与大语言模型相遇,过去那种“一个需求开发一个服务”的模式,还能否支撑得住?答案显然是否定的。因此,我们设计了一套全新的范式——指标
2023年3月8日,乾鸿微电子正式加入深圳市人工智能产业协会,成为会员单位。总经理胡波获颁会员牌匾及集成电路产业专家证。乾鸿微将借助协会平台,以模拟芯片产品服务会员,推动人工智能与集成电路产业融合发展。
PCB,即印制线路板,是电子工业中不可或缺的基石。它之所以能被广泛应用,得益于高密度化、高可靠性与高设计性这三大核心优势。而要确保这些特性真正落地,生产过程必须实现标准化、规模化与自动化,从而保障每一块电路板都具备稳定一致的品质。 然而,进入后道工序后,挑战就随之而来。目前生产线普遍采用AOI A
近年来,智能制造领域持续高速发展,智能检测装备的需求也随之显著增长。作为先进制造的核心装备,智能检测设备不仅是“工业六基”的重要组成部分,更是实现产业基础高级化的关键环节。昂视最新推出的PiqsX视觉检测软件,专为解决最复杂的视觉检测难题而设计——为稳定生产、质量保障、效率提升及服役安全提供可靠支撑
- 日榜
- 周榜
- 月榜
热点快看
