硬汉嵌入式论坛

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

[技术讨论] 需要做个调试工具,SPI数据转UART至电脑,寻求最优解?

[复制链接]

219

主题

1110

回帖

1777

积分

至尊会员

More we do, more we can do.

积分
1777
发表于 2020-5-19 22:47:20 | 显示全部楼层 |阅读模式
想要将持续10.3KB/s的SPI数据转发到电脑,然后分析有没有异常数据包。手上有块L011的Nucleo,最高速度32MHz,打算用来实现SPI转UART至电脑,UART波特率230.4Kbps应该足够。SPI数据是间歇的,约200字节/包,速度2.048Mbps,因而短时数据流比较大。



目前数据转发的逻辑还没找到最优方法,简单地就是接收DMA环形缓冲,主循环不断发送至UART。希望大家不吝赐教?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2020-5-19 23:09:07 | 显示全部楼层
SPI使用DMA双缓冲(如果DMA硬件支持的话)或者DMA半传完完整实现类双缓冲。

然后串口就整成串口FIFO即可。
每次DMA接收完一轮往串口FIFO里面存入一次。
回复

使用道具 举报

0

主题

67

回帖

67

积分

初级会员

积分
67
发表于 2020-5-20 15:13:22 | 显示全部楼层
使用USB转串口方案,速度要快得多。SPI采用版主所讲配置即可
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2020-5-20 15:18:09 | 显示全部楼层
zhousun 发表于 2020-5-20 15:13
使用USB转串口方案,速度要快得多。SPI采用版主所讲配置即可

如果USB2.0全速,抛去额外开销,其实还没有串口流畅。

而且他用的L011跑USB协议栈还挺有压力的。
回复

使用道具 举报

219

主题

1110

回帖

1777

积分

至尊会员

More we do, more we can do.

积分
1777
 楼主| 发表于 2020-5-23 08:03:13 | 显示全部楼层
目前采用DMA半满/全满中断触发USART的DMA发送,使用Cube生成的,没几行代码,串口波特率230.4K,功能和稳定性已经达成。
定位到了SPI主机的问题,每1千包有个别异常帧。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2020-5-23 08:53:29 | 显示全部楼层
emwin 发表于 2020-5-23 08:03
目前采用DMA半满/全满中断触发USART的DMA发送,使用Cube生成的,没几行代码,串口波特率230.4K,功能和稳定 ...

那现在就是SPI和串口都用的DMA? 也挺方便。

之前是怕串口和SPI都用DMA不好协调快慢,一端用,另一端用方便些。
回复

使用道具 举报

356

主题

2180

回帖

3253

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3253
发表于 2020-5-25 16:44:59 | 显示全部楼层
我在淘宝看到,有专门的芯片,可以SPI扩展为n个标准串口。这个芯片还自带缓存。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-17 20:54 , Processed in 0.039758 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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