OpenEdv-开源电子网

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

为什么在我自己做的板子上做汉字显示的实验没成功呢。。【SPI3的使用注意】

[复制链接]

21

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
238
金钱
238
注册时间
2011-4-12
在线时间
0 小时
发表于 2012-6-1 12:41:05 | 显示全部楼层 |阅读模式
军哥,现象图如下:






实验是这样的,SPI用的是SPI3,所以改过来了。代码如下:
#include "spi3.h"


//SPI3初始化代码,配置为主机模式,驱动SD Card
//驱动SPI3初始化函数
void SPI3_Init(void)
{
RCC->APB2ENR|=1<<3;       //PORTB时钟使能
RCC->APB2ENR|=1<<2;  //PORTA时钟使能          CS用的是PA那个端口
RCC->APB1ENR|=1<<15;      //SPI3时钟使能 
RCC->APB2ENR|=1<<0;  //AFIO
  
//这里只针对SPI3口初始化
GPIOB->CRL&=0XFF000FFF; 
GPIOB->CRL|=0X00BBB000;//PB3,4,5复用    
GPIOB->ODR|=0X7<<3;    //PB3,4,5上拉
SPI3->CR1|=0<<10;//全双工模式
SPI3->CR1|=1<<9; //软件nss管理
SPI3->CR1|=1<<8; //NSS引脚上的电平,SSI

SPI3->CR1|=1<<2; //SPI主机
SPI3->CR1|=0<<11;//8bit数据格式
SPI3->CR1|=1<<1; //空闲模式下SCK为1 CPOL=1
SPI3->CR1|=1<<0; //数据采样从第二个时间边沿开始,CPHA=1  
SPI3->CR1|=7<<3; //Fsck=Fcpu/256
SPI3->CR1|=0<<7; //MSBfirst   
SPI3->CR1|=1<<6; //SPI设备使能
SPI3_ReadWriteByte(0xff);//启动传输
}

FLASH用的是W25X16
代码如下:
//W25X16 驱动函数   
//正点原子@ALIENTEK

//4Kbytes为一个Sector
//16个扇区为1个Block
//W25X16
//容量为2M字节,共有32个Block,512个Sector 

//初始化SPI FLASH的IO口
void SPI_Flash_Init(void)
{
  RCC->APB2ENR|=1<<2; //使能PORTA时钟  
RCC->APB2ENR|=1<<3; //使能PORTB时钟 

GPIOA->CRH&=0X0FFFFFFF; 
GPIOA->CRH|=0X30000000; //PA15 推挽    
GPIOA->ODR|=1<<15;     //PA15 上拉
 
SPI3_Init();   //初始化SPI3
SPI3_SetSpeed(SPI_SPEED_2);//设置为36M时钟,高速模式
}  

//W25X16 驱动函数   
//正点原子@ALIENTEK
 
#define SPI_FLASH_CS PAout(15)  //选中FLASH  
////////////////////////////////////////////////////////////////////////////
//W25Qxx(兼容W25Xxx系列)读写
//W25Q80 ID  0XEF13
//W25Q16 ID  0XEF14
//W25Q32 ID  0XEF15
#define FLASH_ID 0XEF14  //不知我那个是W25X16是不是不是这个的ID
实验的结果就是:
提示更新字库,然后就更新了两个字库,接着提示更新成功,然后就出现如上图所以的界面,不过我重新上电或者复位之后,又开始进行字库更新。最后又是那个界面。。。军哥,这个是什么原因?








自信人生一百年
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2014-12-5
在线时间
6 小时
发表于 2015-11-14 14:16:56 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
原子哥,stm32f107rct6的PC10,PC11,PC12究竟有没有spi功能。加了GPIO_PinRemapConfig(GPIO_Remap_SPI3, ENABLE);初始化也不成功。网上看到很多人调spi3不成功的,也有怀疑PC10,11,12,是不是没有spi功能?
回复 支持 0 反对 1

使用道具 举报

21

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
238
金钱
238
注册时间
2011-4-12
在线时间
0 小时
 楼主| 发表于 2012-6-1 13:12:27 | 显示全部楼层


这个是SD卡里头文件

自信人生一百年
回复 支持 反对

使用道具 举报

21

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
238
金钱
238
注册时间
2011-4-12
在线时间
0 小时
 楼主| 发表于 2012-6-1 17:36:13 | 显示全部楼层
dingqi
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-6-1 18:26:32 | 显示全部楼层
确保字库更新成功了。其他没什么特殊的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

21

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
238
金钱
238
注册时间
2011-4-12
在线时间
0 小时
 楼主| 发表于 2012-6-1 22:25:26 | 显示全部楼层
军哥。。更新不成功啊。。。更新完。提示成功。。但是没显示出汉字。。我重新上电之后还是再继续更新。。。。反反复复。。。。我将已经更新完字库的学习板【也就是你MINI STM32开发板】上的FLASH拆了焊到我这个开发板后,同样还是那样的情况。。没有显示出汉字。。然后我又将ID测试出来。显示0xFEFE.这个是W25Q32的ID。正确吗?表明FLASH读写成功吗?
自信人生一百年
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-6-1 22:27:53 | 显示全部楼层
读写有没成功,做个校验就知道了.
把你写进去的部分内容,和读出来的部分内容对比一下.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

21

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
238
金钱
238
注册时间
2011-4-12
在线时间
0 小时
 楼主| 发表于 2012-6-1 22:37:58 | 显示全部楼层
谢谢军哥。回复的好快啊。。。。下午反反复复检查程序。从SPI3的配置到FLASH的设置,正要实验你刚才说的那个呢。。还有个问题。军哥。。
#define SPI_FLASH_CS Aout(15)  //选中FLASH  
////////////////////////////////////////////////////////////////////////////
//W25Qxx(兼容W25Xxx系列)读写
//W25Q80 ID  0XEF13
//W25Q16 ID  0XEF14
//W25Q32 ID  0XEF15
这个是FLASH的ID。。而我刚才实验出来的是0XFEFE,这个值可能是假的吧?所有的W25Q32都是0XEF15吗?W25X16和W25Q16的ID一样?
#define FLASH_ID 0XFEFE
//指令表
自信人生一百年
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-6-1 23:25:34 | 显示全部楼层
Q和X完全替代.
0XFEFE,貌似不对吧...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

38

主题

302

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
440
金钱
440
注册时间
2012-3-6
在线时间
5 小时
发表于 2012-6-2 09:52:30 | 显示全部楼层
.......路过。。。。。跟着原子走。。
ES?全称?Embedded?Show;ES是由众多嵌入式爱好者组织的一个团队,致力于带领学生进步,帮助毕业生找到工作,更重要的是在职的嵌入式工作者提供自主外包和创业的机会。(详情进群查看) ES的宗旨是:交流共享与合作发展。ES?QQ群?第三群:152820643?。群内论坛有很多嵌入式开发模块解决方案可以参考。进群的立马共享自己做的模块简介。
回复 支持 反对

使用道具 举报

21

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
238
金钱
238
注册时间
2011-4-12
在线时间
0 小时
 楼主| 发表于 2012-6-2 23:22:06 | 显示全部楼层
 问题解决了。。。首先感谢原子哥百忙之中对我的指导,也非常感谢可爱的神,帮我发现了问题。非常感谢。

首先。我是用STM32F103ZET6做的智能家居主控板,然后用SPI3来外扩FLASH,也就是W25Q32型号的。
然后我就按照军哥的程序进行改动之后移植过去。可是一直不好使,改了很多次了。。进行了各种检验。

今晚问了神,原来我比较倒霉,我一直郁闷的是为啥我的SPI2可以。而SPI3为啥解决不了呢??原来是SPI3是和JTAG接口的复用了。。。倒霉。。。所以我无论怎么修改这几个SPI3的口,总是不好使的。。。问题就这么简单。也这么气死人。特意贴上来。希望能帮到以后遇到这个问题的网友。。

再次感谢军哥和神。。。
自信人生一百年
回复 支持 反对

使用道具 举报

21

主题

135

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
238
金钱
238
注册时间
2011-4-12
在线时间
0 小时
 楼主| 发表于 2012-6-2 23:37:25 | 显示全部楼层
就是那个JTAG给关闭了就好了。。刚才忘了写
自信人生一百年
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2013-12-12
在线时间
0 小时
发表于 2013-12-13 00:00:22 | 显示全部楼层
请教一个问题,如果我用PC10 -11-12三个GPIO管脚,这样是不是不用关闭JTAG口呀,但是我现在初始化后,时钟信号始终是高,不知道怎么回事。
哪位能指点一下。
回复 支持 反对

使用道具 举报

51

主题

340

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3275
金钱
3275
注册时间
2013-9-21
在线时间
281 小时
发表于 2018-8-23 20:16:49 | 显示全部楼层
liuliuzelin 发表于 2012-6-2 23:22
&nbsp;问题解决了。。。首先感谢原子哥百忙之中对我的指导,也非常感谢可爱的神,帮我发现了问题。非常感谢 ...

方便分享一下嗎SPI3參考看看
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-11 21:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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