OpenEdv-开源电子网

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

spi问题

[复制链接]

3

主题

5

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2013-9-23
在线时间
0 小时
发表于 2013-10-31 09:09:04 | 显示全部楼层 |阅读模式
在spi例程里面,void SPI2_Init(void)里面设置了SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;
为什么还要再来一个void SPI2_SetSpeed(u8 SPI_BaudRatePrescaler)函数设置分频率呢?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

19

主题

302

帖子

2

精华

高级会员

Rank: 4

积分
727
金钱
727
注册时间
2011-11-22
在线时间
10 小时
发表于 2013-10-31 09:29:21 | 显示全部楼层
我的理解是满足从设备的要求,就像sd卡,初始化时要低速,所以分频系数设的高点,初始化完成后就可以高速操作了

而在void SPI2_Init(void)的函数里不仅设置了分频系数,还设置了其他寄存器,为了简化再搞个专门设置分频系数的函数
void SPI2_SetSpeed(u8 SPI_BaudRatePrescaler)
世界如此美好,好好珍惜每一天吧!
回复 支持 反对

使用道具 举报

3

主题

5

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2013-9-23
在线时间
0 小时
 楼主| 发表于 2013-10-31 09:34:06 | 显示全部楼层
有道理,为了程序的灵活性,谢谢提醒
回复 支持 反对

使用道具 举报

19

主题

302

帖子

2

精华

高级会员

Rank: 4

积分
727
金钱
727
注册时间
2011-11-22
在线时间
10 小时
发表于 2013-10-31 10:48:12 | 显示全部楼层
伙计说了,就想Gmm,有快有慢,直接改变速度。没必要从脱裤子开始
世界如此美好,好好珍惜每一天吧!
回复 支持 反对

使用道具 举报

93

主题

746

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1852
金钱
1852
注册时间
2012-9-16
在线时间
287 小时
发表于 2013-11-25 16:06:02 | 显示全部楼层
回复【4楼】dzng11:
---------------------------------
这个回答很形象,哈哈!
纵浪大化中,不喜亦不惧;应尽便须尽,无复独多虑!
回复 支持 反对

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
发表于 2013-11-25 16:18:40 | 显示全部楼层
在实际运用中,SPI初始化结束了,一般就不会去改变速度了。这个功能看起来很好用,实际上是鸡肋。
因为速度要改变,两边都是要改变的,那又需要进行通信告诉对方速度需要改变了,告诉完以后又要适当延时等待对面改变速度。


这个功能唯一的好处就是可以不用去修改SPI的初始化配置,起到函数驱动通用的作用。或者是说方便新手直接调用。
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复 支持 反对

使用道具 举报

26

主题

193

帖子

8

精华

金牌会员

Rank: 6Rank: 6

积分
1800
金钱
1800
注册时间
2012-8-23
在线时间
57 小时
发表于 2013-11-25 16:22:57 | 显示全部楼层
回复【6楼】feilusia:
---------------------------------
SPI传输数据是时钟触发的,从机是可以适应一定范围内的任意时钟频率的
回复 支持 反对

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
发表于 2013-11-25 17:10:08 | 显示全部楼层
回复【7楼】beyond696:
---------------------------------
你是想说可以这么用,我是想说没必要这么用。
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复 支持 反对

使用道具 举报

19

主题

302

帖子

2

精华

高级会员

Rank: 4

积分
727
金钱
727
注册时间
2011-11-22
在线时间
10 小时
发表于 2013-11-27 08:59:01 | 显示全部楼层
回复【6楼】feilusia:

在实际运用中,SPI初始化结束了,一般就不会去改变速度了。这个功能看起来很好用,实际上是鸡肋。
因为速度要改变,两边都是要改变的,那又需要进行通信告诉对方速度需要改变了,告诉完以后又要适当延时等待对面改变速度。
这个功能唯一的好处就是可以不用去修改SPI的初始化配置,起到函数驱动通用的作用。或者是说方便新手直接调用。

---------------------------------
一看你就没有怎么用过,刚出道吧。
虽然我没做过产品,但我还是知道一点,常在工程师们身边陪伴,耳朵都不知道听过多少回了。
简单的例子,sd卡是要这样操作的,热插拔避免不了来回的初始化。
还有就是芯片编程方面,为了适应更多的不同频率的cpu,当年avr的编程为了适应自动调速。来回切换不同的spi速率,
自己想想就知道这个也是有用的,比如你做一spi主机,为使用不同频率的从机,自动调速,从高速一级一级降速直到收到从机的正确数据
世界如此美好,好好珍惜每一天吧!
回复 支持 反对

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
发表于 2013-11-27 09:11:03 | 显示全部楼层
回复【9楼】dzng11:
---------------------------------
嗯,说的有道理。
是我错了,我只做过一对一的主从通信,所以考虑不周全。
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复 支持 反对

使用道具 举报

23

主题

292

帖子

0

精华

高级会员

Rank: 4

积分
501
金钱
501
注册时间
2013-9-17
在线时间
17 小时
发表于 2013-11-30 02:13:15 | 显示全部楼层
回复【9楼】dzng11:
---------------------------------
程序会自动的设置 速率   
      还是 参数需要认为在程序中加进去
            之后再做调试
闷鱼闷闷不乐吃焖鱼
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-8 19:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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