硬汉嵌入式论坛

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

[总线矩阵] 同一总线上的外设可以同时通信么?

[复制链接]

14

主题

99

回帖

141

积分

初级会员

积分
141
发表于 2020-4-30 21:42:34 | 显示全部楼层 |阅读模式
比如APB1上的SPI,IIC,ADC或者串口这些,可以同时启动DMA传输么?当数据量一直采集,假如ADC,是不是别的就不能正常工作了呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106422
QQ
发表于 2020-5-1 07:50:35 | 显示全部楼层
没问题,可以同时开启,系统会帮你做好仲裁。DMA是可以配置优先级的,配置优先级的意义就在这里了。

像IIC, ADC,串口占用不了多少带宽。
回复

使用道具 举报

14

主题

99

回帖

141

积分

初级会员

积分
141
 楼主| 发表于 2020-5-2 05:35:54 | 显示全部楼层
eric2013 发表于 2020-5-1 07:50
没问题,可以同时开启,系统会帮你做好仲裁。DMA是可以配置优先级的,配置优先级的意义就在这里了。

像I ...

硬汉哥,两个外设的数据是同时到达的哦,比如2个ADC,数据同一时刻过来,都走API1也不会影响么?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106422
QQ
发表于 2020-5-2 09:44:55 | 显示全部楼层
LR215 发表于 2020-5-2 05:35
硬汉哥,两个外设的数据是同时到达的哦,比如2个ADC,数据同一时刻过来,都走API1也不会影响么?

有影响啊,如果CPU访问他们是同一个总线通道是有的。

但是像ADC这种满速设备,影响可以忽略。

像H7这种更加强大的总线矩阵,更是影响甚微。不同总线下的ADC1和ADC3,几乎没有影响。
回复

使用道具 举报

14

主题

99

回帖

141

积分

初级会员

积分
141
 楼主| 发表于 2020-5-2 16:18:11 | 显示全部楼层
eric2013 发表于 2020-5-2 09:44
有影响啊,如果CPU访问他们是同一个总线通道是有的。

但是像ADC这种满速设备,影响可以忽略。

我现在是2路SPI通信,当单独一路数据不会丢失,但是同时开启2路SPI就发现数据有丢包的现象了。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106422
QQ
发表于 2020-5-2 17:22:20 | 显示全部楼层
LR215 发表于 2020-5-2 16:18
我现在是2路SPI通信,当单独一路数据不会丢失,但是同时开启2路SPI就发现数据有丢包的现象了。

这个锅,H7不背。

检查你的SPI参数等设置问题。。。
回复

使用道具 举报

14

主题

99

回帖

141

积分

初级会员

积分
141
 楼主| 发表于 2020-5-2 17:52:46 | 显示全部楼层
eric2013 发表于 2020-5-2 17:22
这个锅,H7不背。

检查你的SPI参数等设置问题。。。

哈哈,谢谢硬汉哥,当发现问题时,我还是先不怀疑硬件问题,说明自己学艺不精,想在这里看看有没有解决办法或者哪位高手遇到类似问题。
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2021-3-5 10:58:26 | 显示全部楼层
完全同步时,不同的DMA通道还是会抢总线的。我做WS2812彩灯,用DMA搬运一路数据没有问题,同时搬运2路就发现了抢总线的的现象,示波器看到数据堵塞了一小段时间,WS2812的最小时间片是0.4us,丁点延后都会数据错乱
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106422
QQ
发表于 2021-3-5 11:11:14 | 显示全部楼层
134097970 发表于 2021-3-5 10:58
完全同步时,不同的DMA通道还是会抢总线的。我做WS2812彩灯,用DMA搬运一路数据没有问题,同时搬运2路就发 ...

这个是因为你用的DMA1或者DMA2,他们只有一个,这个DMA下的通道之间有个优先级配置。
回复

使用道具 举报

8

主题

135

回帖

159

积分

初级会员

积分
159
发表于 2021-3-5 17:51:10 | 显示全部楼层
eric2013 发表于 2021-3-5 11:11
这个是因为你用的DMA1或者DMA2,他们只有一个,这个DMA下的通道之间有个优先级配置。

DMA传输时很快的,对于低速设备基本无影响。WS2812看能不能用SPI去驱动,选个合适的分频系数。用4位数据传输一位WS2812的数据。
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2021-3-18 16:20:41 | 显示全部楼层
tcs_stm32 发表于 2021-3-5 17:51
DMA传输时很快的,对于低速设备基本无影响。WS2812看能不能用SPI去驱动,选个合适的分频系数。用4位数据 ...

SPI驱动一路WS2812没问题,同时两路还是不行,而且中断还对DMA传输下的一大串WS2812数据有干扰,我当时将中断改成读取,AHB总线的裁决器还会将总线的带宽平分一半给CM3内核
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2021-3-18 16:31:03 | 显示全部楼层
eric2013 发表于 2021-3-5 11:11
这个是因为你用的DMA1或者DMA2,他们只有一个,这个DMA下的通道之间有个优先级配置。

也可能吧,当时也没有继续试下使用两个DMA,但是CM3 DMA1 DMA2 还是会抢AHB总线带宽的,H7这种就有了3个独立总线矩阵。时序并发要求极其高的,可以用FPGA,这个东西是彻底的硬件并发
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 20:22 , Processed in 0.202293 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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