STMCU小助手
发布时间:2023-2-18 16:00
|
1. 问题描述客户在使用 STM32G071RB 的 LPUART 单线半双工模式开发相关的应用时,进行连续接收发送数据时,客户在检测到 RXNE 位时,认为接收完成,立即进行发送,发现 stop位(波形不完整)与 start 位发生了重叠。 # H3 j% P' v& H E( o- l1 H & l7 S- T$ u, Q 客户配置:8 }; @" z) n: M& D0 n 时钟频率: HSI=16MHz$ N9 s- p0 D! R+ N 波特率: 9600 bits/s. 停止位: 1bit 字长: 8 bits 8 g# n+ D% S' H& Z2 _ 校验: none. h! r' D2 X% S8 e! P' D1 H0 n 6 ^8 S0 U0 @0 J 7 s: ~# [; m* S0 c5 @8 E 2. 问题分析1 P1 q% _% [1 b! s( J 复现客户问题:( `; n, l$ q. F# J: A8 l 实验环境搭建:使用两块 STM32G071RB NUCLEO 板子采用单线半双工通信,将两块板子编号为 STM32G071RB NUCLEO_A 和 STM32G071RB NUCLEO_B。使用逻辑分析仪抓取信号波形。 使用 STM32CubeMX 进行基础配置生成代码,具体配置如图' T3 c% Y+ u0 L- p8 Z, |- M4 o, p 8 K7 Q' F: ~( z; h * H! C4 }- k3 G# j: N& Q5 @
8 q0 @. }7 J2 p7 p
# E5 k& v& w/ H: Z4 r: \ 复现客户问题代码如下:& ] B+ V; Z$ d0 Z STM32G071RB NUCLEO_A 发送 0b0101 0101
STM32G071RB NUCLEO_B 收到后发送数据 0b0101 1010
测试结果如下图:
" W( i+ x/ d0 I$ | # M, A/ j1 z k 从图中可以看出 1bit 约为 100us,设备 A 的 stop 位仅有 54.82us 。A 设备的 stop 位与 B 设备的 start 位重叠在了一起。B 设备检测到 RXNE 置位后,接收数据后立即发送数据,导致 B 开始发送的时候,stop 位只有一半,导致波形不完整。% {/ Z/ M0 T" S I 那怎样控制 stop 位与 start 位之间的时间使之区分开呢?4 g7 P8 n8 W. M6 _ 4 P4 B( [! L( v, n3 C6 q 完整版请查看:附件
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 功能的使用
微信公众号
手机版