资源简介
51MCU读写W25X16 W25Q16
代码片段和文件信息
#include “stm32f10x_lib.h“
#include “UserHead.h“
#include “W25Q16.h“
/**********************************************************
** function name : FlashInterfaceInit
** description : config SPI1
** input parameter: none
** return : none
***********************************************************/
void FlashInterfaceInit(void)
{
SPI_InitTypeDef SPI_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
//Enable SPI1 and GPIOA clocks
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1|RCC_APB2Periph_GPIOA ENABLE);
/*Configure SPI2 pins: NSS SCK MISO and MOSI */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA &GPIO_InitStructure);
//Configure SPI1 pins: NSS SCK MISO and MOSI
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; // Configure PA4 as Output push-pull used as sst25vf16 Chip select
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA &GPIO_InitStructure);
Flash_CS_1; //Chip DeSelect
//SPI1 configuration
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_16; //8分频,如果是36MHz时钟,则SPI串行时钟的频率是4.5MHz
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI1 &SPI_InitStructure);
SPI_Cmd(SPI1 ENABLE); // Enable SPI1
// EWSR();
// WRSR(0);
// WRDI();
}
/*****************************************************************
** function name : SPISendByte
** description : SPI1 send one byte
** input parameter: byte to be sent
** return : byte received
******************************************************************/
uint8 SPISendByte(uint8 cData)
{
while ((SPI1->SR & SPI_I2S_FLAG_TXE) == RESET);
while ((SPI1->SR & SPI_I2S_FLAG_BSY) == SET);
SPI1->DR = cData;
while((SPI1->SR & SPI_I2S_FLAG_RXNE) == RESET);
while((SPI1->SR & SPI_I2S_FLAG_BSY) == SET);
return SPI1->DR;
}
/*****************************************************************
** function name : SPIReceiveByte
** description : SPI1 receive byte
** input parameter: none
** return : byte received
******************************************************************/
uint8 SPIReceiveByte(void)
{
//uint8 i;
//i=SPI1->DR;
while((SPI1->SR & SPI_I2S_FLAG_TXE) == RESET);
while((SPI1->SR & S
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 7752 2010-09-04 10:29 W25Q16\W25Q16.c
文件 932 2010-09-04 10:29 W25Q16\W25Q16.h
目录 0 2010-12-14 17:37 W25Q16
----------- --------- ---------- ----- ----
8684 3
相关资源
- 基于51单片机的ADC0832数字电压表仿真
- 基于51单片机的ADC0808 数字电压表
- MCP2515源程序
- pxi6251手册
- [单片机课设]秒表时钟计时器的设计
- 基于51单片机Max7219驱动8×8点阵PROTEU
- 数字电压表的电路图(仿真).DSN
- 指纹锁(门禁应用).rar
- 基于protues仿真的数字电子秤
- org.eclipse.text_3.5.300.v20130515-1451
- 基于51单片机的人体心率采集
- 51单片机Protues仿真舵机,可以通过按
- 51单片机的bootloader实现方法
- 51单片机KEIL C I2C通信程序。
- 电子发票系统数据规范-51发票全国平
- 51CTO-DDOS.傀儡僵尸.rar
- 51单片机及常用芯片手册大全
- 基于89C51的全自动洗衣机控制器Prote
- 解决VS2012未找到与约束更新程序patc
- sht75温度传感-c51代码
- srec_cat.exe
- 20151125招商更新版.rar
- 基于51单片机的数字电子琴
- 基于MCS—51单片机的电子时钟设计
- MCS-51单片机指令系统与汇编语言程序
- 新西达电调 hw30a 51单片机驱动无刷电
- cisco ASA5510配置
- 基于AT89S51利用MAX485半双工串行口通讯
- RN8302B智能电表芯片程序基于STC12系列
- 单片机交通灯C51课程设计
评论
共有 条评论