OpenEdv-开源电子网

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

求助~~SPI FLASH不能读出ID, 时钟信号也没有产生

[复制链接]

2

主题

6

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2015-8-23
在线时间
0 小时
发表于 2015-9-22 19:59:44 | 显示全部楼层 |阅读模式
5金钱
已经调试了2个多星期了,还是未能调试出百为的SPI Flash
用示波器检查过,CS信号正常,SCK, MOSI, MISO等却没有信号
求各位大神帮忙看看代码,已经基本全copy开发板的例程了,还是调试不出来
最后输出到串口的id一直是0
[mw_shl_code=c,true]/* BaiWei SPI1_FLASH(M25P80) */ #include "stm32f10x_rcc.h" #include "stm32f10x_gpio.h" #include "stm32f10x_spi.h" #include "usart.h" ErrorStatus HSEStartUpStatus; void spi1_flash_init(void) { SPI_InitTypeDef SPI_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_SetBits(GPIOB, GPIO_Pin_2); /* SPI1_Init */ 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_64; SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; SPI_InitStructure.SPI_CRCPolynomial = 7; SPI_Init(SPI1, &SPI_InitStructure); SPI_Cmd(SPI1, ENABLE); } u8 spi1_rw_byte(u8 byte_tx) { while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET); SPI_I2S_SendData(SPI1, byte_tx); while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET); return SPI_I2S_ReceiveData(SPI1); } u32 M25PXX_read_ID(void) { u32 temp1 = 0, temp2 = 0, temp3 = 0, temp = 0; GPIO_ResetBits(GPIOB, GPIO_Pin_2); spi1_rw_byte(0x9F); temp1 = spi1_rw_byte(0xA5); temp2 = spi1_rw_byte(0xA5); temp3 = spi1_rw_byte(0xA5); GPIO_SetBits(GPIOB, GPIO_Pin_2); temp = (temp1<<16) | (temp2<<8) | temp3; return temp; } void RCC_Configuration(void) { /* RCC system reset(for debug purpose) */ RCC_DeInit(); /* Enable HSE */ RCC_HSEConfig(RCC_HSE_ON); /* Wait till HSE is ready */ HSEStartUpStatus = RCC_WaitForHSEStartUp(); if (HSEStartUpStatus == SUCCESS) { /* Enable Prefetch Buffer */ FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); /* Flash 2 wait state */ FLASH_SetLatency(FLASH_Latency_2); /* HCLK = SYSCLK */ RCC_HCLKConfig(RCC_SYSCLK_Div1); /* PCLK2 = HCLK */ RCC_PCLK2Config(RCC_HCLK_Div1); /* PCLK1 = HCLK/2 */ RCC_PCLK1Config(RCC_HCLK_Div2); /* PLLCLK = 8MHz * 9 = 72 MHz */ RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); /* Enable PLL */ RCC_PLLCmd(ENABLE); /* Wait till PLL is ready */ while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) {} /* Select PLL as system clock source */ RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); /* Wait till PLL is used as system clock source */ while (RCC_GetSYSCLKSource() != 0x08) {} } } int main(void) { u32 flash_id = 0; //RCC_Configuration(); usart1_init(); spi1_flash_init(); while (1) { flash_id = M25PXX_read_ID(); printf("%x \r\n",flash_id); } } [/mw_shl_code]


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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-9-22 22:16:54 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

20

主题

138

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
346
金钱
346
注册时间
2012-10-11
在线时间
136 小时
发表于 2015-9-22 22:26:28 | 显示全部楼层
楼主你有没有打开复用功能使能:RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE) ?
回复

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2015-8-23
在线时间
0 小时
 楼主| 发表于 2015-9-23 13:44:37 | 显示全部楼层
回复【3楼】我乐意:
---------------------------------
复用不用开AFIO吧,重映射才要吧
回复

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2015-8-23
在线时间
0 小时
 楼主| 发表于 2015-9-23 13:54:02 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,我今天再调试了下
SPI1的时钟和MOSI信号正常,唯独MISO的信号好奇怪。。。
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2014-11-24
在线时间
0 小时
发表于 2015-11-3 10:20:20 | 显示全部楼层
回复【5楼】Hanson:
---------------------------------
我想问你的问题解决了吗,我现在也是这个情况
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 16:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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