野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11422|回复: 13

新手关于SPI数据传输的一些疑问,希望论坛上的各位大神前辈不吝指教。

[复制链接]
发表于 2018-1-2 14:57:59 | 显示全部楼层 |阅读模式
新手初学STM32,想用STM32实现一个传输协议,协议名叫XY2—100,内容主要是实现下图的一个时序图,不知道有没有前辈实现过类似的项目。然后就是我在知网上下载了一些论文,说是可以利用STM32F103ZET6的SPI功能实现这个时序图。所以小弟最近在苦学STM32的知识,尤其是SPI这一章节,现在有一些疑问想请各位前辈解惑。第一个问题是关于SPI的传输速度:SPI要实现2MBit/s的传输速度,需要对SPI的时钟进行分频,而当系统时钟是72M的时候,不管是APB1的36M还是APB2的72M好像都没有办法直接使SPI的时钟分成2M,因为预分频系数只能是2,4,8,16,32...等等。要想使SPI的时钟成2M,是不是意味着要更改STM32的系统时钟到64M或其他,然后可以选择32的预分频?第二个问题是关于SPI FLASH代码的编程:W25Q的读、写、擦除这些程序我们直接调用就好了吧?第三个问题是SPI连续传输:如时序图所示,需要连续传输20位的数据,我想问问怎么实现SPI的连续传输?是在SPI初始化里面进行配置吗?最后就是,我在论文中看到可以利用STM32F429这一款芯片的定时器中断来实现10us里传输20位数,我试过F103,传数据是ok的,但是波形会比预期的长很多。我想问问各位,以你们对F429的了解,使用定时器中断这个方式可以实现10us内传输20位数的目的吗?

XY2—100协议

XY2—100协议
回复

使用道具 举报

发表于 2018-1-2 14:59:28 | 显示全部楼层
这样还不如直接用模拟spi了,直接控制io
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-2 15:13:47 | 显示全部楼层
华欣悦 发表于 2018-1-2 14:59
这样还不如直接用模拟spi了,直接控制io

前辈你好,能说的详细点吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-2 15:26:04 | 显示全部楼层
天真但赫赫 发表于 2018-1-2 15:13
前辈你好,能说的详细点吗?

前辈,模拟SPI的传输速度可以达到2M吗?我在论坛搜了一下关于模拟SPI的知识,看的懂,要是速度可以实现2M我就准备用模拟SPI的方式做一下。
回复 支持 反对

使用道具 举报

发表于 2018-1-2 15:51:56 | 显示全部楼层
天真但赫赫 发表于 2018-1-2 15:26
前辈,模拟SPI的传输速度可以达到2M吗?我在论坛搜了一下关于模拟SPI的知识,看的懂,要是速度可以实现2M ...

是只能模拟了,硬件spi只有8位、16位的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-2 16:55:49 | 显示全部楼层
flyleaf 发表于 2018-1-2 15:51
是只能模拟了,硬件spi只有8位、16位的

管理员大哥你好,模拟SPI的传输速度可以实现2M吗?数据传输精度呢?
回复 支持 反对

使用道具 举报

发表于 2018-1-2 17:45:53 | 显示全部楼层
天真但赫赫 发表于 2018-1-2 16:55
管理员大哥你好,模拟SPI的传输速度可以实现2M吗?数据传输精度呢?

可以啊,这都是自己设置的,比硬件spi自由度高,参考我们开发板电阻触摸屏的驱动,就是模拟spi的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-2 18:25:17 | 显示全部楼层
flyleaf 发表于 2018-1-2 17:45
可以啊,这都是自己设置的,比硬件spi自由度高,参考我们开发板电阻触摸屏的驱动,就是模拟spi的

好的,谢谢管理员大大
回复 支持 反对

使用道具 举报

发表于 2018-1-4 19:59:49 | 显示全部楼层
之前在贴吧问这个问题的也是你吧?我之前用F103试了一整天,使用定时器来做,如果要实现这个波形连续发送需要在定时器中断里面进行一些清除中断以及指针操作,还要准备下一次发送的20个bit数据,这样子F103发出的波形是不准确的,

但是

第一次发送的20bit是准确的(如果我没有记错的话),也就是如果比不需要连续发送,只是每次发送20个bit,然后准备好数据,再进行下一次发送应该是没有问题的。

不知道你想要的是哪种效果。

F429的时钟频率高一些,可能要好一些。
回复 支持 反对

使用道具 举报

发表于 2018-1-4 20:11:15 | 显示全部楼层
本帖最后由 飔箣 于 2018-1-4 20:23 编辑
天真但赫赫 发表于 2018-1-2 18:25
好的,谢谢管理员大大

看了一下振镜控制,觉得蛮难的!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-28 16:01:54 | 显示全部楼层
飔箣 发表于 2018-1-4 20:11
看了一下振镜控制,觉得蛮难的!

用F1确实有点不好做,关键是硬件SPI不会,软件SPI速度达不到
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-28 16:07:14 | 显示全部楼层
飔箣 发表于 2018-1-4 20:11
看了一下振镜控制,觉得蛮难的!

是在贴吧里面求助过,转用F767做了,驱动效果差强人意吧。F1速度还是有点跟不上。方便的话,不知道能不能分享一下你用F1定时器这个思路做的文件?QQ:1059732780,十分感谢。
回复 支持 反对

使用道具 举报

发表于 2018-1-28 20:35:34 | 显示全部楼层
天真但赫赫 发表于 2018-1-28 16:07
是在贴吧里面求助过,转用F767做了,驱动效果差强人意吧。F1速度还是有点跟不上。方便的话,不知道能不能 ...

你看看靠谱不?
无标题3.png 无标题1.png 无标题2.png
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-29 09:31:57 | 显示全部楼层
飔箣 发表于 2018-1-28 20:35
你看看靠谱不?

从图上看的话,同步性不是很好,各路信号触发延时有些长。实际驱动效果的话,需要接到振镜上试试才知道。
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-25 21:34 , Processed in 0.034372 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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