stm32f103vet6 spi2-sst25vf016 死在忙检测出不来

[复制链接]
4176|33
 楼主| delamu 发表于 2013-6-20 11:42 | 显示全部楼层 |阅读模式
各位朋友,帮帮忙啊
程序调试时,总是停留在忙检测出不来,怎么解决呀,郁闷死了

void wip(void){
//        unsigned char a=1;
//        while((a&0x01)==1) a=rdsr();                         //读状态寄存器
        while((rdsr()&0x01)==0x01);                                 // 等待BUSY位清空
}
 楼主| delamu 发表于 2013-6-20 12:15 | 显示全部楼层
void SPI_Flash_Init(void)
{
  SPI_InitTypeDef  SPI_InitStructure;
  GPIO_InitTypeDef GPIO_InitStructure;
   
  /* 使能SPI2 时钟 */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2 ,ENABLE);       
  /* 配置 SPI2 引脚: SCK, MISO 和 MOSI */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
  
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_14 ;
  GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;
//  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  GPIO_Init(GPIOB, &GPIO_InitStructure);       

  /* 配置PA4为SST25VF016B的片选  */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOB, &GPIO_InitStructure);   
//        GPIO_ResetBits(GPIOD, GPIO_Pin_8);                        //SST25置低WP引脚
//        GPIO_ResetBits(GPIOD, GPIO_Pin_9);                        //SST25置低RST引脚
//        Delay(0xffff);
//        GPIO_SetBits(GPIOD, GPIO_Pin_8);                        //SST25置高WP引脚
//        GPIO_SetBits(GPIOD, GPIO_Pin_9);                        //SST25置高RST引脚


  SPI_Cmd(SPI2, DISABLE);                                            // SPI2配置
  SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
  SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
  SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
  SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
  SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
  SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
  SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;
  SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
  SPI_InitStructure.SPI_CRCPolynomial = 7;
  SPI_Init(SPI2, &SPI_InitStructure);
  
  /* 使能SPI2  */
  SPI_Cmd(SPI2, ENABLE);   
  NotSelect_Flash();  
}
 楼主| delamu 发表于 2013-6-20 12:20 | 显示全部楼层
SST25_W_BLOCK(0, SST25_buffer,100);                                                //将测试数据写入到SST25VF016B的0页里
用的都是基于库函数的
现在是写函数不成功,读状态寄存器总是忙
问题出在哪里?怎么解决呀?
lvyunhua 发表于 2016-6-13 14:07 | 显示全部楼层
怎么没有人来解决啊。我也碰到这个问题,楼主解决了吗?
zenghuiping88 发表于 2023-4-3 10:49 来自手机 | 显示全部楼层
我也碰到这个问题,读数据全为FFH,等高师提醒
Stahan 发表于 2023-4-4 23:55 | 显示全部楼层
这应该是没读成功
失物招領 发表于 2023-4-9 18:40 | 显示全部楼层
SPI初始化这块有问题吧
将爱藏于深海 发表于 2023-4-9 19:26 | 显示全部楼层
忙检测?就是SPI忙呗?

温室雏菊 发表于 2023-4-9 22:19 | 显示全部楼层
估计初始化的时候,开启一下AFIO的时钟吧

西洲 发表于 2023-4-9 23:55 | 显示全部楼层
没遇到过,现在都是用cubemxhal了,很简单

捧一束彼岸花 发表于 2023-4-10 02:52 | 显示全部楼层
官方不是有关于SPI的操作么?你移植一下试试呢?

一只眠羊 发表于 2023-4-10 05:22 | 显示全部楼层
其实可以用demo之中的spi配置的

我吃小朋友 发表于 2023-4-10 07:23 | 显示全部楼层
一般要是SPI3才会有问题,有问题是因为NSS这部分

月亮一键变蓝 发表于 2023-4-10 09:26 | 显示全部楼层
你换个板子试试呢?感觉看程序好像也没啥问题

故意相遇 发表于 2023-4-10 11:35 | 显示全部楼层
你能读出寄存器地址之类的不?

白马过平川 发表于 2023-4-10 13:11 | 显示全部楼层
是不是SPI就没初始化正常啊?

Bowclad 发表于 2023-4-10 23:54 | 显示全部楼层
是不是spi的问题 啊
Undshing 发表于 2023-4-11 21:36 | 显示全部楼层
现在在用hal库了
hanwe 发表于 2023-7-3 23:50 | 显示全部楼层
我也碰到这个问题,读数据全为FFH
yufe 发表于 2023-7-3 23:51 | 显示全部楼层
这应该是没读成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

22

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部