硬汉嵌入式论坛

 找回密码
 立即注册
查看: 932|回复: 14
收起左侧

[其它] 把数据以 SSI 协议输出,占用少量 CPU 处理时间,有什么方法可以实现?

[复制链接]

3

主题

16

回帖

25

积分

新手上路

积分
25
发表于 2025-2-10 17:18:58 | 显示全部楼层 |阅读模式
SSI 时序图如附件图片所示。对于两线 SSI 协议,通过空闲一段时间区分每帧数据;对于三线 SSI 协议,通过把帧间隔标识线拉低区分每帧数据。

对于上面两种  SSI 协议,需要占用少量 CPU 资源,有什么方法通过配置实现或者其他方法协议功能?

采用两线 SSI 时序

采用两线 SSI 时序

采用三线 SSI 时序

采用三线 SSI 时序
回复

使用道具 举报

5

主题

162

回帖

177

积分

初级会员

积分
177
发表于 2025-2-10 22:53:25 | 显示全部楼层
SPI 模拟?或者dma模拟也可以
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2025-2-11 06:36:33 | 显示全部楼层
这个还是使用树莓派单片机那种PIO比较方便。
回复

使用道具 举报

3

主题

16

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2025-2-11 08:44:13 | 显示全部楼层
2859932063 发表于 2025-2-10 22:53
SPI 模拟?或者dma模拟也可以

SPI 模拟思路正在考虑,对于三线的时序感觉和 SIP 很像,dma 模拟不太懂思路是怎么弄?
回复

使用道具 举报

3

主题

16

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2025-2-11 08:46:18 | 显示全部楼层
eric2013 发表于 2025-2-11 06:36
这个还是使用树莓派单片机那种PIO比较方便。

主要还是使用 STM32 实现呢,现在思路暂时使用 SPI 模拟,看着 SPI 时序与 SSI 三线的时序很相似
回复

使用道具 举报

5

主题

162

回帖

177

积分

初级会员

积分
177
发表于 2025-2-11 09:17:25 | 显示全部楼层
剑心v 发表于 2025-2-11 08:46
主要还是使用 STM32 实现呢,现在思路暂时使用 SPI 模拟,看着 SPI 时序与 SSI 三线的时序很相似

用两路DMA通道+定时器操作GPIO就行了,比较简单
回复

使用道具 举报

3

主题

16

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2025-2-11 09:50:45 | 显示全部楼层
2859932063 发表于 2025-2-11 09:17
用两路DMA通道+定时器操作GPIO就行了,比较简单

可能需要 MCU 作为 SSI 协议的从模式,需要有一个 GPIO 检测主机时钟,一个 GPIO 用 DMA 通道做数据输出(这个我还需要再学习下,暂时不知道具体思路),用  GPIO 检测主机时钟需要怎么做呢?
回复

使用道具 举报

5

主题

162

回帖

177

积分

初级会员

积分
177
发表于 2025-2-11 10:43:32 | 显示全部楼层
剑心v 发表于 2025-2-11 09:50
可能需要 MCU 作为 SSI 协议的从模式,需要有一个 GPIO 检测主机时钟,一个 GPIO 用 DMA 通道做数据输出 ...

你是H7吗?从机的话,带DMAMUX很好搞的,外部事件连接到DMAMUX触发DMA然后再输出就好了。
回复

使用道具 举报

3

主题

16

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2025-2-11 10:54:37 | 显示全部楼层
2859932063 发表于 2025-2-11 10:43
你是H7吗?从机的话,带DMAMUX很好搞的,外部事件连接到DMAMUX触发DMA然后再输出就好了。

是 H7,好的,我先了解一下 DMAMUX 触发相关知识。
回复

使用道具 举报

6

主题

306

回帖

324

积分

高级会员

积分
324
发表于 2025-2-11 11:41:12 | 显示全部楼层
STM32硬件本身就支持啊
除了低端的,只能8位16位或者32位,
稍高端的都可以随便定义位数啊
然后CS后的持续时间也可以定义0-15个时钟
至于硬件CS引脚可要,也可不要
DMA+SPI,DMA可以定时触发自动发送,几乎不耗CPU。

企业微信截图_20250211113939.png
回复

使用道具 举报

5

主题

162

回帖

177

积分

初级会员

积分
177
发表于 2025-2-11 11:51:56 | 显示全部楼层
fxyc87 发表于 2025-2-11 11:41
STM32硬件本身就支持啊
除了低端的,只能8位16位或者32位,
稍高端的都可以随便定义位数啊

这个支持从机吗?
回复

使用道具 举报

6

主题

306

回帖

324

积分

高级会员

积分
324
发表于 2025-2-11 12:20:22 | 显示全部楼层
2859932063 发表于 2025-2-11 11:51
这个支持从机吗?

从机CS不太好处理,估计需要搭个散的分立电路来生成CS信号
回复

使用道具 举报

3

主题

16

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2025-2-11 13:45:37 | 显示全部楼层
fxyc87 发表于 2025-2-11 11:41
STM32硬件本身就支持啊
除了低端的,只能8位16位或者32位,
稍高端的都可以随便定义位数啊

https://cloud.tencent.com/develo ... from_scene=register
我看上面这个问答应该就是这样配置的,但是会有一个 "Monoflop时间",想尝试基于 H7 的硬件资源有没有更好的实现方案,还是只能按照回答的思路来做呢?
回复

使用道具 举报

3

主题

16

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2025-2-11 14:34:38 | 显示全部楼层
fxyc87 发表于 2025-2-11 11:41
STM32硬件本身就支持啊
除了低端的,只能8位16位或者32位,
稍高端的都可以随便定义位数啊

https://cloud.tencent.com/developer/ask/sof/108082200
我看这个回答像这样配置得到的,但是会有个 "Monoflop时间“ 问题(从机在最后一个时钟上升沿结束时,SPI从机无法判断这个额外的时钟脉冲,因此它开始输出下一个数据字节的第一个位,而SSI主机又无法识别它)导致数据出现移位。
想考虑基于 H7 的硬件资源,除了上面链接回答所说的方法,还有其他思路我可以尝试一下吗?
回复

使用道具 举报

10

主题

21

回帖

51

积分

初级会员

积分
51
发表于 2025-2-12 22:54:35 | 显示全部楼层
关注,楼主做好了,分享一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-14 06:37 , Processed in 0.049065 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表