历史上的今天
今天是:2024年12月21日(星期六)
2020年12月21日 | 神舟IV学习笔记(十)SPI存储W25X16
2020-12-21 来源:eefocus
SPI是英语 Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口。是 Motorola首先在其 MC68HCXX 系列处理器上定义的。SPI 接口主要应用在 EEPROM,FLASH,实时时钟,AD 转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为 PCB 的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,STM32 也有 SPI 接口。
SPI 接口一般使用 4 条线:
MISO 主设备数据输入,从设备数据输出。
MOSI 主设备数据输出,从设备数据输入。
SCLK 时钟信号,由主设备产生。
CS 从设备片选信号,由主设备控制。
SPI主要特点有:可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。SPI总线四种工作方式SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果 CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果 CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI 主模块和与之通信的外设备时钟相位和极性应该一致。
STM32 的 SPI 功能很强大,SPI 时钟最多可以到 18Mhz,支持 DMA,可以配置为 SPI 协议或者 I2S 协议。
SPI1的使用就介绍到这里,接下来介绍一下 W25X16。W25X16是华邦公司推出的继W25X10/20/40/80(从 1Mb~8Mb)后容量更大的 FLASH 产品,W25X16 的容量为 16Mb,还有容量更大的 W25X32/64,ALIENTEK 所选择的 W25X16 容量为 16Mb,也就是 2M 字节,同AT45DB161 是一样大小的。 W25X16 将 2M 的容量分为 32 个块(Block),每个块大小为 64K 字节,每个块又分为 16个扇区(Sector),每个扇区4K个字节。W25X16 的最少擦除单位为一个扇区,也就是每次必须擦除 4K 个字节。这样我们需要给 W25X16 开辟一个至少 4K 的缓存区,这样对 SRAM 要求比较高(相对于 AT45DB161 来说),但是它有价格及供货上的优势。 W25X16 的差些周期为10000 次,具有20 年的数据保存期限,支持电压为2.7~3.6V,W25X16支持标准的 SPI,还支持双输出的 SPI,最大 SPI 时钟可以到 75Mhz(双输出时相当于 150Mhz),更多的 W25X16 的介绍,请参考 W25X16 的 DATASHEET。
软件我把W25X16需要调用的函数封装到一个文件中
void W25X16_Configuration(void);
void SPI_FLASH_SectorErase(u32 SectorAddr);
void SPI_FLASH_BulkErase(void);//Erases the entire FLASH
void SPI_FLASH_PageWrite(u8* pBuffer, u32 WriteAddr, u16 NumByteToWrite);
void SPI_FLASH_BufferWrite(u8* pBuffer, u32 WriteAddr, u16 NumByteToWrite);
void SPI_FLASH_BufferRead(u8* pBuffer, u32 ReadAddr, u16 NumByteToRead);
u32 SPI_FLASH_ReadID(void);//是常量0XEF3015,可以用于判断是否存在W32X16芯片
u32 SPI_FLASH_ReadDeviceID(void);
void SPI_FLASH_StartReadSequence(u32 ReadAddr);
void SPI_Flash_PowerDown(void);
void SPI_Flash_WAKEUP(void);
我们实现写一些数据到FLASH里,再读出来看看是不是一样的,测试结果
看出能够检测到FLASH,写入一些字符串,也能读出。
史海拾趣
|
我想实现P1.1端口跟随P1.4端口同步输出,都是驱动LED,P1.4端口使用定时器定时翻转,主循环程序随时判断P1.4状态,同步驱动P1.1。 开始我是这样写的: 看来没问题,在KEIL仿真运行也没问题,可是下载到89S52中,只见OUT闪烁,LED根本不动, ...… 查看全部问答> |
|
无意在网上找到的,因此把目录整理出来,有兄弟需要的发邮件给我yulzhu@gmail.com,注明需要哪一部分,直接发怕有些问题。 混合动力有关材料 Toyota Series - Hybrid Hybrid01 Hybrid System Overview.pdf Hybrid02 Hybrid System ...… 查看全部问答> |
|
1、REMAP: 提到REMAP。首先应想到什么是MAP,英语不好,开始就断章取义,MAP就是地图嘛,Memory Map就是存储器地图,不过这个地图的参考坐标不是经纬度,而是地址,进而叫做存储器映射。由于要适应不同存储器容量要求的 ...… 查看全部问答> |
|
哪里有windows CE 5.0(platform builder 5.0)?? google了好久,都没找到windows CE 5.0下载。 不知道各位谁有这个东西,或者知道哪里有这个下载。 如果谁有的可以传给我就更好了。 请加我 QQ:46231244 谢谢… 查看全部问答> |
|
求助!!!定时器同步配置问题-一个上升沿信号触发定时器TIM2,同时根据上升沿信号启 最近在做一个RLC(电阻、电感、电容)测量仪,测量插座只有一个,因此需要利用程序区分三种不同的器件; 区分方法是利用通过三种器件后的波形超前滞后关系判别,将正弦信号转化为矩形波后输入定时器通道1。与此同时将没有经过原器件的正弦波也转化为 ...… 查看全部问答> |




