12
返回列表 发新帖我要提问本帖赏金: 20.00元(功能说明)

[数据转换器-信号链] 应坛友求助,开贴讨论STM32F103高速控制ADS8363的题目。

[复制链接]
10027|39
airwill 发表于 2017-11-2 20:43 | 显示全部楼层
非常同意楼上的方法. 补充一点思路
CLOCK 可以用系统时钟输出功能引脚, 把主频分频后输出.
RD/CONVST脉冲可以用 PWM 输出.
SPI 是否可以工作在从模式, 用 BUSY 或者 RD 作为 CS 的驱动信号
 楼主| 玄德 发表于 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那边也会以为主机下命令了,所以会输出数据。



 楼主| 玄德 发表于 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,就不存在这个麻烦。


 楼主| 玄德 发表于 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
理由:感谢开贴相助

背包1234 发表于 2017-11-2 22:14 | 显示全部楼层
多谢分享
airwill 发表于 2017-11-3 06:53 | 显示全部楼层
本帖最后由 airwill 于 2017-11-3 06:55 编辑

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

我不赞成软件沦陷 SPI 收发标志, 你的留一点 CPU 时间给主循环呀
qmmdzd 发表于 2017-11-3 08:41 | 显示全部楼层
玄德 发表于 2017-11-2 21:57
也算讨论了一些内容,不知道你有什么看法?    @qmmdzd

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

玄德的思路给的很清晰 我能看明白了 我现在正着手准备试下这几种方案 看看哪种更快 不过我对定时器这块理解的不够深 可能需要一段时间
pmp 发表于 2017-11-3 22:39 | 显示全部楼层
玄德 发表于 2017-11-1 22:19
坛友的需求基本是这样:
STM32F103控制ADS8363,高速控制AD转换和数据读取,速度尽可能高;(所以,IO口模 ...

DSP+FPGA处理方案。
pmp 发表于 2017-11-3 22:44 | 显示全部楼层
玄德 发表于 2017-11-1 22:19
坛友的需求基本是这样:
STM32F103控制ADS8363,高速控制AD转换和数据读取,速度尽可能高;(所以,IO口模 ...

以前使用FPGA做两路采集和一路输出没有压力。
 楼主| 玄德 发表于 2017-11-4 00:05 | 显示全部楼层
pmp 发表于 2017-11-3 22:44
以前使用FPGA做两路采集和一路输出没有压力。


讨论的前提就是STM32F103。

qmmdzd 发表于 2017-11-4 09:18 | 显示全部楼层
各位坛友 如果有相关的程序麻烦大家传一份 我水平有限参考看下 STM32控制或者FPGA控制ADS8363/7263/7223都行 邮箱957673760@qq.com  再次感谢玄德 airwill  感谢大家相助
qmmdzd 发表于 2017-11-5 09:56 | 显示全部楼层
玄德 发表于 2017-11-2 21:57
也算讨论了一些内容,不知道你有什么看法?    @qmmdzd

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

这里有个问题想问下 如果先采集把数据存储在一个数组中 等全部采集完再处理可以吗?因为整个信号周期几个ms,采集的点数也是在STM32存储的能力范围内 这样是不是能够不用中断处理数据了?
 楼主| 玄德 发表于 2017-11-5 15:27 | 显示全部楼层
qmmdzd 发表于 2017-11-5 09:56
这里有个问题想问下 如果先采集把数据存储在一个数组中 等全部采集完再处理可以吗?因为整个信号周期几个 ...


1、当然可以。

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


eefas 发表于 2017-11-6 22:46 | 显示全部楼层
  楼主厉害
qmmdzd 发表于 2017-11-13 09:12 | 显示全部楼层
请教玄德  如果两路数据输出 也就是SDOA和SDOB同时输出 而SPI只有一个MISO引脚 这该如何连?还是只能是选择数据都从SDOA输出 只是有先后顺序这样配置
qmmdzd 发表于 2017-11-13 10:42 | 显示全部楼层
file:///C:\Users\zhangdi\AppData\Roaming\Tencent\Users\957673760\QQ\WinTemp\RichOle\2D$1)@UQRDRZ1`LV2LJW1}T.png

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 玄德 发表于 2017-11-13 17:44 | 显示全部楼层
qmmdzd 发表于 2017-11-13 09:12
请教玄德  如果两路数据输出 也就是SDOA和SDOB同时输出 而SPI只有一个MISO引脚 这该如何连?还是只能是选择 ...


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

最好不要这样。

 楼主| 玄德 发表于 2017-11-13 17:44 | 显示全部楼层


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

一路向北lm 发表于 2017-11-14 22:52 | 显示全部楼层
qmmdzd 发表于 2017-11-15 10:24 | 显示全部楼层
玄德 发表于 2017-11-13 17:44
后面的工作模式,我没有时间认真看。
靠你自己了。

好的 十分感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部