
前言# Z- [: a! y8 D, T 应用工程师经常面临的问题是,微控制器在功能和性能上满足应用的所有其它要求,只是串行通信外设数量有限。有时,他们只能替换为具有充分数量通信外设的高级微控制器以规避此问题。这种移植可带来额外的 (经常是用不到的)性能和功能,在多数情况下应用都不需要或用不到,但却增加了成本和 PCB 复杂度。 经常发生的情况是当并不是每个通道都需要全部 (或特定)功能时,通信流及其控制可极大简化 (例如仅在特定的模式或时隙需要通信、通信速度可以更低、并不是所有信号都严格需要正确的时间、可接受简化的协议或流程)。在这些特定情况下,如果有方法能用当前硬件补充缺失的信道,避免移植,则用户可真正受益。" m! G, S& J* A! j* \9 j) b- v 另一方面,要在复用通道上与所有原始硬件特性完全兼容,代码和性能方面的代价太大,也很难实现。通常,会倾向于放弃一些特定需要,以达到简化复用外设通道概念的目的。这里,关键一点是识别那些应用中不需要的、可使用低工作量、降低性能的方法变更的通道。 本应用笔记提供了所述问题的基本概述,可帮助应用工程师在实现缺失的通信通道时,发现可能的替代方法。因为所讨论的外设存在于所有该类产品,所以它适用于所有 STM32 微控制器。 在下面的参考文档中有更多的信息和样例,说明了实际的用例和解决方案: • TN0072,软件工具链和 STM32 特性;. ], D, H0 n* D: s; Z2 w" O5 I • UM0892, STM32 ST-LINK 工具软件说明;0 E2 @" J; w5 d, f" C9 \2 h • AN4457, STM32F4 全双工 UART 模拟。" b9 V$ a' c2 Y9 g 8 i. P r+ ]' D2 c5 [- P! ? 1 硬件方法0 w0 r+ |! \9 _9 u1 h 如果不能接受增加原始硬件外设 (例如,增加专用通信协处理器单元等外部组件),那么可使用下述基本方法补偿外设数量的限制:3 a$ c7 \) [. }7 c 1. 使用内部专用外设实例的重映射选项,更改不同端口处的输入和输出,以此建立微控制器与不同通道的临时连接 (用户可在数据手册的引脚说明中,针对每种产品及其实现的外设找到复用功能能力的信息)。 2. 使用复用逻辑,将多个通信通道复用为一个通信端口。 3. 使用 SWO 特性。0 Z; B" P5 ]4 B( u0 J9 A# w: a 前两种方法提供了除专用时隙之外所选通道的服务,仅当它发生时不严格要求复用通道的同时操作和永久监测才可使用,例如: • 服务通道; • 偶尔与远程设备通信; • 监测数值变化缓慢的传感器;0 \. M' U' A7 v • 用于周期性备份的通道。7 ?4 |, }. g* X# ` 当从设备的活动等待主请求,或与从设备的通信可丢失,当主设备重新连至服务通道时可容易地重新同步时 (监听并通话),这些方法适合于主设备通信。当从设备和主设备之间提供额外控制信号来告知从设备连接建立时 (例如,当从设备能 / 不能在通道工作时的片选或通道就绪 / 繁忙信号),它也可用于从设备侧。 总之,当复用功能重新映射或复用到另一通道时,用户应注意与外设实例总线信号相关的GPIO 处于非活动状态。正确设置可确保空闲条件的模拟,防止阻塞于当前未选择的或未用于通信的通道。可通过正确配置 GPIO 端口寄存器达到这一目的,增加外部组件 (上拉 / 下拉电阻)也有部分作用。请注意,当从端口移除 (重映射)复用功能时, GPIO 逻辑一般会覆盖相关引脚的控制,用户必须防止这些临时冻结通道上的任何总线虚假状态检测。 对于复用情况,如可用于产品,用户可使用路由接口专用组处的 I/O 开关专用控制。用户必须确保单个组内的适当开关组合 (配对)及时关闭,以令信号通过需要的路径。用户必须为这种开关指定额外的 IO,它们不能用于其它用途,而且还会有额外的 PCB 走线。 * ~6 ]% L* h* K ![]() : j6 |$ c4 `$ \8 H$ u; [; z8 a* L 在调试期间,经常需要额外的通信端口,以传递应用专有的诊断信息和实时运行期间的系统监测。使用专用的指令跟踪宏小区 (ITM)和串行线浏览器 (SWV)接口期间,用户可在SWO 引脚设置虚拟 COM 通信端口。0 z. D3 ?: C! s- I* K/ t4 |' v; t 4 T" j1 |' Y( t0 } ITM 是应用驱动的跟踪源,支持 printf 类的调试以跟踪操作系统 (OS) 和应用程序事件,并通过 STLink 工具发布诊断系统信息。一些最新产品有 ITM 模块,可节省标准的通信外设用于应用目的。一些 IDE 和 ST HAL 固件支持它。要在接口发送一字节,在 fputc() 内调用ITM_SendChar() 函数就足够了,通过分配 TRACE 引脚为异步跟踪模式可配置调试模块。% P: P+ b$ z, M& @1 q " s6 D* o% `- I) e- [& p 完整版请查看:附件9 U1 C. L! B) V7 O 1 v% B$ z& t3 r , k0 j2 z4 W4 V, T3 ` 7 I. Y7 F {0 G! O5 b% T |
NUCLEO-H723ZG开发板试用 ——串口点灯测试
OpenBLT移植到STM32F103战舰开发板上适用于所有STM32F103系列的Bootloader
MultiButton移植到STM32F103战舰开发板
汇编浮点库qfplib移植STM32F769I-DISCO开发板与硬件浮点运算性能测试对比
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法
S2LP 的 sniff 模式如何同时满足通讯和低功耗要求
双证齐发!移远通信通过ISO 26262功能安全流程认证及产品认证
意法半导体 STHV200超声波 IC单片简化设计
了解NFC技术优势与应用场景
基于STM32软件实现底层函数经验分享—IIC通信