OpenEdv-开源电子网

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

STM32与flash用SPI通讯不连续,通讯速度提不上来,怎么破?

[复制链接]

2

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2015-11-28
在线时间
4 小时
发表于 2016-11-9 11:19:42 | 显示全部楼层 |阅读模式
10金钱
STM32与flash用SPI通讯,发现收发过程都不连续,通讯速度提不上来,读V10参考手册,上面是这样讲的,连续和非连续传输

当在主模式下发送数据时,如果软件足够快,能够在检测到每次TXE 的上升沿( 或TXE 中断) ,并立即在正在进行的传输结束之前写入SPI_DR寄存器,则能够实现连续的通信;此时,在每个数据项的传输之间的SPI时钟保持连续,同时BSY位不会被清除,如果软件不够快,则会导致不连续的通信;这时,在每个数据传输之间会被清除,通讯连续图如图一所示,非连续图如图二所示,


我自己用战舰板f103,做SPI实验,读写W25Q64flash,将读写频率设成18MHz,发现通讯正常,读写每个字节也正常,但是读写每个字节都不连续,测得间隔时间为1.9us左右,实际读写每个字节的时间为0.5us左右,这样的话通讯速率就大大降低了,折算成每个字节读写时间为2.4us左右,还不到1Mbyte/s,工程应用的话速率还是不够啊,不知各位大神有什么办法,将间隔时间给他干掉,最好的结果是做成手册所描述的那样连续传输,不知道是不是那个参数设置有问题,仔细研读手册发现,当TXE置位时,软件是马上就去读TXE,延时不应该超过1us啊,搞不明白,哪里出问题了,请大家指教!图三和四是我实测的,图三上面通道一的信号是SCK,下面的是DO,图四是SCK。







图一

图一

图二

图二

图三

图三

图四

图四

最佳答案

查看完整内容[请看2#楼]

问题一:关键问题为什么读TXE要这么久?查看汇编后的语句好像只有2两条,怎么解 问题二:SPI是个环形移位寄存器,非FIFO,判断TXE,若为1,则表明TX_buffer为空,软件写入,同时TXE置零,系统自动将tx_buffer的数据并行送到移位寄存器,一个CLK后,txe置1,读手册,感觉整个过程快速且智能!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2015-11-28
在线时间
4 小时
 楼主| 发表于 2016-11-9 11:19:43 | 显示全部楼层
xuande 发表于 2016-11-9 11:49
分两个问题:
为什么读TXE要这么久?   可能是正常现象,可以看一下汇编后的语句有几条。
图一怎么实现 ...

问题一:关键问题为什么读TXE要这么久?查看汇编后的语句好像只有2两条,怎么解
问题二:SPI是个环形移位寄存器,非FIFO,判断TXE,若为1,则表明TX_buffer为空,软件写入,同时TXE置零,系统自动将tx_buffer的数据并行送到移位寄存器,一个CLK后,txe置1,读手册,感觉整个过程快速且智能!
回复

使用道具 举报

11

主题

1044

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3720
金钱
3720
注册时间
2011-5-23
在线时间
2012 小时
发表于 2016-11-9 11:38:40 | 显示全部楼层
不用DMA么
回复

使用道具 举报

2

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2015-11-28
在线时间
4 小时
 楼主| 发表于 2016-11-9 11:42:53 | 显示全部楼层

后面会考虑用DMA,现在先把通讯跑通,速率提起来,
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11537
金钱
11537
注册时间
2014-4-1
在线时间
1314 小时
发表于 2016-11-9 11:49:06 | 显示全部楼层

分两个问题:
为什么读TXE要这么久?   可能是正常现象,可以看一下汇编后的语句有几条。
图一怎么实现?    应当仔细研究一下手册,有FIFO?读TXE然后再软件写入DR,好像必然有延迟。


回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-11-9 23:15:26 | 显示全部楼层
用DMA吧。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-11-9 23:15:35 | 显示全部楼层
DMA读取SPI FLASH,可以参考我们的精英版综合实验。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2015-11-28
在线时间
4 小时
 楼主| 发表于 2016-11-10 09:28:14 | 显示全部楼层
正点原子 发表于 2016-11-9 23:15
DMA读取SPI FLASH,可以参考我们的精英版综合实验。

感谢原子哥的回复,我去试试!
回复

使用道具 举报

1

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1183
金钱
1183
注册时间
2015-5-28
在线时间
149 小时
发表于 2016-11-10 10:32:35 | 显示全部楼层
虽然我不是硬件工程师,图3的绿色信号,有那么大的过冲现象~是不是可以优化下走线~
回复

使用道具 举报

2

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2015-11-28
在线时间
4 小时
 楼主| 发表于 2016-11-11 09:27:31 | 显示全部楼层
小陀螺爱炒蛋 发表于 2016-11-10 10:32
虽然我不是硬件工程师,图3的绿色信号,有那么大的过冲现象~是不是可以优化下走线~

嗯,在画PCB,走线,抗电磁干扰方面有没有什么心得,分享一下啊!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-25 03:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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