打印
[STM32F4]

STM21F407驱动SPI FLASH 芯片M25P80问题

[复制链接]
2237|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ranqingfa|  楼主 | 2015-11-20 20:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在一个产品中用到STM32F407驱动SPI FLASH 芯片M25P80,读写一直出现问题:dizzy:!
在M25P80的dataset中明确的写着SPI模式支持CPOL=0, CPHA=0和CPOL=1, CPHA=1两种模式,
但是我采用这两种模式的时候读写都不成功,反而用CPOL=0,CPHA=1模式的时候偶尔会出现读写都成功的时候
真是头大:curse:!
另外M25P80芯片dataset上写的是SPI时钟支持最大33MHz,不过我都降到1Mhz以下了读写成功率才有50%吧,时钟高了成功率特别低甚至是0!
ST的M25P80芯片线貌似早已卖给MICRON,不过市场上仍然很容易能买到ST的货,芯片也买了两次,第二次基本保证是正品了,不过问题依旧!
我用的是VFQFPN8贴牌封装,因为电路板体积限制选了这个封装!
没想到这么不顺利,不知道有没有熟悉这款新品的大神出来帮忙解答一下!:'(

沙发
gejigeji521| | 2015-11-20 22:28 | 只看该作者
这个用的是硬件的SPI收发器还是自己模拟的?硬件收发器,应该很靠谱的,不会出现波特率高了就误差大吧

使用特权

评论回复
板凳
ranqingfa|  楼主 | 2015-11-20 22:33 | 只看该作者
gejigeji521 发表于 2015-11-20 22:28
这个用的是硬件的SPI收发器还是自己模拟的?硬件收发器,应该很靠谱的,不会出现波特率高了就误差大吧 ...

用的硬件的,不过确实存在这问题……

使用特权

评论回复
地板
gejigeji521| | 2015-11-20 22:36 | 只看该作者
给你例程看看
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "lcd.h"
#include "spi.h"
#include "w25qxx.h"
#include "key.h"  



//作者:正点原子 @ALIENTEK



//要写入到W25Q16的字符串数组
const u8 TEXT_Buffer[]={"Explorer STM32F4 SPI TEST"};
#define SIZE sizeof(TEXT_Buffer)         
        
int main(void)
{
        u8 key;
        u16 i=0;
        u8 datatemp[SIZE];
        u32 FLASH_SIZE;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
        delay_init(168);     //初始化延时函数
        uart_init(115200);        //初始化串口波特率为115200
        LED_Init();                                        //初始化LED
         LCD_Init();                                        //LCD初始化
        KEY_Init();                                 //按键初始化  
        W25QXX_Init();                        //W25QXX初始化
         POINT_COLOR=RED;
        LCD_ShowString(30,50,200,16,16,"Explorer STM32F4");        
        LCD_ShowString(30,70,200,16,16,"SPI TEST");        
        LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
        LCD_ShowString(30,110,200,16,16,"2014/5/6");         
        LCD_ShowString(30,130,200,16,16,"KEY1:Write  KEY0:Read");        //显示提示信息               
        while(W25QXX_ReadID()!=W25Q128)                                                                //检测不到W25Q128
        {
                LCD_ShowString(30,150,200,16,16,"W25Q128 Check Failed!");
                delay_ms(500);
                LCD_ShowString(30,150,200,16,16,"Please Check!      ");
                delay_ms(500);
                LED0=!LED0;                //DS0闪烁
        }
        LCD_ShowString(30,150,200,16,16,"W25Q128 Ready!");
        FLASH_SIZE=16*1024*1024;        //FLASH 大小为16字节
          POINT_COLOR=BLUE;                        //设置字体为蓝色         
        while(1)
        {
                key=KEY_Scan(0);
                if(key==KEY1_PRES)//KEY1按下,写入W25Q128
                {
                        LCD_Fill(0,170,239,319,WHITE);//清除半屏   
                         LCD_ShowString(30,170,200,16,16,"Start Write W25Q128....");
                        W25QXX_Write((u8*)TEXT_Buffer,FLASH_SIZE-100,SIZE);                //从倒数第100个地址处开始,写入SIZE长度的数据
                        LCD_ShowString(30,170,200,16,16,"W25Q128 Write Finished!");        //提示传送完成
                }
                if(key==KEY0_PRES)//KEY0按下,读取字符串并显示
                {
                         LCD_ShowString(30,170,200,16,16,"Start Read W25Q128.... ");
                        W25QXX_Read(datatemp,FLASH_SIZE-100,SIZE);                                        //从倒数第100个地址处开始,读出SIZE个字节
                        LCD_ShowString(30,170,200,16,16,"The Data Readed Is:   ");        //提示传送完成
                        LCD_ShowString(30,190,200,16,16,datatemp);                                        //显示读到的字符串
                }
                i++;
                delay_ms(10);
                if(i==20)
                {
                        LED0=!LED0;//提示系统正在运行        
                        i=0;
                }                  
        }      
}


使用特权

评论回复
5
zchong| | 2015-11-20 22:51 | 只看该作者

这例程有什么意义呢,只能看到几个函数调用

使用特权

评论回复
6
ranqingfa|  楼主 | 2015-11-20 23:09 | 只看该作者
zchong 发表于 2015-11-20 22:51
这例程有什么意义呢,只能看到几个函数调用

主要是FLASH芯片不同,确实没有什么值得参考的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:独上高楼,望尽天涯路

9

主题

217

帖子

3

粉丝