
前言 应用工程师经常面临的问题是,微控制器在功能和性能上满足应用的所有其它要求,只是串行通信外设数量有限。有时,他们只能替换为具有充分数量通信外设的高级微控制器以规避此问题。这种移植可带来额外的 (经常是用不到的)性能和功能,在多数情况下应用都不需要或用不到,但却增加了成本和 PCB 复杂度。 经常发生的情况是当并不是每个通道都需要全部 (或特定)功能时,通信流及其控制可极大简化 (例如仅在特定的模式或时隙需要通信、通信速度可以更低、并不是所有信号都严格需要正确的时间、可接受简化的协议或流程)。在这些特定情况下,如果有方法能用当前硬件补充缺失的信道,避免移植,则用户可真正受益。 另一方面,要在复用通道上与所有原始硬件特性完全兼容,代码和性能方面的代价太大,也很难实现。通常,会倾向于放弃一些特定需要,以达到简化复用外设通道概念的目的。这里,关键一点是识别那些应用中不需要的、可使用低工作量、降低性能的方法变更的通道。 本应用笔记提供了所述问题的基本概述,可帮助应用工程师在实现缺失的通信通道时,发现可能的替代方法。因为所讨论的外设存在于所有该类产品,所以它适用于所有 STM32 微控制器。 在下面的参考文档中有更多的信息和样例,说明了实际的用例和解决方案: • TN0072,软件工具链和 STM32 特性; • UM0892, STM32 ST-LINK 工具软件说明; • AN4457, STM32F4 全双工 UART 模拟。 最后引用的文档与相同主题的其它应用笔记共同开发。 1硬件方法 如果不能接受增加原始硬件外设 (例如,增加专用通信协处理器单元等外部组件),那么可使用下述基本方法补偿外设数量的限制: 1. 使用内部专用外设实例的重映射选项,更改不同端口处的输入和输出,以此建立微控制器与不同通道的临时连接 (用户可在数据手册的引脚说明中,针对每种产品及其实现的外设找到复用功能能力的信息)。 2. 使用复用逻辑,将多个通信通道复用为一个通信端口。 3. 使用 SWO 特性。 前两种方法提供了除专用时隙之外所选通道的服务,仅当它发生时不严格要求复用通道的同时操作和永久监测才可使用,例如: •服务通道; •偶尔与远程设备通信; •监测数值变化缓慢的传感器; •用于周期性备份的通道。 当从设备的活动等待主请求,或与从设备的通信可丢失,当主设备重新连至服务通道时可容易地重新同步时 (监听并通话),这些方法适合于主设备通信。当从设备和主设备之间提供额外控制信号来告知从设备连接建立时 (例如,当从设备能 / 不能在通道工作时的片选或通道就绪 / 繁忙信号),它也可用于从设备侧。 总之,当复用功能重新映射或复用到另一通道时,用户应注意与外设实例总线信号相关的GPIO 处于非活动状态。正确设置可确保空闲条件的模拟,防止阻塞于当前未选择的或未用于通信的通道。可通过正确配置 GPIO 端口寄存器达到这一目的,增加外部组件 (上拉 / 下拉电阻)也有部分作用。请注意,当从端口移除 (重映射)复用功能时, GPIO 逻辑一般会覆盖相关引脚的控制,用户必须防止这些临时冻结通道上的任何总线虚假状态检测。 对于复用情况,如可用于产品,用户可使用路由接口专用组处的 I/O 开关专用控制。用户必须确保单个组内的适当开关组合 (配对)及时关闭,以令信号通过需要的路径。用户必须为这种开关指定额外的 IO,它们不能用于其它用途,而且还会有额外的 PCB 走线。 该原理示于图 1 和图 2 中。 ![]() 在调试期间,经常需要额外的通信端口,以传递应用专有的诊断信息和实时运行期间的系统监测。使用专用的指令跟踪宏小区 (ITM)和串行线浏览器 (SWV)接口期间,用户可在SWO 引脚设置虚拟 COM 通信端口。 ITM 是应用驱动的跟踪源,支持 printf 类的调试以跟踪操作系统 (OS) 和应用程序事件,并通过 STLink 工具发布诊断系统信息。一些最新产品有 ITM 模块,可节省标准的通信外设用于应用目的。一些 IDE 和 ST HAL 固件支持它。要在接口发送一字节,在 fputc() 内调用ITM_SendChar() 函数就足够了,通过分配 TRACE 引脚为异步跟踪模式可配置调试模块。 2 软件方法 2.1 兼容因子 当一个开发者开始考虑通过使用 GPIO 软件控制,模拟外设硬件接口功能将其替代时,他应该仔细考虑兼容因子及真正需要的等级。 2.1.1 功能性 (与时序无关) 这通常是由配置和状态寄存器控制的 (例如数据或协议格式、通信速率、奇偶校验、相关信号控制、 CRC 计算等)。在这里,通用性是一个关键问题。当需求仅为匹配应用需要时(固定时钟相位或极性、位的顺序和数量、简化流、无奇偶校验、不支持 CRC),开发可相当程度地简化。 当目标是用通用方法使用固件,尝试达到更大的灵活性和能力时,开发复杂度会极大增加,包括测试和验证阶段的要求。基本上说,在初始计划阶段,画一张带有所有状态转移及其条件的完整状态图是一个好的开始,因为它能帮助理解所有需求以及需要模拟的复杂度。 2.1.2 时序 这里,必须考虑信号的正确形状 (边沿、占空比)、时钟和数据访问间的时序 (例如数据建立或保持时间)以及正确的信号采样 (位置和采样数)。这些需求通常受限于缺少性能能力,以及当由软件实现时的任何快速 IO 控制的限制。 一些内核提供专用的内部总线用于 IO 控制,以执行非常快速的 IO 访问和驱动能力 (例如,Cortex®-M0+ 内核的专用 IOPORT)。 当由硬件做输出控制时 (例如输出比较特性),当提供 GPIO 信号时可取得很好的结果。用户可使用广泛的 STM32 架构能力来内部同步外设,但在此情况下,必须由中断服务内部的软件来监控模拟控制流逻辑,尤其是对于所有的负面影响和确定的时序限制。 完整版请查看:附件 |
DM00160482_ZHV1.pdf
下载377.09 KB, 下载次数: 0
STM32 GUI LTDC 最大像素时钟评估方法
【2025·STM32峰会】GUI解决方案实训分享1-对LVGL咖啡机例程的牛刀小试以及问题排查
OpenBLT移植到STM32F405开发板
为什么要先开启STM32外设时钟?
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法
【经验分享】STM32实例-RTC实时时钟实验④-获取RTC时间函数与中断服务函数
STM32 以太网 MAC Loopback 的实现
STM32功能安全设计包,助力产品功能安全认证
基于STM32启动过程startup_xxxx.s文件经验分享
HRTIM 指南