OpenEdv-开源电子网

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

读内部FLASH失败.

[复制链接]

13

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2014-2-23
在线时间
1 小时
发表于 2014-4-19 12:34:24 | 显示全部楼层 |阅读模式

//初始化SPI FLASH的IO口
void SPI_Flash_Init(void)
{
 RCC->APB2ENR|=1<<3;       //PORTB时钟使能     
 //这里
 GPIOB->CRH &= 0XFFF0FFFF;
 GPIOB->CRH |= 0X00030000; //PB12 SPI2_NSS推挽     
 GPIOB->ODR |= 0X1000;     

 GPIOB->CRL &= 0XF0FFFFFF;
 GPIOB->CRL |= 0X03000000;  //PB6 F_CS
 GPIOB->ODR |= 1<<6;  

 SPI2_Init();     //初始化SPI




void SPI2_Init(void)

 RCC->APB2ENR|=1<<3;       //PORTB时钟使能  
 RCC->APB1ENR|=1<<14;      //SPI2时钟使能 

 GPIOB->CRH &= 0X000FFFFF;
 GPIOB->CRH |= 0XBBB00000; //PB13,14,15 复用输出     
 GPIOB->ODR |= 0XE000;


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

}  
以上两段是我对SPI2初始化的程序。我是要读内部FLASH,对于初始话我是认为没问题了。
而读写内部的FLASH的程序我是调用了战舰板实验中的实验35(读内部FLASH)
const u8 TEXTA_Buffer[] = {"Good Bye"};
#define SIZE sizeof(TEXTA_Buffer)
#define FLASH_SAVE_ADDR  0X08016000
上面是我修改了的存储地址。因为我用的板子是128K的。末地址是08020000,
我还修改了stmflash.h里边的
#define STM32_FLASH_SIZE  128     //所选STM32的FLASH容量大小(单位为K)

但是在读程序的时候却是和写进去的字符串不一样。都是显示xL;
麻烦大家看一下这是什么原因造成的。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-4-19 16:38:19 | 显示全部楼层
实验35是:实验35 FM收发实验
怎么和内部flash扯到关系的?
另外,内部flash也不是通过SPI读取的啊。
SPI是读取外部SPI FLASH的。

楼主这混乱的可以啊。。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2014-2-23
在线时间
1 小时
 楼主| 发表于 2014-4-19 21:30:37 | 显示全部楼层
回复【2楼】正点原子:
实验35是:实验35 FM收发实验 怎么和内部flash扯到关系的? 另外,内部flash也不是通过SPI读取的啊。 SPI是读取外部SPI FLASH的。 楼主这混乱的可以啊。。。。
---------------------------------
早上没吃药,原谅我。。
是IO口模拟EPPROM那个实验,具体哪个我忘了。
那应该怎么读取内部的FLASH???
回复 支持 反对

使用道具 举报

13

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2014-2-23
在线时间
1 小时
 楼主| 发表于 2014-4-19 21:33:24 | 显示全部楼层
回复【2楼】正点原子:
实验35是:实验35 FM收发实验 怎么和内部flash扯到关系的? 另外,内部flash也不是通过SPI读取的啊。 SPI是读取外部SPI FLASH的。 楼主这混乱的可以啊。。。。
---------------------------------
读取内部FLASH:

解锁
计算写入偏移地址
擦除

上锁。。


大概是这样的流程吧。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-4-19 22:59:48 | 显示全部楼层
回复【4楼】blatand:
---------------------------------
是的

说起来就是这么简单的。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2014-2-23
在线时间
1 小时
 楼主| 发表于 2014-4-20 00:15:37 | 显示全部楼层
回复【5楼】正点原子:
回复【4楼】blatand:
---------------------------------
是的
说起来就是这么简单的。。。
---------------------------------
他是用了FLASH啊。你意思是说我们不用配置SPI 直接对FLASH操作就可以读内部的FLASH了?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-4-20 13:48:16 | 显示全部楼层
回复【6楼】blatand:
---------------------------------
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2014-2-23
在线时间
1 小时
 楼主| 发表于 2014-4-20 14:00:06 | 显示全部楼层
回复【7楼】正点原子:
回复【6楼】blatand: --------------------------------- 是
---------------------------------
3q,虽然程序调通了,理论知识还是差远了。请接受我的膜拜。。哈哈
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-10 04:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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