发新帖本帖赏金 20.00元(功能说明)我要提问
12
返回列表
打印
[数据转换器-信号链]

应坛友求助,开贴讨论STM32F103高速控制ADS8363的题目。

[复制链接]
楼主: 玄德
手机看帖
扫描二维码
随时随地手机跟帖
21
非常同意楼上的方法. 补充一点思路
CLOCK 可以用系统时钟输出功能引脚, 把主频分频后输出.
RD/CONVST脉冲可以用 PWM 输出.
SPI 是否可以工作在从模式, 用 BUSY 或者 RD 作为 CS 的驱动信号

使用特权

评论回复
22
玄德|  楼主 | 2017-11-2 21:26 | 只看该作者
本帖最后由 玄德 于 2017-11-2 21:35 编辑
airwill 发表于 2017-11-2 20:43
非常同意楼上的方法. 补充一点思路
CLOCK 可以用系统时钟输出功能引脚, 把主频分频后输出.
RD/CONVST脉冲可 ...


SPI工作在从机模式,这个思路真的很妙。
我没有想到。

20层的方案需要用两路DMA,
其中一路是为了启动SPI工作,
因为SPI只有向外发送数据,才会产生SCK时钟,同时接收数据。
启动SPI,真正目的是启动“接收”时序。
如果用从机模式,外界输入SCK时钟,SPI以为主机在召唤,所以自然会启动接收;
这样可以少用一路DMA,可实现性就更大,可以确定能够实现。

而AD那边也会以为主机下命令了,所以会输出数据。



使用特权

评论回复
23
玄德|  楼主 | 2017-11-2 21:34 | 只看该作者
本帖最后由 玄德 于 2017-11-2 21:58 编辑

CPU的SPI做从机,有点细节要明确:
SPI是由CS启动,还是由SCK启动?

如果是前者,就要把PWM波连接SPI的CS引脚,
如果是后者,就不需要动用CS脚了。

但,如果是前者,又会引入一个麻烦,因为SPI的CS信号、SCK信号是有相位要求的,
CS可以用PWM实现,那么如何产生有相位要求的SCK信号?大概又要往定时器的主、从、级联方式上考虑。
这就是麻烦的地方。如果用DMA启动SPI,就不存在这个麻烦。


使用特权

评论回复
24
玄德|  楼主 | 2017-11-2 21:57 | 只看该作者
本帖最后由 玄德 于 2017-11-2 22:04 编辑

也算讨论了一些内容,不知道你有什么看法?    @qmmdzd

前面多次用到DMA,设置比较费力。
可以再把难度降低一点:

仍然用IO口模拟CONVST/RD信号,制造一个脉冲,随后保持低电平不变,
然后软件启动三次SPI,这样就产生24个SCK脉冲,该脉冲作为AD的CLOCK,
同时会收到三次数据,高、中、低三个字节,属于一个采样点,
用SPI中断处理这些数据,甚至不用中断,标志查询也行,
随后再回到上面,继续用IO模拟下一个CONVST/RD脉冲。
如此往复、循环。

这样实现就比较容易一些,而且速度也“相对”比较高。
这个思路的核心是:给AD提供多余的CLOCK,这不会影响AD的正常工作;而且,脉冲群之间有延时,也不会影响它工作。想通这两点,对设计会很有帮助。

建议你试试。




使用特权

评论回复

打赏榜单

qmmdzd 打赏了 20.00 元 2017-11-03
理由:感谢开贴相助

25
背包1234| | 2017-11-2 22:14 | 只看该作者
多谢分享

使用特权

评论回复
26
airwill| | 2017-11-3 06:53 | 只看该作者
本帖最后由 airwill 于 2017-11-3 06:55 编辑

SPI 是 CS 触发,  SCLK 驱动移位的,  可以用 RD, 或者 反相 BUSY 信号做 SPI 的 CS 信号

我不赞成软件沦陷 SPI 收发标志, 你的留一点 CPU 时间给主循环呀

使用特权

评论回复
27
qmmdzd| | 2017-11-3 08:41 | 只看该作者
玄德 发表于 2017-11-2 21:57
也算讨论了一些内容,不知道你有什么看法?    @qmmdzd

前面多次用到DMA,设置比较费力。

玄德的思路给的很清晰 我能看明白了 我现在正着手准备试下这几种方案 看看哪种更快 不过我对定时器这块理解的不够深 可能需要一段时间

使用特权

评论回复
28
pmp| | 2017-11-3 22:39 | 只看该作者
玄德 发表于 2017-11-1 22:19
坛友的需求基本是这样:
STM32F103控制ADS8363,高速控制AD转换和数据读取,速度尽可能高;(所以,IO口模 ...

DSP+FPGA处理方案。

使用特权

评论回复
29
pmp| | 2017-11-3 22:44 | 只看该作者
玄德 发表于 2017-11-1 22:19
坛友的需求基本是这样:
STM32F103控制ADS8363,高速控制AD转换和数据读取,速度尽可能高;(所以,IO口模 ...

以前使用FPGA做两路采集和一路输出没有压力。

使用特权

评论回复
30
玄德|  楼主 | 2017-11-4 00:05 | 只看该作者
pmp 发表于 2017-11-3 22:44
以前使用FPGA做两路采集和一路输出没有压力。


讨论的前提就是STM32F103。

使用特权

评论回复
31
qmmdzd| | 2017-11-4 09:18 | 只看该作者
各位坛友 如果有相关的程序麻烦大家传一份 我水平有限参考看下 STM32控制或者FPGA控制ADS8363/7263/7223都行 邮箱957673760@qq.com  再次感谢玄德 airwill  感谢大家相助

使用特权

评论回复
32
qmmdzd| | 2017-11-5 09:56 | 只看该作者
玄德 发表于 2017-11-2 21:57
也算讨论了一些内容,不知道你有什么看法?    @qmmdzd

前面多次用到DMA,设置比较费力。

这里有个问题想问下 如果先采集把数据存储在一个数组中 等全部采集完再处理可以吗?因为整个信号周期几个ms,采集的点数也是在STM32存储的能力范围内 这样是不是能够不用中断处理数据了?

使用特权

评论回复
33
玄德|  楼主 | 2017-11-5 15:27 | 只看该作者
qmmdzd 发表于 2017-11-5 09:56
这里有个问题想问下 如果先采集把数据存储在一个数组中 等全部采集完再处理可以吗?因为整个信号周期几个 ...


1、当然可以。

2、这和用不用中断有关系吗?


使用特权

评论回复
34
eefas| | 2017-11-6 22:46 | 只看该作者
  楼主厉害

使用特权

评论回复
35
qmmdzd| | 2017-11-13 09:12 | 只看该作者
请教玄德  如果两路数据输出 也就是SDOA和SDOB同时输出 而SPI只有一个MISO引脚 这该如何连?还是只能是选择数据都从SDOA输出 只是有先后顺序这样配置

使用特权

评论回复
36
qmmdzd| | 2017-11-13 10:42 | 只看该作者
file:///C:\Users\zhangdi\AppData\Roaming\Tencent\Users\957673760\QQ\WinTemp\RichOle\2D$1)@UQRDRZ1`LV2LJW1}T.png

2D$1)@UQRDRZ1`LV2LJW1}T.png (51.45 KB )

还有看这个时序发送3次8位数 第一个8位数前两个发00对吗

还有看这个时序发送3次8位数  第一个8位数前两个发00对吗

使用特权

评论回复
37
玄德|  楼主 | 2017-11-13 17:44 | 只看该作者
qmmdzd 发表于 2017-11-13 09:12
请教玄德  如果两路数据输出 也就是SDOA和SDOB同时输出 而SPI只有一个MISO引脚 这该如何连?还是只能是选择 ...


必须有两个MISO管脚,即两路SPI。
SDOA和SDOB是同时输出,如果能做到同时启动两路SPI,那么就可行,
问题是肯定会有时差。
如果这个时差能远远小于一个SCK周期,比如十分之一以下,那么可以考虑。
这取决于一条语句的执行时间,需要精准测试一下。

最好不要这样。

使用特权

评论回复
38
玄德|  楼主 | 2017-11-13 17:44 | 只看该作者


后面的工作模式,我没有时间认真看。
靠你自己了。

使用特权

评论回复
39
一路向北lm| | 2017-11-14 22:52 | 只看该作者
厉害

使用特权

评论回复
40
qmmdzd| | 2017-11-15 10:24 | 只看该作者
玄德 发表于 2017-11-13 17:44
后面的工作模式,我没有时间认真看。
靠你自己了。

好的 十分感谢

使用特权

评论回复
发新帖 本帖赏金 20.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则