HPM知识库 | [SPI] 单线双向半双工通信功能详解和实践

先楫半导体HPMicro 2026-06-25 08:30
HPM知识库 | [SPI] 单线双向半双工通信功能详解和实践图1
HPM知识库 | [SPI] 单线双向半双工通信功能详解和实践图2

HPM知识库

本栏目是先楫 MCU 开发的「一站式技术参考库」! 每周上新,为HPM开发者提供全维度的技术文档、问题解决方案、开发指南与实战教程,了解更多,请访问https://kb.hpmicro.com/


前言

参考示例

本文基于 先楫 HPM SDK 中的以下官方示例编写,可直接参考运行:

示例路径
说明
samples/drivers/spi/dma/master/
SPI Master 端,DMA 传输,mosi_bidir 使能
samples/drivers/spi/dma/slave/
SPI Slave 端,DMA 传输,mosi_bidir 使能

两个示例需配合使用(一块板子跑 Master,另一块跑 Slave),通过 mosi_bidir = true 开启单线双向半双工通信。


实现原理

硬件层面

SPI 控制器内部通过一个 mosi_bidir 控制位将 MOSI 引脚配置为双向 I/O:

传输模式

trans_mode 决定了一次 SPI 帧中读写阶段的顺序。SDK 支持的模式包括:

单线半双工模式下,以上模式均可使用。示例中改使用为 spi_trans_write_read / spi_trans_read_write,读写方向切换由硬件自动完成。


代码配置

关键参数:mosi_bidir

mosi_bidir 默认为 false(关闭),即标准 4 线全双工模式。要开启 MOSI 单线双向半双工,只需将其设为 true

// 默认为 false,需显式开启
format_config.common_config.mosi_bidir = true;

Master 端(先写后读)

// 文件:samples/drivers/spi/dma/master/src/spi.c

spi_master_get_default_format_config(&format_config);
format_config.common_config.data_len_in_bits = 8;      // 8 位数据
format_config.common_config.mosi_bidir = true;          // ★ MOSI 双向
format_config.common_config.data_merge = false;
format_config.common_config.mode = spi_master_mode;
format_config.common_config.cpol = spi_sclk_high_idle;
format_config.common_config.cpha = spi_sclk_sampling_even_clk_edges;
spi_format_init(TEST_SPI, &format_config);

spi_master_get_default_control_config(&control_config);
control_config.common_config.trans_mode = spi_trans_write_read;
// 先写数据 → 读取从机数据(读写之间硬件自动插入方向切换周期)
control_config.common_config.data_phase_fmt = spi_single_io_mode;
control_config.common_config.tx_dma_enable = true;
control_config.common_config.rx_dma_enable = true;

Slave 端(先读后写)

// 文件:samples/drivers/spi/dma/slave/src/spi.c

spi_slave_get_default_format_config(&format_config);
format_config.common_config.data_len_in_bits = 8;
format_config.common_config.mosi_bidir = true;          // ★ MOSI 双向(同样设置)
format_config.common_config.data_merge = false;
format_config.common_config.mode = spi_slave_mode;
format_config.common_config.cpol = spi_sclk_high_idle;
format_config.common_config.cpha = spi_sclk_sampling_even_clk_edges;
spi_format_init(TEST_SPI, &format_config);

spi_slave_get_default_control_config(&control_config);
control_config.common_config.trans_mode = spi_trans_read_write;
// 先接收数据 → 发送数据(读写之间硬件自动插入方向切换周期)
control_config.common_config.data_phase_fmt = spi_single_io_mode;
control_config.common_config.tx_dma_enable = true;
control_config.common_config.rx_dma_enable = true;

注意

  • Master 和 Slave 使用相反的传输模式(一个 Write→Read,另一个 Read→Write),才能完成双向数据交换。

实验验证

测试环境

项目
规格
开发板
HPM6200EVK/HPM6750EVK2,主从机角色随意
数据长度
128 字节
时钟极性
spi_sclk_high_idle
时钟相位
spi_sclk_sampling_even_clk_edges
Dummy 周期
无(硬件自动切换方向)
传输方式
DMA(RX + TX)

逻辑分析仪波形

HPM知识库 | [SPI] 单线双向半双工通信功能详解和实践图3

串口输出结果


适用场景 & 注意事项

适用场景

注意事项

注意点
说明
不能同时读写
半双工模式下,同一时刻数据只在一个方向传输
方向切换由硬件自动完成

主从模式互补
Master 和 Slave 的 trans_mode 必须互补(写→读 vs 读→写)

总结

先楫 SPI 的 mosi_bidir 单线双向半双工功能,可以在不牺牲 SPI 协议灵活性的前提下,将引脚数从 4 根减少到 3 根(SCLK + MOSI + CS),对于引脚资源紧张的应用非常有价值。

配合 DMA 搬运,即使是单线模式也能获得不错的整体吞吐率。只需一行配置 mosi_bidir = true,就能让 MOSI 同时扮演"发球员"和"接球员"的角色,实现高效、可靠的双向通信。


相关阅读推荐:

HPM知识库 | [SPI] 单线双向半双工通信功能详解和实践图4
HPM知识库 | [SPI] 单线双向半双工通信功能详解和实践图5
HPM知识库 | [SPI] 单线双向半双工通信功能详解和实践图6
HPM知识库 | [SPI] 单线双向半双工通信功能详解和实践图7

先楫半导体

“先楫半导体”(HPMicro)是一家致力于高性能嵌入式解决方案的半导体公司,产品覆盖微控制器及其配套的开发工具和生态系统。公司总部坐落于上海市浦东软件园区,并在天津、苏州和深圳均设立分公司,入选2025年福布斯亚洲Top100最具潜力的企业榜单。先楫半导体以产品质量为本,所有产品均通过严格的可靠性测试。目前已经量产八大系列高性能通用MCU产品,产品性能及通用性领先国际同类产品并通过AEC-Q100认证。公司已完成ISO9001质量管理和ISO 26262/IEC61508功能安全管理体系双认证,全力服务中国乃至全球的工业自动化、机器人、能源和汽车市场。更多信息,请访问 https://hpmicro.com/

声明:内容取材于网络,仅代表作者观点,如有内容违规问题,请联系处理。 
more
产业 | 国内脑机接口新秀·芯生视界/思昇科技完成种子轮融资!WISE完成D轮融资/Paradromics首例植入手术/品驰DBS覆盖至西藏
本周 AI 项目推荐:UXBench、MemLens、RoadmapBench…下一代模型,需要下一代 Benchmark
横扫八大数学竞赛:清华微软联合提出STAR-PólyaMath,Apex基准超GPT-5.5 13.5%
英飞凌卫星雷达ART架构,能去掉MCU核吗?
“中国芯”EDA专项技术创新奖候选连载 | τ-Aware_Signoff——韬定律落地的EDA基石
腾讯Marvis iOS版上线:手机秒变PC遥控器,跨端协同再进一步
打破SWE-bench唯分数论,首个独立测量harness的基准开源了
Fable 5被特朗普禁止幕后黑手曝光?Karpathy可能也用不了了
前沿,不止于想象丨Hardcore 100·前沿硬核创新榜启动征集
坐标系里的万亿生意 | 从WorldArena全球第一到BEV重构具身基建:跨维智能正在铸造这个赛道最硬的护城河
Copyright © 2025 成都区角科技有限公司
蜀ICP备2025143415号-1
  
川公网安备51015602001305号