STMCU小助手
发布时间:2023-2-18 16:00
|
1. 问题描述客户在使用 STM32G071RB 的 LPUART 单线半双工模式开发相关的应用时,进行连续接收发送数据时,客户在检测到 RXNE 位时,认为接收完成,立即进行发送,发现 stop位(波形不完整)与 start 位发生了重叠。4 _9 G- B$ A- W }/ f* L! ^- I 6 A! t! C6 s6 @, ?0 D% Z% I 客户配置: 时钟频率: HSI=16MHz: A- T/ H! M+ }7 s6 d 波特率: 9600 bits/s. 停止位: 1bit0 t ]9 ?9 |2 { J+ Y 字长: 8 bits " O( `4 g4 [6 P( d5 u* V6 M 校验: none! o& i& h+ m5 @& ^; Z8 m6 F + a8 f, t+ _' L3 O( L) t0 X 2. 问题分析# O R3 k F0 |7 M" q 复现客户问题:8 ?( E5 Z5 n9 v 实验环境搭建:使用两块 STM32G071RB NUCLEO 板子采用单线半双工通信,将两块板子编号为 STM32G071RB NUCLEO_A 和 STM32G071RB NUCLEO_B。使用逻辑分析仪抓取信号波形。7 y6 |$ j {* q2 E, Y1 g 使用 STM32CubeMX 进行基础配置生成代码,具体配置如图& O }+ Z; M4 D/ y, W. w9 P 6 h/ W V( g! i9 G# \( h : i2 r" ^& {" h- S* E
: g/ ]: j* S1 v! X' U
+ u& d& q3 M) Y8 } k/ u 复现客户问题代码如下:( u' O2 e4 m8 S- K6 F4 g STM32G071RB NUCLEO_A 发送 0b0101 0101
STM32G071RB NUCLEO_B 收到后发送数据 0b0101 1010
测试结果如下图: 0 q3 D( T+ f& \
从图中可以看出 1bit 约为 100us,设备 A 的 stop 位仅有 54.82us 。A 设备的 stop 位与 B 设备的 start 位重叠在了一起。B 设备检测到 RXNE 置位后,接收数据后立即发送数据,导致 B 开始发送的时候,stop 位只有一半,导致波形不完整。 . _5 X$ O! F) s& v( P" Z5 N6 c ( x) N5 }+ d: O 那怎样控制 stop 位与 start 位之间的时间使之区分开呢?- a% h3 r8 k, X) f& u# ] 4 |& Z% h5 l0 z0 H9 E 完整版请查看:附件
LPUART 单线半双工通信过程中 stop 位与 start 位重叠的问题.pdf
(466 KB, 下载次数: 0)
|
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
Keil-MDK 在线调试设置断点的高级用法
请教下STM32N6570 怎么把分辨率改成320x240并可以全屏显示
【福利三:逢7发帖赢大礼】想要充分利用STM32H743VI片内的RAM空间(但并不顺利)
基于stm32平台上的IC-MU磁绝对值编码器SPI通讯和码盘数据处理
使用STM32 MCU和MPU连接PDM数字麦克风
分享STM32资料-采用 STM32U031R8 MCU 的 STM32 Nucleo-64 开发板,官方资料,数据手册等资料
HRTIM 指南
使用 STM32 的 DWT 单元监控内存
DAC,COMP,HRTIM Fault 功能的使用
微信公众号
手机版