OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5007|回复: 26

【求助】大家帮我看看,这种情况下STM32能不能处理

[复制链接]

2

主题

18

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2015-11-5
在线时间
19 小时
发表于 2015-11-5 10:05:14 | 显示全部楼层 |阅读模式
5金钱
现在有一芯片发出如下图所示的信号:


    SENB为数据输出使能,数据在其高电平有效;SCLK为输出时钟,一般为500K,最大可达10M,数据在其上升沿被锁存输出;SDATA为10bit的数据位
     这三个信号均为该芯片发送给STM32 的信号,现在我要通过这些信号读取SDATA的数据。
     我之前的想法是采用FSMC来读取,但是感觉不可行,FSMC的读数据使能NOE是输出端口,不能通过SCLK来使能FSMC读数据;我想可不可以使用SPI,但是SPI是串行通信;使用SDIO也不行,SDIO只能读取8bit的数据,而且SDIOCK也不能和SCLK联系起来。
     各位朋友有没有什么好的办法来处理这种情况??

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13129
金钱
13129
注册时间
2012-11-26
在线时间
3814 小时
发表于 2015-11-5 11:00:05 | 显示全部楼层
用抓取电平来做吧。。。。抓到上升沿  就去读数据
学无止境
回复

使用道具 举报

2

主题

18

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2015-11-5
在线时间
19 小时
 楼主| 发表于 2015-11-5 11:04:34 | 显示全部楼层
回复【2楼】jermy_z:
---------------------------------
你的意思是用中断??中断应该是不行的,因为采样的频率太高(大于500Khz),中断反应不过来的
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11554
金钱
11554
注册时间
2014-4-1
在线时间
1317 小时
发表于 2015-11-5 11:15:15 | 显示全部楼层
这三个信号均为该芯片发送给STM32 的信号
如果属实,在脉冲的下降沿,芯片就已经把数据输出了;上升沿其实是把数据锁存到接收方。

这是典型的“非标准SPI”通信。说标准是指时序上与SPI完全一致或者兼容,说“非”是因为位宽度,不是常见的8位或者16位。

完全可以用STM32来接收,STM32按16位宽度接收,对没用的位处理一下。
回复

使用道具 举报

2

主题

18

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2015-11-5
在线时间
19 小时
 楼主| 发表于 2015-11-5 11:21:30 | 显示全部楼层
回复【4楼】xuande:
---------------------------------
不好意思,可能我没表达清楚。SDATA是有10根数据线【0:9】,也就是说他其实是并行输出。SPI好像不能处理并行数据吧,所以我开始是想用FSMC的,但是实在没法用SCLK来使能FSMC读数据。
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11554
金钱
11554
注册时间
2014-4-1
在线时间
1317 小时
发表于 2015-11-5 11:24:16 | 显示全部楼层
那肯定要用FSMC。

DMA,上升沿或者下降沿触发一次DMA。
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11554
金钱
11554
注册时间
2014-4-1
在线时间
1317 小时
发表于 2015-11-5 11:25:44 | 显示全部楼层
STM32的DMA,没有GPIO直接做触发源的功能,这是个很大的遗憾。

但可以通过迂回的方式,得到这样的功能。
回复

使用道具 举报

2

主题

18

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2015-11-5
在线时间
19 小时
 楼主| 发表于 2015-11-5 11:30:16 | 显示全部楼层
回复【6楼】xuande:
---------------------------------
是的,但是FSMC读数据的时序是有NOE控制的,NOE的引脚特性为输出,不能接收SCLK信号,也就是说,我无法通过SCLK来控制FSMC来读取SDATA的数据。是不是我理解有误??
回复

使用道具 举报

2

主题

18

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2015-11-5
在线时间
19 小时
 楼主| 发表于 2015-11-5 11:31:21 | 显示全部楼层
回复【7楼】xuande:
---------------------------------
迂回?什么意思,能详细点吗??
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11554
金钱
11554
注册时间
2014-4-1
在线时间
1317 小时
发表于 2015-11-5 11:37:23 | 显示全部楼层
回复【8楼】lonky:
---------------------------------
NOE信号,一般正常情况是为了控制外部存储器,
但如果对方存储器对应管脚固定接地,会是什么情况?

想通这一点。
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11554
金钱
11554
注册时间
2014-4-1
在线时间
1317 小时
发表于 2015-11-5 11:38:23 | 显示全部楼层
我直接说了吧,一会有事了。

NOE就是做给人看的;
如果没人看,它就没有用了。

所以,悬空,关闭,随便处理。

但CPU的读取动作,不会因为无人关注NOE而改变。

回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11554
金钱
11554
注册时间
2014-4-1
在线时间
1317 小时
发表于 2015-11-5 11:44:05 | 显示全部楼层
回复【9楼】lonky:
---------------------------------

先了解有哪些条件可以触发DMA,

然后设法用SENB或者SCK产生这个条件。
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11554
金钱
11554
注册时间
2014-4-1
在线时间
1317 小时
发表于 2015-11-5 11:46:26 | 显示全部楼层
回复【8楼】lonky:
---------------------------------

一个概念误区:

是NOE触发读取动作,还是相反?
回复

使用道具 举报

2

主题

18

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2015-11-5
在线时间
19 小时
 楼主| 发表于 2015-11-5 11:52:22 | 显示全部楼层
回复【13楼】xuande:
---------------------------------
真是一语惊醒梦中人呀!
我要重新整理下思绪,感谢指导!
回复

使用道具 举报

2

主题

18

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2015-11-5
在线时间
19 小时
 楼主| 发表于 2015-11-5 20:06:47 | 显示全部楼层
回复【13楼】xuande:
---------------------------------
     你好,我又思考了一天,要在SCLK的上升沿,利用DMA,采取迂回的方式把数据搬运出来,而DMA的请求源都是经过外设,而外设能通过外部触发的只有ADC和DAC了,考虑到CPU是读操作,因此只能是DAC了,但是这样也不行吧,这样的数据就被写到DAC的基地址上去了,然后我该怎么把这个数据取出来呢?再开启一路DMA,那它的触发源怎么搞?
***************     我已经晕了T.T   **************
    于是我想了另一种方案,采用FIFO芯片做数据转接,这样STM32就可以不用去管这些信号的时序了,不知道这方案行不行,我接下来要实验下。
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11554
金钱
11554
注册时间
2014-4-1
在线时间
1317 小时
发表于 2015-11-5 21:21:14 | 显示全部楼层
印象里某个定时器更好一些。
回复

使用道具 举报

164

主题

1230

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1477
金钱
1477
注册时间
2014-5-21
在线时间
342 小时
发表于 2015-11-6 12:08:42 | 显示全部楼层
回复【16楼】xuande:
---------------------------------
你意思用外部这芯片SCLK去触发ADC DAC什么,利用ADC的DMA中断来触发FSMC读操作?
彼高丽者,边夷贱类,不足待以仁义,不可责以常礼。古来以鱼鳖畜之,宜从阔略。若必欲绝其种类,恐兽穷则搏。
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11554
金钱
11554
注册时间
2014-4-1
在线时间
1317 小时
发表于 2015-11-6 13:59:04 | 显示全部楼层
回复【17楼】cornrn:
---------------------------------

看资源表,感觉 TIM4_CHx、TIM2_UP、TIM3_TRIG这些,似乎更合适,应当一步就可以触发DMA。
没试过。

触发ADC、DAC,似乎绕得有点远了。
回复

使用道具 举报

2

主题

18

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2015-11-5
在线时间
19 小时
 楼主| 发表于 2015-11-6 14:41:39 | 显示全部楼层
回复【17楼】cornrn:
---------------------------------
是的,外部信号能触发的外设我只想到了ADC、DAC,并且鉴于是读数据,所以得选用DAC,但是这种方法比较绕,所以我放弃了,我现在想直接用一个FIFO芯片做转接,这样就简单多了。
回复

使用道具 举报

2

主题

18

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2015-11-5
在线时间
19 小时
 楼主| 发表于 2015-11-6 14:42:44 | 显示全部楼层
回复【18楼】xuande:
---------------------------------
没有用过TIM4_CHx等定时器的触发源,有空研究下
回复

使用道具 举报

11

主题

1044

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3722
金钱
3722
注册时间
2011-5-23
在线时间
2013 小时
发表于 2015-11-6 14:49:17 | 显示全部楼层
9位数据可以用UART的同步模式
然后就是看使用16位SPI时,后面多的位如何处理的,如果是丢弃的话,可以使用16位的SPI。
RT-Thread RTOS 音频,WIFI,蓝牙
回复

使用道具 举报

164

主题

1230

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1477
金钱
1477
注册时间
2014-5-21
在线时间
342 小时
发表于 2015-11-6 15:14:10 | 显示全部楼层
回复【18楼】xuande:
---------------------------------
别用这些,它400K呢!!!!是读数据的要很准的,这些只能在20K一下比较合适,高了只能当频率计玩玩(还不准),其实他说的FIFO芯片转方案应该可以的。还有楼上说“9位数据可以用UART的同步模式 
然后就是看使用16位SPI时,后面多的位如何处理的,如果是丢弃的话,可以使用16位的SPI。”

人家是并口数据
彼高丽者,边夷贱类,不足待以仁义,不可责以常礼。古来以鱼鳖畜之,宜从阔略。若必欲绝其种类,恐兽穷则搏。
回复

使用道具 举报

2

主题

18

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2015-11-5
在线时间
19 小时
 楼主| 发表于 2015-11-6 18:07:10 | 显示全部楼层
回复【22楼】cornrn:
---------------------------------
你说的很对,不过你说的20K是什么的频率?是指定时器的输入捕获的测试频率或是其他外设的工作频率?对这些不是很有概念
回复

使用道具 举报

2

主题

18

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2015-11-5
在线时间
19 小时
 楼主| 发表于 2015-11-6 18:17:31 | 显示全部楼层
另外,大家有没有什么好的FIFO芯片推荐呢,要10位数据口。还有,有人用过FX2吗?我想着用FX2_Slave模式会不会也可行,修改下固件是不是都不需要用STM32了,直接把数据转接到电脑端处理。
回复

使用道具 举报

164

主题

1230

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1477
金钱
1477
注册时间
2014-5-21
在线时间
342 小时
发表于 2015-11-8 12:50:51 | 显示全部楼层
回复【23楼】lonky:
---------------------------------
输入给单片机捕获的频率
彼高丽者,边夷贱类,不足待以仁义,不可责以常礼。古来以鱼鳖畜之,宜从阔略。若必欲绝其种类,恐兽穷则搏。
回复

使用道具 举报

164

主题

1230

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1477
金钱
1477
注册时间
2014-5-21
在线时间
342 小时
发表于 2015-11-8 12:52:06 | 显示全部楼层
回复【24楼】lonky:
---------------------------------
是我的根本不会用STM32,这不是STM32擅长的事情,强行的用挺累,用FPGA吧
彼高丽者,边夷贱类,不足待以仁义,不可责以常礼。古来以鱼鳖畜之,宜从阔略。若必欲绝其种类,恐兽穷则搏。
回复

使用道具 举报

2

主题

18

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2015-11-5
在线时间
19 小时
 楼主| 发表于 2015-11-9 09:37:26 | 显示全部楼层
回复【26楼】cornrn:
--------------------------------------
是的,一般处理这种情况都是使用的FPGA,但是项目要控制成本,老板要做低成本的方案T.T
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-20 00:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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