打印

求高手评估STM32项目可行性

[复制链接]
4336|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
auzxj|  楼主 | 2009-7-30 10:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 auzxj 于 2009-7-30 11:01 编辑

选用芯片:STM32F103RBT6
所用资源:ADC,USB,DMA
项目描述:
如图,OS为被测信号,频率为2M
RS为2M的触发脉冲,低电平触发
我打算用ADC中的交替触发模式,RS接到外部中断上,ADC1和ADC2交替采样,然后用DMA传送到指定地址,USB上传数据
问题:
1、我在看资料的时候,上面说只有ADC1能触发DMA,那么我的ADC2采集的数据怎么办
2、资料中说STM32交替模式的采样率是2M,我的频率接近她的极限,是否会有问题
谢谢
PS:这是TCD1208的时序
沙发
香水城| | 2009-7-30 22:28 | 只看该作者
使用STM32的交替模式,可以在单一通道实现ADC的2M采样率,这是通过ADC1触发DMA,DMA传送会同时读出ADC1和ADC2的数据并送到SRAM中。

但是,你的方案有2个问题:
1)RS触发脉冲是做什么用的?如果是用它触发AD转换,则有问题;因为上述交替模式的ADC转换是在STM32内部自动完成,只需触发一次启动这个过程即可。如果要使用外部触发,则这么高的频率会有问题。

2)关键的是,如果要使用USB,则CPU主频只能是48MHz或72MHz,但在这2种频率下,都不能达到ADC的最高速度。ADC的最高速度是在ADC时钟为14MHz时达到,14MHz也是最大的ADC时钟允许数值。CPU主频为48MHz或72MHz时,单个ADC的转换速度只能达到855kHz,双ADC在交替模式下只能达到1709kHz,达不到你的要求。

所以除非你在ADC采样时关闭USB,USB传输时关闭ADC,否则无法实现要求的性能。

使用特权

评论回复
板凳
auzxj|  楼主 | 2009-7-31 11:08 | 只看该作者
2# 香水城
感谢香主的回复

1、RS是外部中断触发,我说的“交替触发模式”指的是“Alternate trigger mode”
This mode can be started only on an injected channel group. The source of external trigger comes from the injected group mux of ADC1.
● When the 1st trigger occurs, all injected group channels in ADC1 are converted.
● When the 2nd trigger arrives, all injected group channels in ADC2 are converted
● and so on.
参见RM0008d的P214中的11.9.5
您说的可能是“Fast interleaved mode”或“Slow interleaved mode”
2、您说的ADC和USB时钟冲突的问题可以按照您说的方法解决,用ADC的时候关闭USB,用USB的时候关闭ADC,我只需要在ADC采集的时候满足2M的速率就可以了,采完了慢慢上传,传完了再采and so on。。。。

我记得以前在网上看到过有人用交叉采样做过示波器,采样率达到2M,最近google了半天没找到,不知道香主有没有这样的案例,要是跟我应用的一样的案例更好,O(∩_∩)O哈哈~

使用特权

评论回复
地板
香水城| | 2009-7-31 15:07 | 只看该作者
1)是的,我理解为 Fast interleaved mode。你可以试试 Alternate trigger mode,应该可以,但要保证任何时候不能超过2M的速率。

2)除非上位机端可以控制,在数据采样时没有USB的通信,如果上位机尝试与设备通信时,设备不能相应,则USB连接将被中断,这样你每次要传送数据时,都需要重新枚举。

使用特权

评论回复
5
511| | 2009-8-1 20:53 | 只看该作者
关注,
新版第一贴

使用特权

评论回复
6
有风| | 2009-8-1 20:55 | 只看该作者
好像是咯,旧版上不去了....

使用特权

评论回复
7
祖平| | 2009-8-1 20:57 | 只看该作者
旧版刚停,看着看着就没服务器了...

使用特权

评论回复
8
auzxj|  楼主 | 2009-8-1 21:03 | 只看该作者
这是第一帖?O(∩_∩)O哈哈~

使用特权

评论回复
9
香水城| | 2009-8-1 22:41 | 只看该作者
刚才回的帖,新旧版转换时候不见了,这个二姨总是丢三落四的,嗨~~~~~~~~~

如果选用大容量的STM32,它有3个ADC模块,楼主可以考虑通过CPLD(既然有CPLD)把触发信号分为两路,一路按照前面说的方法触发ADC1和ADC2,另一路单独触发ADC3,采样结束后再通过软件重新排列结果。这样应该可以实现目标。

如果一定要超频才能实现,建议楼主还是换方案比较好。

使用特权

评论回复
10
auzxj|  楼主 | 2009-8-1 23:03 | 只看该作者
10# 香水城
您说的“大容量的STM32”发案看起来不错,我再回去论证一下,您能否推荐一款比较通用的大容量STM32

使用特权

评论回复
11
香水城| | 2009-8-1 23:08 | 只看该作者
哈哈,如果你不在乎成本,当然是最大配置的型号了:STM32F103ZET6或STM32F103ZET7

STM32F103ZET6与STM32F103ZET7功能一样,区别在于STM32F103ZET6的工作温度范围是-40~+85摄氏度,而STM32F103ZET7是-40~+105摄氏度。

使用特权

评论回复
12
auzxj|  楼主 | 2009-8-1 23:08 | 只看该作者
这种方法可以实现采样率3M的示波器啊,哈哈,要是我做成了发个帖做个总结

二姨家的搬家公司让人不放心。。。

使用特权

评论回复
13
auzxj|  楼主 | 2009-8-1 23:11 | 只看该作者
12# 香水城
成本不太在乎,那我看看ZET6,听说107都出来了,这更新太快了,103我还没搞明白呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

629

主题

1625

帖子

1

粉丝