6412|11

70

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

卡壳啦!卡壳啦!有人用过m25p16吗? [复制链接]

S -----> Gnd
W -----> Vcc
Hold --> Vcc

无论是读ID,还是读数据区,D线就是没有数据输出!

(stm32f103)
此帖出自stm32/stm8论坛

最新回复

                                 S还要用呀。我又要去找空闲的IO啦。原以为spi三根线就够啦。谢谢楼上。调试成功。但好像等待(WEL,WIP)标志位时间长了一点。   详情 回复 发表于 2008-7-30 09:22
点赞 关注
 

回复
举报

66

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

不会吧?!!!!!!!!

哪位用过帮助指点一二呀?
是不是把程序贴上来?
此帖出自stm32/stm8论坛
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

你的线路图呢?你的程序呢?

                                  
此帖出自stm32/stm8论坛
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

4
 

收到!周一,贴上!

芯片我已经换了一片了,还是不行。
(我怕与调液晶似的,就换一片)
(真没有想到液晶是坏的)
此帖出自stm32/stm8论坛
 
 
 

回复

91

帖子

0

TA的资源

一粒金砂(初级)

5
 

头文件(m25p16.h)

#ifndef __M25P16
#define __M25P16
#include "stm32f10x_GPIO.h"

/****************************************************
 S -----> Gnd
 W -----> Vcc
 Hold --> Vcc
 ****************************************************/
#define M25P16_C         GPIOC,GPIO_Pin_10
#define M25P16_D         GPIOC,GPIO_Pin_11
#define M25P16_Q         GPIOC,GPIO_Pin_12

#define M25P16_WREN       0x06
#define M25P16_WRDI       0x04
#define M25P16_RDID       0x9F
#define M25P16_RDSR       0x05
#define M25P16_WRSR       0x01
#define M25P16_READ       0x03
#define M25P16_Fast_READ  0x0B
#define M25P16_PP         0x02
#define M25P16_SE         0xD8
#define M25P16_BE         0xC7
#define M25P16_DP         0xB9
#define M25P16_RES        0xAB

void M25P16_WR(u8 Dat);
u8 M25P16_RD(void);
void M25P16_RD_Bytes(u8 Page, u16 Addr, u8 *Dat, u8 Len);
void M25P16_WR_Bytes(u8 Page, u16 Addr, u8 *Dat, u8 Len);
#endif
此帖出自stm32/stm8论坛
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

6
 

程序部分(m25p16.c)比较简单

#include "M25p16.h"

void M25P16_WR(u8 Dat)
{
  u8 i,j;
  j=Dat;
  for(i=0;i<8;i++){
    if(j & 0x80)
      GPIO_SetBits(M25P16_D);
    else
      GPIO_ResetBits(M25P16_D);
    GPIO_ResetBits(M25P16_C);
    GPIO_SetBits(M25P16_C);
    j <<= 1;
  }
}

u8 M25P16_RD(void)
{
  u8 i,j;
  j=0;
  for(i=0;i<8;i++){
    j <<= 1;
    GPIO_ResetBits(M25P16_C);
    if(GPIO_ReadInputDataBit(M25P16_Q))
      j |= 0x01;
    else
      j &= 0xFE;
    GPIO_SetBits(M25P16_C);
  }
  return j;
}

/*******************************************************
  Write Len Datas on the Address of the page
  Page 0x00~0x1F
  Addr 0x0000~0xFFFF
  Len  0x01~0xFF
 *******************************************************/
void M25P16_WR_Bytes(u8 Page, u16 Addr, u8 *Dat, u8 Len)
{
  u8 i;
  u8 AddH,AddL;
  u8 DLen;
  u8 *p;
  
  AddH = Addr >>8;
  AddL = Addr & 0x00FF;
  DLen = Len;
  p = Dat;
  
  M25P16_WR(M25P16_WREN);
  M25P16_WR(M25P16_PP);
  M25P16_WR(Page);
  M25P16_WR(AddH);
  M25P16_WR(AddL);
  for(i=0;i<DLen;i++){
    M25P16_WR(*p);
    p++;
  }
  M25P16_WR(M25P16_WRDI);
}

/*******************************************************
  Read Len Datas on the Address of the page
  Page 0x00~0x1F
  Addr 0x0000~0xFFFF
  Len  0x01~0xFF
 *******************************************************/
void M25P16_RD_Bytes(u8 Page, u16 Addr, u8 *Dat, u8 Len)
{
  u8 i;
  u8 AddH,AddL;
  u8 DLen;
  u8 *p;
  
  AddH = Addr >>8;
  AddL = Addr & 0x00FF;
  DLen = Len;
  p = Dat;
   
  //M25P16_WR(M25P16_WREN);
  M25P16_WR(M25P16_READ);
  M25P16_WR(Page);
  M25P16_WR(AddH);
  M25P16_WR(AddL);
  for(i=0;i<DLen;i++){
    *p = M25P16_RD();    
    p++;
  }
  //M25P16_WR(M25P16_WRDI);
}
此帖出自stm32/stm8论坛
 
 
 

回复

20

帖子

0

TA的资源

一粒金砂(初级)

7
 

应该不用电路图了吧

各位帮助看一下,
程序是不是有问题呀?
Q端(C12)设为悬浮输入,弱上拉,弱下拉,复合推挽,复合极漏均无回数。

郁闷……
(不会是芯片不好吧)我已经换过一片m25p16啦。
此帖出自stm32/stm8论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

8
 

s 不能接GND吧

                                 s 不能直接接GND,接IO
此帖出自stm32/stm8论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

9
 

哦……?

你指的是网上的一个程序吗?
我好像看到过类似图。
另外,我的程序是不是存在问题呢?
此帖出自stm32/stm8论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

10
 

对啦!

to yur12345:这种做法是不是想屏蔽c上的干扰,或是误动作呢?
还是出于什么原因要控制S(片选)呢?
此帖出自stm32/stm8论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

11
 

只知道写操作要用S

PP:
Chip Select (S) must be driven High after the
eighth bit of the last data byte has been latched in,
otherwise the Page Program (PP) instruction is not
executed.
CE,BE 也一样。

读不知有没有影响。

另:
CLK<20M。

fC fC
  Clock Frequency for the following instructions: FAST_READ,
  PP, SE, BE, RES, WREN, WRDI, RDID, RDSR, WRSR
  D.C. 50 MHz

fR 
  Clock Frequency for READ instructions D.C. 20 MHz
此帖出自stm32/stm8论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

12
 

啊?

S还要用呀。
我又要去找空闲的IO啦。
原以为spi三根线就够啦。
谢谢楼上。调试成功。
但好像等待(WEL,WIP)标志位时间长了一点。
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表