OpenEdv-开源电子网

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

关于W25Q64的SPI时序

[复制链接]

28

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
492
金钱
492
注册时间
2012-8-9
在线时间
58 小时
发表于 2013-10-9 11:38:35 | 显示全部楼层 |阅读模式
原子哥,这个问题困扰了我很久。就是那个极性和相位的问题。。
按照你对FLASH的SPI配置,你对W25的时序选择的是MODE3????是这样吗?那MODE0和MODE3是怎么选择的?只是通过极性和相位的相应配置?就执行了相应的模式协议?但是我换成极性低和相位第一跳变沿,却不行。。。。。能为我解答下?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

19

主题

199

帖子

0

精华

高级会员

Rank: 4

积分
513
金钱
513
注册时间
2012-11-18
在线时间
72 小时
发表于 2013-10-9 17:18:57 | 显示全部楼层
回复【楼主位】117788674:

原子哥,这个问题困扰了我很久。就是那个极性和相位的问题。。
按照你对FLASH的SPI配置,你对W25的时序选择的是MODE3????是这样吗?那MODE0和MODE3是怎么选择的?只是通过极性和相位的相应配置?就执行了相应的模式协议?但是我换成极性低和相位第一跳变沿,却不行。。。。。能为我解答下?

---------------------------------
整个逻辑分析仪看看就一目了然.原子店里有.
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-10-9 19:05:42 | 显示全部楼层
是的,我们默认使用MODE3。
W25QXX支持MODE0和MODE3,唯一的区别就是CLK空闲时的电平状态。
以下是数据手册原话:
SPI bus operation Modes 0 (0,0) and 3 (1,1) are supported. The primary difference between Mode 0
and Mode 3 concerns the normal state of the CLK signal when the SPI bus master is in standby and
data is not being transferred to the Serial Flash. For Mode 0 the CLK signal is normally low on the
falling and rising edges of /CS. For Mode 3 the CLK signal is normally high on the falling and rising
edges of /CS.


所以你改CLK极性可以,但是相位不能改。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

28

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
492
金钱
492
注册时间
2012-8-9
在线时间
58 小时
 楼主| 发表于 2013-10-9 20:03:08 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
恩,这个知道。但是我就是不明白为什么极性是第二个跳变沿呢?如果是MODE0的话  它一直为低电平,那么第一个跳变沿,上升沿就可以写入数据了不是???就是这个极性我好纠结,英文里面也没说,就说了他的空闲极性为主要区别啊。求再指导一番。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-10-9 21:18:49 | 显示全部楼层
CLK为0的时候,是第一个边沿采样才对哦。
一下是我改的代码:
//以下是SPI模块的初始化代码,配置成主机模式,访问SD Card/W25Q64/NRF24L01   
//SPI口初始化
//这里针是对SPI2的初始化
void SPI2_Init(void)
{  
RCC->APB2ENR|=1<<3;   //PORTB时钟使能   
RCC->APB1ENR|=1<<14;    //SPI2时钟使能 
//这里只针对SPI口初始化
GPIOB->CRH&=0X000FFFFF; 
GPIOB->CRH|=0XBBB00000; //PB13/14/15复用      
GPIOB->ODR|=0X7<<13;    //PB13/14/15上拉
SPI2->CR1|=0<<10; //全双工模式
SPI2->CR1|=1<<9;  //软件nss管理
SPI2->CR1|=1<<8;  

SPI2->CR1|=1<<2;  //SPI主机
SPI2->CR1|=0<<11; //8bit数据格式
SPI2->CR1|=0<<1;  //空闲模式下SCK为0 CPOL=0
SPI2->CR1|=0<<0;  //数据采样从第1个时间边沿开始,CPHA=0  
//对SPI2属于APB1的外设.时钟频率最大为36M.
SPI2->CR1|=3<<3;  //Fsck=Fpclk1/256
SPI2->CR1|=0<<7;  //MSBfirst   
SPI2->CR1|=1<<6;  //SPI设备使能
SPI2_ReadWriteByte(0xff);//启动传输  
}   


CLK=0,第1个边沿采样。

如果:
CLK=0,第2个边沿采样,错误。
CLK=1,第1个边沿采样,错误。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-10-9 21:18:58 | 显示全部楼层
在战舰板测试的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

28

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
492
金钱
492
注册时间
2012-8-9
在线时间
58 小时
 楼主| 发表于 2013-10-10 09:48:21 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
啊。。不是吧,我当时在战舰板测试的时候,也是极性改成低,然后相应的相位也改成低,居然说W25出错。。坑爹。。那我中午回去测试下。。。那我的想法应该是没错的了,哎。。坑爹  那那时候怎么会出错呢!
回复 支持 反对

使用道具 举报

28

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
492
金钱
492
注册时间
2012-8-9
在线时间
58 小时
 楼主| 发表于 2013-10-10 13:48:08 | 显示全部楼层
回复【7楼】117788674:
---------------------------------
原子哥你好,中午我回去测试了下。。我用的是库函数版本的那个SPI源程序,我把极性改为低,相位改成第一个跳变7沿,但是W25失败操作。。。液晶上面显示!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-10-10 23:29:40 | 显示全部楼层
我用寄存器的...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

28

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
492
金钱
492
注册时间
2012-8-9
在线时间
58 小时
 楼主| 发表于 2013-10-11 07:56:46 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
额。。那我中午回去用寄存器版本的看下。。。不是吧?难道库函数有BUG?
回复 支持 反对

使用道具 举报

28

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
492
金钱
492
注册时间
2012-8-9
在线时间
58 小时
 楼主| 发表于 2013-10-11 13:50:54 | 显示全部楼层
回复【10楼】117788674:
---------------------------------
原子哥,奇怪了。。。为什么寄存器版本的改下就可以了?然道是库函数的BUG?。。。坑爹啊~~~
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-10-11 16:40:27 | 显示全部楼层
回复【11楼】117788674:
---------------------------------
这就不知道了。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

28

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
492
金钱
492
注册时间
2012-8-9
在线时间
58 小时
 楼主| 发表于 2013-10-12 08:39:59 | 显示全部楼层
额、、、、好吧~~~谢谢你!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-12 01:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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