跳转到主要内容

STM32

当STM32遇到串口RS485双机通信,这样处理最便捷

judy /

RS485通信想必大家都知道,在学习RS232时,都会拿485(RS485下文就用485代替)和其作对比。485优缺点不说,网上有。

我用的是STM32库函数学的485通信,所以接下来就讲讲STM32串口实现485双机通信的原理:

485和232都是基于串口的通讯接口,在数据的收发操作上都是一致的。但是他两的通讯模式却大不相同~!232是全双工(例:A->B的同时B->A,瞬时同步)工作模式,而485是半双工(发时不能收,收时不能发)工作模式。在232通信中,主机在发送数据的同时可以收到从机发过来的数据;但在485通信中,收发要经过模式位的切换来进行,譬如,发送数据时,会把模式为置‘1’,表示为发送模式,此时不能接收;当接收数据时,会把模式位置‘0’,表示为接收模式,此时不能发送。

在讲STM32串口实现485双机通信的原理之前,先来复习一下串口中的中断知识点:

STM32单片机USB传输数据时出现卡顿现象

judy /

1 前言

在进行 USB 开发的过程中,有多个客户反馈,USB 传输数据时出现卡顿现象。本文将针对这
一问题进行分析。

2 问题分析

这几个客户问题现象基本差不多,采用 STM32 作为 Device 设备,在与上位机或者 PC 端双向通讯一段时间后,从 Device 端到 Host 端的数据能够正常,而从 Host 端到 Device 端的数据异常,也就是说,STM32 在一段时间后不再能正常接收数据,但是,如果只是单向通信,就一直都是正常的。

这几个客户,有用 STM32F2 的,也有用 STM32F4 的,有用 CDC 类的,也有用作 HID 设备的,但都使用了 Cube 库。

下面就具体问题以其中一个客户使用 STM32F411 的 USB CDC 类的案例来分析问题,现象如
下 USB 通讯数据(CDC 类):

STM32处理器的AD难点整理

judy /

<strong>一、</strong>

STM32的AD转换,可以将转换任务组织为两个组:规则组和注入组。

在任意多个通道上以任意顺序进行的一系列转换构成成组转换。

例如,可以如下顺序完成转换:通道3、通道8、通道2、通道2、通道0、通道2、通道2、通道15。在执行规则通道组扫描转换时,如有例外处理则可启用注入通道组的转换。可以模糊的将注入组的转换理解为AD转换的中断一样,规则通道组的转换是普通转换,然而注入组的转换条件满足的情况下,注入组的转换会打断规则组的转换。

如果规则转换已经在运行,为了在注入转换后确保同步,所有的ADC(主和从)的规则转换被停止,并在注入转换结束时同步恢复。规则转换和注入转换均有外部触发选项,规则通道转换期间有DMA请求产生,而注入转换则无DMA请求,需要用查询或中断的方式保存转换的数据。

<strong>二、</strong>

规则组:此模式通过设置ADC_CR1寄存器上的DISCEN位激活。它可以用来执行一个短序列的n次转换(n<=8),此转换是ADC_SQRx寄存器所选择的转换序列的一部分。数值n由ADC_CR1寄存器的DISCNUM[2:0]位给出。

发现 STM32 防火墙的安全配置

judy /

STM32 防火墙(Firewall)能够构建一个与其它代码隔离的带有数据存储的可信任代码区域,结合 RDP、WRP 以及 PCROP,可用来保护安全敏感的算法。在 STM32 Cube 固件库参考代码里提供了几个不同的防火墙配置。那么问题来了,什么是STM32 防火墙的应该使用的安全配置呢?本文以 STM32 参考手册为基础,以最大化安全为目标,来探索发现 STM32 防火墙的推荐配置。

<font size="3"><strong>STM32 防火墙介绍</strong></font>

STM32 防火墙保护特定代码/数据不被保护区域之外的执行所访问。代码和数据位于 Flash 存储器中,也可以位于 SRAM1 中。

可选择配置的防火墙的三个保护段如下:

 代码段(Flash)
 数据段(Flash)
 易失数据段(SRAM1), 可被配置为可执行

防火墙配置激活后,对受保护代码的访问必须唯一的通过调用门(Call gate)进行。防火墙外设监听 AMBA 总线,任何不通过调用门的访问,将导致系统重启。

利用 DFSDM 开发 PDM 麦克风应用介绍

judy /

前言

STM32 提供了丰富的音频应用外设,并得益于灵活高效的内部架构,可以支持广泛的音频应用。本文中,在简单介绍音频采集的背景知识后,从应用需求出发,确定麦克风的选用。然后,描述了 STM32 内部 DFSDM (Digital Filter for SigmaDelta Modulator)在 PDM 麦克风采集中应用。最后逐步介绍如何利用 STM32CubeMX 进行 DFSDM 设计开发,实现 PDM麦克风声音采集。

一 背景知识

声音通过声学传感器获取模拟信号,经过模数转换器,转换成二进制码 0 和 1,这些 0 和 1 便构成了音频数字信号。

PDM 麦克风能够实现上述的模拟信号获取,并输出 PDM 信号。PDM(Pulse Density Modulation)脉冲密度调制,利用脉冲密度表示模拟信号强度。

从 PDM 位流中获取数据,还需要经过如下图环节才能获得模拟信号幅度对应的数字量。

基于STM32F1系列的重要宝典RM0008参考手册

judy /

近日有客户反映,他在在使用STM32F103C8T6的时候遇到如下问题:

I2C1使用PB6和PB7口,定时器TIM3使用PB0\PB1\PB4\PB5做4路PWM。但在使用的过程中,如果只初始化定时器就没有任何问题,但是一旦初始化I2C1,那么定时器的通道2(PB5)就不能产生PWM波,而是保持高电平。

客户查阅手册得知PB5的默认复用功能是I2C1的SMBA引脚,但是它的I2C1是初始化为I2C模式的,并不是初始化为SMBAS模式,而且同样的方式在F0上测试是可用的。它本来用的是标准库开发的,然后尝试使用STM32CubeMx进行硬件配置,使用HAL库新建工程,还是存在同样的问题。

就上面的问题,查看了其有关I2C1和TIM3d的pwm初始化的部分代码,并未发现不对的地方。首先重点怀疑I2C1的配置是否有误,担心客户在配置I2C1时配置成了SMBAS模式。借助于库代码,进一步跟踪下去查看底层的寄存器配置,相关寄存器操作也没有发现问题。

这里TIM3的PWM输出的几个管脚有涉及到重映射【REMAP】,从数据手册的管脚分配上来看,如果不开启I2C1的SMBA模式,不应该存在冲突问题。

STM32L053 comp2 比较电压无效问题

judy /

<strong>前言</strong>

某客户在调试 STM32L053 的比较器 1 时,使用内部 1.2V 的参考电压,没有问题.但当使用比较器 2 时,使用同样的设置,却发现比较电压无法调到 1.2V,只能设置到 0.6V 左右,到时是什么问题呢?

<strong>问题解决</strong>

<font color="blue">问题调试</font>

首先得到这个问题,我们先比较一下两种现象之间的设置问题,发现比较器 1 和比较器 2 的设置都是一样的.然后我们通过修改比较器 2 的内部比较电压查看现象,发现就算我们设置为二分之一的内部参考电压(二分之一的 1.2V),触发门限依旧是 0.6V.即使使用 cubeMx 重新生成代码,现象也没有得到解决.

<font color="blue">解决方法</font>

STM32单片机DfuSeCommand的使用

judy /

<strong>前言</strong>

STM32 提供了灵活的固件加载模式,其中大部分型号支持 DFU 加载。并且在电脑端,提供了配套的演示软件 DfuSe。

包含可视化版 DfuSeDemo.exe 和命令版 DfuSeCommand.exe。本文主要介绍 DfuSeCommand.exe 的使用。

<strong>前期步骤</strong>

1. 在电脑上安装 DfuSe(可通过“相关工具 & 链接”小节中,提供的链接获取安装包)。

2. STM32 硬件正确配置,使其能够满足进入 System Bootloader 模式。更多详细介绍请参考《AN2606 STM32 microcontroller system memory boot mode》。如果应用中,利用 IAP 实现 DFU 升级,同样可以利用 DfuSe 工具。

3. 利用 USB 数据线连接电脑和 STM32 的全速 USB 接口,等待驱动自动安装完成。如果驱动无法正确安装,可指定驱动路径,重新安装驱动。驱动位于 DfuSe 安装目录\ Bin\Driver。

4. 打开 DfuSe 安装目录下的 DfuSeCommand.exe。

【下载】STM32F0xx参考手册

judy /

本参考手册向应用程序开发人员提供关于如何使用 STM32F05xxx 微控制器的内存和外设所涉及的全部信息。

STM32F05xxx 是一个由不同存储容量、封装和外设配备的微控制器组成的微控制器家族。

<span class="download"><a href="http://mcu.eetrend.com/files/2017-09/wen_zhang_/100007942-26204-stm32f0…《STM32F0xx参考手册》</a></span>

STM32单片机硬件关键基础及注意事项

judy /

STM32简单介绍

一、背景

如果你正为项目的处理器而进行艰难的选择:一方面抱怨16位单片机有限的指令和性能,另一方面又抱怨32位处理器的高成本和高功耗,那么,基于 ARM Cortex-M3内核的STM32系列处理器也许能帮你解决这个问题。使你不必在性能、成本、功耗等因素之间做出取舍和折衷。即使你还没有看完STM32的产品手册,但对于这样一款融合ARM和ST技术的“新生儿”相信你和我一样不会担心这款针对16位MCU应用领域 的32位处理器的性能,但是从工程的角度来讲,除了芯片本身的性能和成本之外,你或许还会考虑到开发工具的成本和广泛度;存储器的种类、规模、性能和容 量;以及各种软件获得的难易,我相信你看完本专题会得到一个满意的答案。